gpt4 book ai didi

c# - 在 Owin 中间件中设置挑战

转载 作者:行者123 更新时间:2023-11-30 17:43:03 24 4
gpt4 key购买 nike

Owin 中间件实现在添加质询之前查找自己的身份验证类型,因此只有合适的中间件才会响应。可以同时使用多个挑战。

protected override Task ApplyResponseChallengeAsync()
{
if (Response.StatusCode == 401)
{
var challenge = Helper.LookupChallenge(Options.AuthenticationType, Options.AuthenticationMode);

if (challenge != null)
{
Response.Headers.AppendValues("WWW-Authenticate", _challenge);
}
}

return Task.FromResult<object>(null);
}

当使用内置的 Cookie 或 Bearer 中间件时,“Bearer”类型始终存在并被查找。

我应该在哪里添加我自己的全局挑战类型以便查找?这可以通过调用在请求上下文中手动完成

Request.GetOwinContext().Authentication.Challenge("Basic");

但我想为所有 Controller 添加一个全局配置。

最佳答案

您可以使用 AuthenticationManager.Challenge() 方法设置 AuthenticationResponseChallenge。例如,在你的 startup.cs 中,你可以有类似 context.Authentication.Challenge(new AuthenticationProperties(), Options.AuthenticationType) 的东西,这样对应于 Options.AuthenticationType 的中间件就会得到这个抬头挑战。

事件中间件将尝试处理所有传出的挑战,而不管其 AuthenticationType。通常,只有 cookie 中间件设置为主动,所有其他中间件都是被动的。对于响应挑战的被动中间件,挑战应该具有匹配的 AuthenticationType。

关于c# - 在 Owin 中间件中设置挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31427066/

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