簡體   English   中英

使用docker和java spring時Keycloak認證問題

[英]Keycloak authentication problems when using docker and java spring

所以我有一個彈簧啟動應用程序。 我也使用 swagger 進行測試。 我在 docker-compose 中定義了一個 keycloak,如下所示:

  keycloak:
    image: jboss/keycloak
    ports:
      - "18080:8080"
    volumes:
        - ../keycloak:/opt/jboss/keycloak/imports
    command: 
        - "-b 0.0.0.0 -Dkeycloak.import=/opt/jboss/keycloak/imports/realm-export.json"
    environment:
        - KEYCLOAK_USER=admin
        - KEYCLOAK_PASSWORD=admin

當我嘗試運行 Spring Boot 應用程序時,我使用http://localhost:18080/auth keycloak_auth_url http://localhost:18080/auth作為keycloak_auth_url 從我的機器上運行時,一切正常。
通過 docker-compose 運行時,我將 keycloak url 更改為: http://keycloak:18080/auth但 swaggers 用於將用戶重定向到 keycloak 的 url 保持不變http://localhost:18080/auth

通過招搖“有效”進行身份驗證。 但是當我嘗試以經過身份驗證的用戶身份調用 API 端點時,我的服務器返回以下錯誤:

Error when sending request to retrieve realm keys
myApp  | 
myApp  | org.keycloak.adapters.HttpClientAdapterException: IO error
Didn't find publicKey for kid: U7a58q_oR3zXWSAwVUIa_7FvhdA7IncCQ2IfKQKDGfI
myApp  | 2020-01-07 11:58:40.615 ERROR 1 --- [nio-8082-exec-1] o.k.a.BearerTokenRequestAuthenticator    : Failed to verify token

現在我不確定是我的應用程序無法連接到 keycloak 來檢查令牌的問題。 還是令牌檢查失敗了?
感謝所有的幫助

如果您想從設置的其他容器連接到它,您必須將keycloak_auth_url更改為http://keycloak:8080/auth (如果您使用的是 spring-boot,您可以使用環境變量而不是對其進行硬編碼)通過撰寫。

8080端口是,keycloack上的keycloak容器中運行和端口18080端口是發布到該端口host

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM