gpt4 book ai didi

c# - 使用 web.config 授权元素时未触发 OWIN 质询

转载 作者:行者123 更新时间:2023-11-30 20:36:07 25 4
gpt4 key购买 nike

我正在将 Web 表单应用程序从表单例份验证迁移到 OpenID Connect(使用 OWIN 和 IdentityServer3)。该应用程序在 web.config 中已经有很多“授权”元素(用于不同的位置),我想在迁移到 OWIN 后重新使用这些元素。

<authorization>
<deny users="?" />
</authorization>
<location path="Path/Page.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
...

问题是,在我切换到 OWIN 而不是被重定向到登录页面后,我得到了 401(未授权)。

目前将用户重定向到登录页面的唯一方法是在 Page_Load 事件中手动进行挑战:

if (!Request.IsAuthenticated)
{
HttpContext.Current.GetOwinContext().Authentication.Challenge();
}

这就是我的 Startup.Auth 的样子:

public void ConfigureAuth(IAppBuilder app)
{
//reset the mapping dictionary to ensure the claims are not mapped to .NET standard claims
JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "ApplicationCookie",
AuthenticationMode = AuthenticationMode.Active
});

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = "id",
Authority = IdentityConstants.BaseAddress,
RedirectUri = "uri",
ResponseType = "code id_token token",
SignInAsAuthenticationType = "ApplicationCookie",
Scope = "openid profile email roles offline_access",
...
}
...

有没有办法利用 Web 配置中现有的授权元素,这样我就不必在代码中再次进行这些检查?

最佳答案

在app.UseOpenIdConnectAuthentication之后添加如下代码:

app.UseStageMarker(PipelineStage.Authenticate);

这将指示 Owin 在集成管道中运行。

关于c# - 使用 web.config 授权元素时未触发 OWIN 质询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37295183/

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