【发布时间】:2020-09-09 23:09:26
【问题描述】:
我有一个移动应用(react-native)、一个资源服务(spring boot)和 Keycloak Authenticatioin Service(Auth-Service)。
Client 直接使用 Auth-Service 进行身份验证并获取访问令牌。 当我向资源服务发出请求时,资源服务通过询问 Auth-Service 来检查访问令牌。但是客户端应用和iss字段获取的token是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);
};
资源服务:
application.yml
keycloak:
realm: sau
resource: photo-service
bearer-only: false
auth-server-url: http://localhost:8060/auth
credentials:
secret: 69a3e80c-8360-42df-bcec-b6575a6949dc
注意:我检查了this 问题并尝试设置 "X-Forwarded-For" : "http://localhost:8060/" 但它不起作用 Keycloak 返回:
{
"error": "invalid_request",
"error_description": "HTTPS required"
}
这是手机客户端获取的Sample Access Token。
【问题讨论】:
-
我必须使用
keycloak.proxy-url设置christophewillemsen.com/2021/06/08/…
标签: oauth-2.0 keycloak openid-connect keycloak-services keycloak-rest-api