我正在使用以下代码示例将Azure AD登录插入我的应用程序(https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet)。
我发现代码工作得很好,但是如果用户尚未登录或会话已过期,我希望能够将用户重定向到自定义登录页面。然而,我正在努力让它发挥作用,并且想知道这是否确实可行?
是否按设计将用户始终重定向到Azure AD的Microsoft登录页面而不是您自己的自定义页面,或者是否存在我错过的设置?
我修改了FilterConfig.cs
中提供的代码以启用授权过滤器属性:
filters.Add(new AuthorizeAttribute());
我还将以下内容添加到web.config
但不起作用:
<authorization>
<allow users="?" />
</authorization>
在Startup.Auth.cs
文件中,我看不到app.UseOpenIdConnectAuthentication
允许我设置通用登录页面的任何更改,因为我可能会使用基于cookie的身份验证。
答案 0 :(得分:10)
在重新编写代码之后,我找到了解决问题的方法。
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
});
包含似乎阻止OpenIdConnectAuth执行自动302重定向到AAD登录页面的AuthenticationMode = AuthenticationMode.Passive
行。
答案 1 :(得分:0)
假设Azure AD是您的身份提供商,您可以Customize the login page,但您必须运行Azure AD Premium才能执行此操作。
答案 2 :(得分:0)
这也许就是我要找的......
此示例允许用户登录Azure AD,而无需使用Azure AD的基于本机浏览器的登录。
我理解这有点被认为是一种反模式,因为我将放弃Azure内置的处理多因素身份验证,密码重置等机制,但我将保留对该体验的完全控制。
====编辑==== 这不是我想要的方式,因为我将剥离AAD提供的很多东西。从本质上讲,我想保留AAD的控制流程,但我只想控制用户未登录时用户登录的页面。
目前的流程是: 未经授权 - &gt; 302重定向 - &gt; AAD登录
我想: 未经授权 - &gt; 302重定向 - &gt;自托管登录所需页面 - &gt;用户登录按钮按 - &gt; 302重定向 - &gt; AAD登录
这个流程似乎无法解决。