【问题标题】:Keycloak CORS issue on logout redirect注销重定向时出现 Keycloak CORS 问题
【发布时间】: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”标头 资源。

【问题讨论】:

    标签: spring-boot keycloak spring-security-oauth2


    【解决方案1】:

    它不应该是 API 调用(后台请求)。整个浏览器应该导航到该应用程序注销 URL(然后到 Keycloak 注销 URL)。

    【讨论】:

    • keycloak注销url的导航也应该由前端完成吧?如果前端是第 3 方,我无法控制它怎么办?
    • 强制重定向没有意义。为什么在 token_endpoint 上没问题,但在 end_session 一上 KO?
    • @Toilal 很简单,您需要删除 IDP 域上的 cookie - 在浏览器中终止 SSO 会话。 Token 端点只是 API 端点,所以它不需要处理任何 cookie。
    猜你喜欢
    • 2018-02-23
    • 2023-02-18
    • 2021-03-11
    • 2020-12-04
    • 2019-03-14
    • 2018-05-22
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多