Запрос авторизации OpenIddict не обработан - PullRequest
1 голос
/ 10 января 2020

Я пробую OpenIddict 3.0 для использования в приложении единого входа. Я выполнил действия, описанные в документации, создал контроллер 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 .

1 Ответ

0 голосов
/ 10 января 2020

Для обработки запросов авторизации в контроллере MVC вы должны указать ASP. NET базовому хосту OpenIddict использовать режим сквозного доступа, точно так же, как вы делали для конечной точки токена:

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