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