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" },
然后,成功了。
尝试使用 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" },
然后,成功了。