Azure OpenID通过OWIN中间件连接,产生无限重定向循环

pur*_*uri 10 openid asp.net-mvc azure oauth-2.0 owin

我使用OWIN Middleware在我的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="*********" />
Run Code Online (Sandbox Code Playgroud)

我的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}
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

不确定是什么导致这种情况不断重定向.我已经[Authorize]在MVC控制器上放置了一个属性,其中Post Authentication Redirect Url.

Bre*_*ltz 1

这里发生的事情与 JuneT 注意到的有关。这与 CookieAuthenticationOptions.CookieSecure == CookieSecureOption.SameAsRequest 的默认值有关。由于您从 http 开始,因此最终重定向到 http。创建“authcookie”的请求是来自 AAD 的 https。

我可以通过设置 CookieSecure == CookieSecureOption.Always 来实现此功能。这意味着 cookie 可能会与您的身份验证一起泄漏。

是否必须有一种方法来确保仅进行身份验证的页面接受 https 上的连接。