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

时间:2014-10-22 22:05:45

标签: c# active-directory asp.net-identity owin azure-active-directory

我正在使用以下代码示例将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的身份验证。

3 个答案:

答案 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登录

这个流程似乎无法解决。