Identity Server 4 - отмените перенаправление на логин и вместо этого верните 401 - PullRequest
0 голосов
/ 15 октября 2018

У меня было веб-приложение ASP.NET Core 2 без Identity Server, где я настроил автоматический вызов неаутентифицированных HTTP-запросов, чтобы не перенаправлять пользователя на страницу входа и вместо этого просто возвращать 401:

services.ConfigureApplicationCookie(config =>
        {
            config.Events.OnRedirectToLogin = ctx =>
            {
                ctx.Response.StatusCode = (int)System.Net.HttpStatusCode.Unauthorized;
                return Task.CompletedTask;
            };
        });

Как я могу добиться того же с интеграцией Identity Server 4?Я попытался использовать тот же код в методе конфигурации AddOpenIdConnect :

.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
    options.Events.OnRedirectToIdentityProvider = ctx =>
    {
        ctx.Response.StatusCode = (int)System.Net.HttpStatusCode.Unauthorized;
        return Task.CompletedTask;
    };
    [...]
})

Хотя он не работает, сервер все равно возвращает 302 ...

1 Ответ

0 голосов
/ 26 февраля 2019

Слишком поздно, я думаю, но следование сработало для меня.если у кого-то есть похожая проблема. (context.HandleResponse (); важно в случае OP)

options.Events.OnRedirectToIdentityProvider = context =>
                 {
                     if (context.Request.Path.StartsWithSegments("/api"))
                     {
                         if (context.Response.StatusCode == (int)HttpStatusCode.OK)
                         {
                             context.ProtocolMessage.State = options.StateDataFormat.Protect(context.Properties);
                             context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                             context.Response.Headers["Location"] = context.ProtocolMessage.CreateAuthenticationRequestUrl();
                         }
                         context.HandleResponse();
                     }
                     return Task.CompletedTask;
                 };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...