Keycloak:作为Docker服务运行时,无效的令牌发行者

时间:2020-06-25 22:33:07

标签: spring docker keycloak

我有问题:

WWW-Authenticate Bearer realm="test", error="invalid_token", error_description="Invalid token issuer. Expected 'http://keycloak:8080/auth/realms/test', but was 'http://localhost:8080/auth/realms/test'"

我的设置:

application.yml

keycloak:
  realm: test
  resource: api
  auth-server-url: http://keycloak:8080/auth
  ssl-required: external
  autodetect-bearer-only: true
  cors: true
  principal-attribute: preferred_username
  credentials:
    secret: 2b553733-8d5f-4276-8ace-17112ac7ac20

docker-compose.yml

keycloak:
    image: jboss/keycloak:10.0.0
    environment:
      - KEYCLOAK_USER=admin
      - KEYCLOAK_PASSWORD=admin
    ports:
      - "8080:8080"
    networks:
      - net

身份验证网址:http:// localhost:8080 / auth / realms / test / protocol / openid-connect / auth 令牌网址:http:// localhost:8080 / auth / realms / test / protocol / openid-connect / token

我了解问题存在的原因,但是我不知道如何解决。

1 个答案:

答案 0 :(得分:0)

Keycloak的默认主机名提供程序(https://www.keycloak.org/docs/latest/server_installation/#default-provider)具有一个名为frontendURL的属性,应将其设置为公开Keycloak的公共URL。

设置frontendURL可确保所有前通道URL(例如颁发者,authorization_endpoint)使用配置的值作为URL中的主机名,而后通道URL在请求中继续使用主机名。