首页 > 解决方案 > ADFS 2016:注销后无法重定向到登录页面

问题描述

我正在使用 OpenID Connect 和 OAuth 2.0 直接针对 AD FS 4.0 对用户进行身份验证和授权。我将我的 Angular + ASP.NET Core 应用程序作为 Native 和 Wep API 应用程序添加到应用程序组,并提供了 Native 应用程序的重定向 URI 列表。

当用户从应用程序注销时,他们不会重定向到登录页面。我检查了答案ADFS 2016 oAuth not redirecting to login page after logout但在我的情况下 id_token_hint 和 post_Logout_Redirect_Uri 被指定:

GET https://<server-name>/adfs/ls/?wa=wsignoutcleanup1.0&id_token_hint=<current_Id_Token>&post_logout_redirect_uri=http://localhost:5000 HTTP/1.1

http:/localhost:5000 被添加到本机应用程序属性中的重定向 URI 列表中。在启用跟踪的 adfs 日志中也找不到错误或警告。

设置一些 adfs 属性时我可能错过了什么吗?

标签: angularoauth-2.0logoutadfs4.0

解决方案


如此处所述您可以尝试使用 ADFS 支持的 Open ID Connect Frontchannel Logout 机制。

转到https://server-name/adfs/.well-known/openid-configuration并通过验证是否存在以下条目来检查是否支持前端注销机制:

end_session_endpoint: "https://<server-name>/adfs/oauth2/logout",
...
frontchannel_logout_supported: true,
frontchannel_logout_session_supported: true,

此后,您通过执行以下命令将注销 uri 添加到 adfs 中的服务器/本机应用程序:

 Set-AdfsServerApplication -TargetIdentifier <id> -LogoutUri http://localhost:5000/logout

最后,您可以通过调用注销:

https://<server-name>/adfs/oauth2/logout?id_token_hint=XXXXX&post_logout_redirect_uri=http://localhost:5080

推荐阅读