注销重定向时出现 Keycloak CORS 问题
Posted
技术标签:
【中文标题】注销重定向时出现 Keycloak CORS 问题【英文标题】:Keycloak CORS issue on logout redirect 【发布时间】:2021-02-19 02:46:54 【问题描述】:我正在使用 Keycloak 10.0.2 来保护 Spring Boot REST API 和 Angular 9 的前端。 前端由运行在 http://localhost:8080 上的 Spring Boot 微服务提供服务。 在 keycloak 端,openid-connect 客户端 Web 源配置为允许所有源。 Spring Boot Spring Security 配置为使用 Keycloak 作为 oauth2 客户端提供程序。
spring:
security:
oauth2:
client:
provider:
keycloak:
issuer-uri: https://abc-keycloak.abccloud.com/auth/realms/abc
scope: openid, profile
registration:
keycloak:
client-id: localhost
client-secret: xxxxx
redirect-uri: "baseUrl/login/oauth2/code/registrationId"
resourceserver:
jwt:
issuer-uri: https://abc-keycloak.abccloud.com/auth/realms/abc
Angular 前端进行注销 API 调用 http://localhost:8080/logout 并被重定向到
HTTP/1.1 302 Found Location:
https://abc-keycloak.abccloud.com/auth/realms/abc/protocol/openid-connect/logout?id_token_hint=xxxxxx
我在 Google Chrome 浏览器中收到 CORS 错误
访问 XMLHttpRequest 在 'https://abc-keycloak.abccloud.com/auth/realms/abc/protocol/openid-connect/logout?id_token_hint=xxxxxx&post_logout_redirect_uri=http://localhost:8080' (重定向自 'http://localhost:8080/logout') “http://localhost:8080”已被 CORS 策略阻止:响应 预检请求未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。
【问题讨论】:
【参考方案1】:它不应该是 API 调用(后台请求)。整个浏览器应该导航到该应用程序注销 URL(然后到 Keycloak 注销 URL)。
【讨论】:
keycloak注销url的导航也应该由前端完成吧?如果前端是第 3 方,我无法控制它怎么办? 强制重定向没有意义。为什么在 token_endpoint 上没问题,但在 end_session 一上 KO? @Toilal 很简单,您需要删除 IDP 域上的 cookie - 在浏览器中终止 SSO 会话。 Token 端点只是 API 端点,所以它不需要处理任何 cookie。以上是关于注销重定向时出现 Keycloak CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 next-connect 在 Next.js 中从 http://localhost:3000 重定向到 https://api.twitter.com 时出现 CORS 错误?