gpt4 book ai didi

c# - Azure AD Open ID Connect OAuth 2.0 in ASP.NET Web APP and Web API 无限重定向循环

转载 作者:行者123 更新时间:2023-12-04 14:15:13 24 4
gpt4 key购买 nike

ASP.NET Web 应用程序可从任何 Azure Active Directory (Azure AD) 实例登录个人帐户以及工作和学校帐户。

OWIN 中间件 NuGet 包

Install-Package Microsoft.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb

OWIN 创业类 OWIN 中间件使用在托管进程初始化时运行的启动类。在本快速入门中,startup.cs 文件位于根文件夹中。以下代码显示了本快速入门使用的参数

public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
// Sets the ClientId, authority, RedirectUri as obtained from web.config
ClientId = clientId,
Authority = authority,
RedirectUri = redirectUri,
// PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it is using the home page
PostLogoutRedirectUri = redirectUri,
Scope = OpenIdConnectScope.OpenIdProfile,
// ResponseType is set to request the id_token - which contains basic information about the signed-in user
ResponseType = OpenIdConnectResponseType.IdToken,
// ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
// To only allow users from a single organizations, set ValidateIssuer to true and 'tenant' setting in web.config to the tenant name
// To allow users from only a list of specific organizations, set ValidateIssuer to true and use ValidIssuers parameter
TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = false // Simplification (see note below)
},
// OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to OnAuthenticationFailed method
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = OnAuthenticationFailed
}
}
);
}

ASP.NET MVC/Web API

//You can force a user to sign in by requesting an authentication challenge in your controller:
public void SignIn()
{
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties{ RedirectUri = "/" },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
}

ASP.NET Web 表单:

 protected void Login_click(object sender, EventArgs e)
{
if (!Request.IsAuthenticated)
{
HttpContext.Current.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties { RedirectUri = "/" },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
}

最佳答案

该问题已在 ASP.NET core 和新版本的 Katana Owin for ASP.NET 中得到修复。要解决此问题,您可以升级应用程序以使用 ASP.NET Core。如果您必须继续留在 ASP.NET,请执行以下操作:

将应用程序的 Microsoft.Owin.Host.SystemWeb 包更新为至少版本 3.1.0.0 并且修改您的代码以使用新的 cookie 管理器类之一,例如如下所示:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{
AuthenticationType = "Cookies",
CookieManager = new Microsoft.Owin.Host.SystemWeb.SystemWebChunkingCookieManager()
});

关于c# - Azure AD Open ID Connect OAuth 2.0 in ASP.NET Web APP and Web API 无限重定向循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60892088/

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