相关疑难解决方法(0)

Keycloak 无效的令牌发行者

我有一个移动应用程序(react-native)、一个资源服务(spring boot)和 Keycloak Authenticatioin Service(Auth-Service)。

客户端直接使用 Auth-Service 进行身份验证并获取访问令牌。当我向资源服务发出请求时,资源服务通过询问 Auth-Service 来检查访问令牌。但是客户端应用程序和 iss 字段获取的令牌是http://10.0.2.2:8060/auth/realms/sau和我在http://localhost:8110 的资源服务。

Keycloak 说: error="invalid_token", error_description="Invalid token issuer. Expected 'http://localhost:8060/auth/realms/sau', but was 'http://10.0.2.2:8060/auth/realms/sau'"

我的问题是如何代表我的客户在资源服务中进行身份验证?

移动应用:

 export const prepareRequestBody = credentials => {
  const params = new URLSearchParams();
  params.append('username', credentials.username);
  params.append('password', credentials.password);
  params.append('client_id', "nasilim-mobile-app");
  params.append('grant_type', "password");
  return params;
};

export const login = credentials => {
  const params = prepareRequestBody(credentials);
  return axios.post(LOGIN, params);
};
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

资源服务:

应用程序.yml

keycloak:
  realm: sau
  resource: photo-service
  bearer-only: false
  auth-server-url: http://localhost:8060/auth
  credentials: …
Run Code Online (Sandbox Code Playgroud)

oauth-2.0 openid-connect keycloak keycloak-services keycloak-rest-api

12
推荐指数
2
解决办法
9182
查看次数

Docker-compose网络中的Keycloak

我想设置一个包含keycloak,postgres和webapp实例的Docker网络.

有没有办法在容器之间进行网络通信,还能理解oidc客户端重定向?我有一个问题,容器可以互相交谈,如果我设置OIDC与docker网络的容器名称,但后来我遇到了客户端的问题,无法连接到Docker网络之外的那些相同的URL主机.

任何人都可以指向正确的docker文档来查看可能的DNS解决方案或主机到容器通信吗?

----编辑----

澄清.容器可以在容器名称下相互通信,但客户端(即Chrome)必须使用localhost与所有内容进行通信.在我的ui Web应用程序中的OIDC连接设置中,我必须使用容器名称或localhost.如何让我的客户了解容器名称以便提出正确的请求?

version: '2'

services:

  ui:
    container_name: 'ui'
    image: 'bdparrish/ui:0.1'
    build:
      context: .
      dockerfile: ./ui/Dockerfile
    ports:
      - "8085:80"
    depends_on:
      - "postgres"
      - "keycloak"
    networks:
      - auth-network
    environment:
      - ASPNETCORE_ENVIRONMENT=Docker

  postgres:
    container_name: postgres
    image: 'postgres'
    environment:
      POSTGRES_PASSWORD: password
    ports:
      - "5432:5432"
    networks:
      - auth-network

  keycloak:
    container_name: keycloak
    image: jboss/keycloak
    ports: 
      - "8080:8080"
    depends_on:
      - postgres
    environment:
      DB_VENDOR: "POSTGRES"
      DB_ADDR: postgres
      DB_PORT: 5432
      DB_USER: keycloak
      DB_PASSWORD: password
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: password
    restart: always
    networks:
      - auth-network …
Run Code Online (Sandbox Code Playgroud)

openid-connect keycloak docker-compose

7
推荐指数
2
解决办法
1620
查看次数