Представь себе,
Ниже приведены 2 клиента (2 микросервиса) в режиме блокировки клавиш.
- отдых-сервис-1
- остальное обслуживание-2
Ниже приводится роль в rest-service-2
Для обслуживания звонка обслуживания, то есть: rest-service-1 звонки rest-service-2
'rest-service-1' настроен со следующими значениями в Keycloak
Access Type: confidential
Service Account Enabled: Yes
Кроме того, в разделе «Роли учетной записи службы» для rest-service-1 добавлена / сопоставлена следующая роль
Role for client rest-service-2: service-2-user
После настройки 2 клиентов и служебной учетной записи для вызова клиента в keyclock. Я создал проект Spring boot 2.0.3 и использовал следующий код для получения токена.
@Bean
public AuthzClient authzClient(KeycloakSpringBootProperties kcProperties) {
//org.keycloak.authorization.client.Configuration
Configuration configuration =
new Configuration(kcProperties.getAuthServerUrl(),
kcProperties.getRealm(),
kcProperties.getResource(),
kcProperties.getCredentials(), null);
return AuthzClient.create(configuration);
}
Вот как я получаю токен доступа
@Autowired
private AuthzClient authzClient;
public AccessTokenResponse token() {
return authzClient.obtainAccessToken();
}
Следующий токен получен:
{
"access_token": ${access-token},
"expires_in": 300,
"refresh_expires_in": 1800,
"refresh_token": ${refresh-token},
"token_type": "bearer",
"id_token": null,
"not-before-policy": 0,
"session_state": "6f284b2f-5bb6-4018-8acd-b83923ebb7d7",
"scope": "profile email"
}
Примечание. Я заменил токены на короткие / короткие.
ВОПРОС:
Как использовать токен обновления, указанный выше, и получить новый токен доступа. AuthzClient поддерживает это? Если да, то как мне это сделать?
Нужно ли создавать новый экземпляр TokenCallable и получать токен? Если да, то как создать экземпляр TokenCallable?
Безопасен ли поток TokenCallable?