使用 OpenID 进行身份验证时如何避免在多个域中自动登录



我们想应用 AzureAD 来验证网站。目前,该项目有 2 个不同的领域,一个用于开发,一个用于生产。

例如:

  • production.azurewebsites.net
  • develop.azurewebsites.net

问题是,每当我们登录开发域 (develop.azurewebsites.net( 时,它也会以我们在开发域中登录的同一用户的身份自动登录到生产环境 (production.azurewebsites.net(。

问题:- 我们如何告诉系统要求用户为他们尝试登录的每个域选择一次登录帐户?因为我们不想偶然登录到生产环境

感谢您的帮助!

services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.Configure<CookieAuthenticationOptions>(AzureADDefaults.CookieScheme, options =>
{
options.Cookie.SameSite = SameSiteMode.None;
});
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultAuthenticateScheme = AzureADDefaults.AuthenticationScheme;
})
.AddAzureAD(options => Configuration.Bind("AzureAd", options))
.AddCookie(options =>
{
options.LoginPath = "/Login/SignIn";
options.LogoutPath = "/Login/SignIn";
}); 
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority = options.Authority + "/v2.0/";
options.Events.OnSignedOutCallbackRedirect = (context) =>
{
context.Response.Redirect("/Login/SignIn");
context.HandleResponse();
return Task.CompletedTask;
};
});

我不明白为什么这应该是一个问题。归根结底,这是SSO的非常典型的例子。更改此行为可能会对最终用户体验产生负面影响(ypu 帮助开发人员,但会伤害最终用户,因为他们会被提示(。

更改此设置的方法是在设置颁发机构后立即更改 OpenIdConnectOptions 对象的提示属性。危害最小的值是select_account.这将引入 SSO 过程的中断,因此用户必须选择一个帐户才能登录。

相关内容

最新更新