使用Azure AD时将用户重定向到自定义登录页
本文关键字:自定义 登录 重定向 用户 Azure AD 使用 | 更新日期: 2023-09-27 18:27:33
我正在使用以下代码示例插入Azure AD登录到我的应用程序(https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet)。
我发现代码运行得很好,但如果用户尚未登录或会话已过期,我希望能够将用户重定向到自定义登录页面。然而,我正在努力让它发挥作用,我想知道这是否真的有可能?
是故意将用户重定向到Azure AD的Microsoft登录页面,而不是您自己的自定义页面,还是我错过了某个设置?
我已经修改了FilterConfig.cs
中提供的代码,以启用Authorize筛选器属性:
filters.Add(new AuthorizeAttribute());
我还在web.config
中添加了以下内容,但没有效果:
<authorization>
<allow users="?" />
</authorization>
在Startup.Auth.cs
文件中,我看不到任何可能对app.UseOpenIdConnectAuthentication
进行的更改,以允许我设置通用登录页面,就像我可能使用基于cookie的身份验证一样。
在对代码进行了一些重新检查之后,我找到了问题的解决方案。
Startup.Auth.cs
:内
app.UseCookieAuthentication(new CookieAuthenticationOptions {
LoginPath = new PathString("/Account/Login")
});
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions {
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
AuthenticationMode = AuthenticationMode.Passive
});
它包含了AuthenticationMode = AuthenticationMode.Passive
行,这似乎阻止了OpenIdConnectAuth执行到AAD登录页面的自动302重定向。
假设Azure AD是您的身份提供商,您可以自定义登录页面,但您必须运行Azure AD Premium才能自定义。
这可能是我想要的。。。
- 本地客户端中的非交互式身份验证(https://github.com/AzureADSamples/NativeClient-Headless-DotNet)
此示例允许用户登录Azure AD,而无需使用Azure AD的基于浏览器的本机登录。
我知道这在某种程度上被认为是一种反模式,因为我将放弃Azure的内置机制来处理多因素身份验证、密码重置等,但我将保留对体验的完全控制。
===编辑====这不是我想走的路,因为我会去掉AAD提供的很多现成的东西。从本质上讲,我想保留AAD的控制流,但我只想有能力在用户未登录时控制用户登录的页面
目前的流程是:未授权->302重定向->AAD登录
我想要:未授权->302重定向->需要自助登录页面->用户登录按钮按下->302重定向->AAD登录
这就是我似乎无法理解的流程。