未处理OpenIddict授权请求

时间:2020-01-09 23:28:23

标签: c# asp.net-core openid-connect openiddict

我正在尝试OpenIddict 3.0在SSO应用中使用。我按照文档中的步骤进行操作,创建了一个Authorize控制器,并添加了一个测试应用程序。当我尝试连接以进行授权时,出现此异常:

System.InvalidOperationException:未处理授权请求。要处理授权请求,请创建一个实现“ IOpenIddictServerHandler”的类,然后使用“ services.AddOpenIddict()。AddServer()。AddEventHandler()”对其进行注册。
或者,启用直通模式以在以后处理它们。

我在文档或示例应用程序中找不到任何能解释其含义的内容。我想念什么?


到目前为止,这是我的代码。在Startup.cs中:

services.AddOpenIddict()
    .AddCore(o =>
    {
        o.UseEntityFrameworkCore().UseDbContext<ApplicationDbContext>();
    })
    .AddServer(o =>
    {
        o.SetTokenEndpointUris("/connect/token");
        o.SetAuthorizationEndpointUris("/connect/authorize");

        o.AllowAuthorizationCodeFlow();

        o.RegisterScopes(OpenIddictConstants.Scopes.Email);

        o.AcceptAnonymousClients();
        o.AddDevelopmentEncryptionCertificate()
            .AddDevelopmentSigningCertificate();
        o.UseAspNetCore()
            .EnableTokenEndpointPassthrough()
            .DisableTransportSecurityRequirement();
    })
    .AddValidation(o =>
    {
        o.UseLocalServer();
        o.UseAspNetCore();
    });

并测试应用说明:

var descriptor = new OpenIddictApplicationDescriptor
{
    ClientId = "test-app",
    DisplayName = "Test Application",
    PostLogoutRedirectUris = { new Uri("https://oidcdebugger.com/debug") },
    RedirectUris = { new Uri("https://oidcdebugger.com/debug") }
};

我正在测试OpenID Connect debugger

1 个答案:

答案 0 :(得分:0)

要在MVC控制器中处理授权请求,必须告诉OpenIddict的ASP.NET Core主机使用直通模式,就像对令牌终结点所做的操作一样:

services.AddOpenIddict()
    .AddServer(options =>
    {
        options.UseAspNetCore()
               .EnableAuthorizationEndpointPassthrough() // Add this line.
               .EnableTokenEndpointPassthrough()
               .DisableTransportSecurityRequirement();
    });