小编use*_*523的帖子

OWIN OpenID 连接客户端陷入重定向循环

我有应用程序“A”和一个代码最少的测试应用程序“B”,它们使用 OWIN 启动文件指向我们的身份服务器(Thinktecture)。这在两个启动文件中:

public void Configuration(IAppBuilder app)
    {
        JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, string>();
        var identityServerUri = System.Configuration.ConfigurationManager.AppSettings["IdentityServerUrl"].ToString();
        var redirectUri = System.Configuration.ConfigurationManager.AppSettings["RedirectUri"].ToString();
        var postLogoutRedirectUri = System.Configuration.ConfigurationManager.AppSettings["PostLogoutRedirectUri"].ToString();

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = "Cookies",
            ExpireTimeSpan = TimeSpan.FromMinutes(120),
            SlidingExpiration = true
        });
        app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
        {
            ClientId = "myclientid",
            Authority = identityServerUri,
            RedirectUri = redirectUri,
            PostLogoutRedirectUri = postLogoutRedirectUri,
            ResponseType = "id_token",
            Scope = "openid profile email",
            UseTokenLifetime = false,
            SignInAsAuthenticationType = "Cookies"
        });
    }
Run Code Online (Sandbox Code Playgroud)

如果每次清除 cookie 后只是我在多台不同的机器上尝试,这两个应用程序都可以长时间进行身份验证和登录。当其他人开始尝试登录时,它可能会继续工作,但最终每个人都会开始陷入重定向循环,在那里您会获得身份服务器登录页面,点击登录,然后像往常一样返回应用程序,但是应用程序根本不运行任何代码(Home/Index 是第一个调用的东西,它永远不会在我设置日志记录的地方到达那里)它只是重定向回身份服务器,身份服务器检查并查看它们是否被记录in 并将它们重定向回来,直到最终标头响应变得太大并引发错误的请求错误。这一点,

  1. 浏览我为测试目的创建的最小应用程序“B”。除了使用身份服务器进行身份验证之外什么都不做,但之后我可以浏览到应用程序“A”而不会陷入循环。
  2. 在 IIS 中重新启动网站。

在重定向问题后清除 cookie …

asp.net owin openid-connect identityserver4

8
推荐指数
0
解决办法
1452
查看次数

标签 统计

asp.net ×1

identityserver4 ×1

openid-connect ×1

owin ×1