gpt4 book ai didi

asp.net-core - 在 ASP.NET Core 中重新挑战经过身份验证的用户

转载 作者:行者123 更新时间:2023-12-04 08:47:55 25 4
gpt4 key购买 nike

我在 ASP.NET Core 中遇到了身份验证管道的一些问题。我的方案是我想向已使用 OpenID Connect 和 Azure AD 进行身份验证的用户发出质询。在多种情况下您都希望这样做,例如在 AAD v2 端点方案中请求其他范围时。

这在 ASP.NET MVC 中很有效,但在 ASP.NET Core MVC 中,用户被重定向到 cookie 身份验证中间件中配置的拒绝访问页面。 (当用户未登录时,发出质询会按预期工作。)

在网上搜索了几个小时并为我的中间件选项尝试了不同的参数后,我开始怀疑我是否遗漏了一些明显的东西,或者这种行为是设计使然,我需要以其他方式解决我的需求。有人对此有任何想法吗?

编辑:我的 Startup.cs 的相关部分如下所示:

    public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();

services.AddAuthentication(
SharedOptions => SharedOptions.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme);
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// <snip...>

app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationScheme = CookieAuthenticationDefaults.AuthenticationScheme });

var options = new OpenIdConnectOptions
{
AuthenticationScheme = OpenIdConnectDefaults.AuthenticationScheme,
ClientId = ClientId,
Authority = Authority,
CallbackPath = Configuration["Authentication:AzureAd:CallbackPath"],
ResponseType = OpenIdConnectResponseType.CodeIdToken,
PostLogoutRedirectUri = "https://localhost:44374/",
TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuer = false
}
};
options.Scope.Add("email");
options.Scope.Add("offline_access");

app.UseOpenIdConnectAuthentication(options);
}

操作如下所示:

    public void RefreshSession()
{
HttpContext.Authentication.ChallengeAsync(OpenIdConnectDefaults.AuthenticationScheme, new AuthenticationProperties { RedirectUri = "/" });
}

最佳答案

我在这里找到了一个提示和解决方案:https://github.com/aspnet/Security/issues/912 .
ChallengeBehavior.Unauthorized 是“关键”。

这篇文章给出了当前(2016 年 11 月 - ASPNet 1.0.1)的解决方法:https://joonasw.net/view/azure-ad-b2c-with-aspnet-core

您需要一个新的 ActionResult 才能使用 ChallengeBehavior.Unauthorized 行为调用 AuthauticationManager.ChallengeAsync。

一旦问题https://github.com/aspnet/Mvc/issues/5187将成功关闭,这应该被整合。

我对其进行了测试,效果很好(我的目标只是在每个用户的基础上扩展 Google 范围)。

关于asp.net-core - 在 ASP.NET Core 中重新挑战经过身份验证的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39344921/

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