Identity Server 4 和注销时自动重定向

Identity Server 4 and auto redirect on sign out

尝试使用 PluralSight 的演示项目,我试图在注销时将 IDP 重定向回服务器应用程序。

PostLogOutRedirectUris在IDP级别的客户端配置中定义,但似乎没有任何效果。

public static IEnumerable<Client> Clients =>
    new Client[]
    { 
        new Client
        {
            ClientId = "bethanyspieshophr",
            ClientName = "Bethany's Pie Shop HRM",
            AllowOfflineAccess = true,
            AccessTokenLifetime = 120,
            RequireConsent = false,
            RequirePkce = true,
            AllowedGrantTypes = GrantTypes.Code,
            ClientSecrets = { 
                new Secret("108B7B4F-BEFC-4DD2-82E1-7F025F0F75D0".Sha256()) },
            RedirectUris = { "https://localhost:44301/signin-oidc" },
            PostLogoutRedirectUris = { "https://localhost:44301/signout-oidc" },
            AllowedScopes = { "openid", "profile", "email", "bethanyspieshophrapi" }
        }             
    };

如果我在运行时手动设置 LoggedOutViewModel,它会按预期工作。

您如何执行注销请求?请记住,客户端设置中的值只是在注销请求期间验证的注册值。用户不会自动重定向到 postLogoutRedirectUri。您必须将 post_logout_redirect_uri 参数传递给结束会话端点,并且此参数必须与 PostLogoutRedirectUris 设置中的值匹配。要使用此功能,您还应该在 id_token_hint 参数中 post 一个有效的 ID 令牌,以便服务器知道哪个客户端正在请求注销。

您可以查看end session enpoint docs了解详情。

这个问题仅仅是因为打字错误,这让我陷入了困境。

  PostLogoutRedirectUris = { "https://localhost:44301/signout-oidc" },

应该是

  PostLogoutRedirectUris = { "https://localhost:44301/signout-callback-oidc" },

然后,成功了。