gpt4 book ai didi

redirect - Identity Server 4 - 取消重定向到登录并返回 401

转载 作者:行者123 更新时间:2023-12-05 02:14:59 25 4
gpt4 key购买 nike

我有一个 ASP.NET Core 2 Web 应用没有身份服务器,我在其中配置了未经身份验证的 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...

最佳答案

我想为时已晚,但以下对我有用。如果有人有类似的问题。 (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;
};

关于redirect - Identity Server 4 - 取消重定向到登录并返回 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52812903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com