使用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才能执行此操作。

这也许就是我要找的……

此示例允许用户登录Azure AD,而无需使用Azure AD的基于本机浏览器的登录。

我理解这有点被认为是一种反模式,因为我将放弃Azure内置的处理多因素身份validation,密码重置等机制,但我将保留对该体验的完全控制。

====编辑====这不是我想去的方式,因为我将剥离AAD提供的很多东西。 从本质上讲,我想保留AAD的控制流程,但我只想让用户能够控制用户未登录时用户登陆的页面。

目前流程为:未授权 – > 302重定向 – > AAD登录

我想:未授权 – > 302重定向 – >自托管登录需要页面 – >用户登录按钮按 – > 302重定向 – > AAD登录

它的这种流动我似乎无法解决。