【发布时间】:2015-02-16 00:00:30
【问题描述】:
我已经使用 OWIN 中间件在我的 ASP.NET MVC 应用程序中设置了 OpenID Connect 身份验证。
正如此 Fiddler 输出所示,一旦通过 Azure OpenID Connect 成功登录,浏览器就会不断地在我的 site.azurewebsites.net 和 login.windows.net 之间来回循环。
我已确保以下键与 Azure AD 信息正确匹配
<add key="ida:AADInstance" value="https://login.windows.net/{0}" />
<add key="ida:Tenant" value="******.onmicrosoft.com" />
<add key="ida:ClientId" value="*******" />
<add key="ida:PostLogoutRedirectUri" value="*********" />
而我的Start.cs代码如下
private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
private static string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"];
private static string tenant = ConfigurationManager.AppSettings["ida:Tenant"];
private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];
private string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
IAuthorizationService authorizationService = new AuthorizationService();
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
ExpireTimeSpan =TimeSpan.FromMinutes(15)
});
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri}
});
}
}
不确定是什么导致它不断重定向。我在 MVC 控制器上放置了一个 [Authorize] 属性,该控制器是 Post Authentication Redirect Url 所在的位置。
【问题讨论】:
-
您最初是否仅通过 http 访问该网站?不是https?我有同样的情况,如果我只用 http 访问网站,我会被重定向到登录,获得身份验证,重定向回来并最终进入一个循环。最终强制使用 https。
-
一切都通过 HTTPS 访问。
-
您找到解决问题的方法了吗?我有一个类似的问题。下面的答案没有帮助。
-
没有找到解决方案,因此最终放弃了 Open ID Connect。我现在使用 ASP.NET Identity 对 Azure AD 进行身份验证。看看这个rickrainey.com/2014/08/19/…
标签: asp.net-mvc azure oauth-2.0 openid owin