使用Azure AD时,将用户重定向到自定义登录页面

cho*_*s79 6 c# active-directory owin asp.net-identity azure-active-directory

我正在使用以下代码示例将Azure AD登录插入我的应用程序(https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet).

我发现代码工作得很好,但是如果用户还没有登录或者他们的会话已经过期,我希望能够将用户重定向到自定义登录页面.然而,我正在努力让这个工作,并想知道这是否确实可行?

是否通过设计将用户始终重定向到Azure AD的Microsoft登录页面而不是您自己的自定义页面,或者是否有我错过的设置?

我修改了提供的代码FilterConfig.cs以启用Authorize过滤器属性:

filters.Add(new AuthorizeAttribute());
Run Code Online (Sandbox Code Playgroud)

我还添加了以下内容web.config但没有效果:

<authorization>
<allow users="?" />
</authorization>
Run Code Online (Sandbox Code Playgroud)

Startup.Auth.cs文件中,我看不到任何可能app.UseOpenIdConnectAuthentication允许我设置通用登录页面的更改,因为我可能使用基于cookie的身份验证.

cho*_*s79 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
});
Run Code Online (Sandbox Code Playgroud)

这是包含AuthenticationMode = AuthenticationMode.Passive似乎阻止OpenIdConnectAuth执行自动302重定向到AAD登录页面的行.