Open Closed

Support question 6452 #6622


User avatar
0
rogercprops created

I submitted a question 6452.

Mailiming gave us something to try. I asked that the question not be closed because we had not had a chance to test out the solution. Now that we have and it doesn't work we need a different solution.

I don't want this to be charged against our annual support question total since I specifically asked that it not be closed.

Thank you


3 Answer(s)
  • User Avatar
    0
    fordz created

    hi,

    So I was able to get to your suggestions in ticket #6452 and ran into an issue with overriding the connect/token endpoint of the TokenController to output a log to show the tenant.

    To recap... the initial issue we are trying to solve is: "We're using the microservice template and using the auth-server app for authentication. The auth-server application has been slightly modified for custom branding. We have a .net API to get a token using the IdentityModel.Client. When I call the API using Postman that's pointing to the auth-server running on localhost via Tye I'm able to successfully get a token. When I call the API pointing to the auth-server running in Azure Kubernetes I get an invalid username and password error. The code is the exact same. The database is the same and the credentials are the exact same."

    I'm getting a duplicate route error and am not quite sure how to get around it 'to override the HandlePasswordAysnc method of TokenController' as suggested to inspect the Tenant.Name. I cannot change the route of 'connect/token' as it is set by OAuth.

    MyTokenController in AuthServer

    using System; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using OpenIddict.Abstractions; using Volo.Abp.OpenIddict.Controllers; using Volo.Abp.OpenIddict.ExtensionGrantTypes;

    namespace CprOnAbp.AuthServer{ [Route("connect/token")] [IgnoreAntiforgeryToken] public class MyTokenController : TokenController {

        public MyTokenController()
        {
        }
    
        [HttpGet, HttpPost, Produces("application/json")]
        public override async Task<IActionResult> HandleAsync()
        {
            var request = await GetOpenIddictServerRequestAsync(HttpContext);
    
            if (request.IsPasswordGrantType())
            {
                var tenant = await TenantConfigurationProvider.GetAsync(saveResolveResult: false);
                Console.WriteLine($"Tenant Name: {tenant.Name}");
    
                // Call the base implementation if needed
                return await base.HandlePasswordAsync(request);
                //return await HandlePasswordAsync(request); // Call the overridden HandlePasswordAsync method
            }
    
            // Add other grant type handling here as needed
    
            return await base.HandleAsync();
        }
    
        // Override the HandlePasswordAsync method
        //protected override async Task<IActionResult> HandlePasswordAsync(OpenIddictRequest request)
        //{
        //    // Your custom implementation goes here
        //    var tenant = await TenantConfigurationProvider.GetAsync(saveResolveResult: false);
        //    Console.WriteLine($"Tenant Name: {tenant.Name}");
    
        //    // Call the base implementation if needed
        //    return await base.HandlePasswordAsync(request);
        //}
    }
    

    }

    Here is the returned error.

    [12:06:20 ERR] An unhandled exception has occurred while executing the request. Microsoft.AspNetCore.Routing.Matching.AmbiguousMatchException: The request matched multiple endpoints. Matches: CprOnAbp.AuthServer.MyTokenController.HandleAsync (CprOnAbp.AuthServer) Volo.Abp.OpenIddict.Controllers.TokenController.HandleAsync (Volo.Abp.OpenIddict.AspNetCore) at Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.ReportAmbiguity(CandidateState[] candidateState) at Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.ProcessFinalCandidates(HttpContext httpContext, CandidateState[] candidateState) at Microsoft.AspNetCore.Routing.Matching.DfaMatcher.MatchAsync(HttpContext httpContext) at Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext) at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context) at Volo.Abp.AspNetCore.Security.AbpSecurityHeadersMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<&lt;UseMiddlewareInterface>b__1>d.MoveNext() --- End of stack trace from previous location --- at Volo.Abp.AspNetCore.Tracing.AbpCorrelationIdMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<&lt;UseMiddlewareInterface>b__1>d.MoveNext() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.RequestLocalization.AbpRequestLocalizationMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<&lt;UseMiddlewareInterface>b__1>d.MoveNext() --- End of stack trace from previous location --- at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context) [12:06:20 INF] Request finished HTTP/1.1 POST https://localhost:44322/connect/token application/x-[[[[www-form-urlencoded 387](http://www-form-urlencoded](http://www-form-urlencoded](http://www-form-urlencoded](http://www-form-urlencoded 387](http://www-form-urlencoded](http://www-form-urlencoded](http://www-form-urlencoded) 387](http://www-form-urlencoded](http://www-form-urlencoded](http://www-form-urlencoded)) 387](http://www-form-urlencoded) 387) - 500 - text/plain;+charset=utf-8 251.5204ms

    I've shared our 2 projects that are needed to recreate this issue with Maliming. Auth-Server and oauth-api

    Thanks for your help.

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi rogercprops

    I refunded your ticket credits.

  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi @fordz

    Please create a new question.

    Thanks.

Made with ❤️ on ABP v8.2.0-preview Updated on March 25, 2024, 15:11