Я строю архитектуру микроуслуг, которая состоит из API весенней загрузки, которая будет использоваться мобильными приложениями (nativescript или реагировать на native) и SPA (vuejs).
Я использую Keycloak для сервера OpenId Connect.Как я понимаю, я должен использовать клиентский тип доступа как общедоступный для мобильного приложения и спа.И токен на предъявителя для API.
В API весенней загрузки некоторые пути являются общедоступными, чтобы разрешить действия регистрации / забытого пароля на Keycloak, а остальные конечные точки защищены.
application.yaml
security:
oauth2:
resourceserver:
jwt:
jwk-set-uri: http://localhost:8080/auth/realms/sociter/protocol/openid-connect/certs
issuer-uri: http://localhost:8080/auth/realms/sociter
Я использую последнюю весеннюю защиту, для которой требуются только настройки jwt.Мой API хорошо защищен, но когда я вызываю API API-интерфейса keycloak с помощью библиотеки, я получаю
javax.ws.rs.BadRequestException: HTTP 400 Bad Request
Чтобы вызвать API-интерфейс rest rest администратора, я должен предоставить все конфигурации keycloak, как показано ниже
keycloak:
server: http://localhost:8080/auth
realm: sociter
username: realm-admin
password: 123123
client-id: api-client
client-secret: 8f36d1a1-63d6-448a-9d4c-542add294db2
@Configuration
class KeycloakConfig(private val settings: KeycloakSettings) {
@Bean
fun keycloak(): Keycloak {
return KeycloakBuilder
.builder()
.serverUrl(settings.server)
.realm(settings.realm)
// .grantType(OAuth2Constants.PASSWORD)
.username(settings.username)
.password(settings.password)
.clientId(settings.clientId)
// .clientSecret(settings.clientSecret)
.resteasyClient(ResteasyClientBuilder().connectionPoolSize(10).build())
.build()
}
}
Я настроил два клиента, один для мобильного приложения (почтальон-клиент), а другой для весенней загрузки api (api-клиент).
Пользователь realm-admin имеет роли управления областями, позволяющие выполнять действия администратора.
У меня следующие вопросы:
1) Правильно ли я понимаю типы доступа?
2) Если да, то как мне настроить api-клиент с носителем типа доступа только для поддержки действий администратора?
3) Или мне нужен третий тип клиента типа конфиденциальныйдля действий администратора keycloak через весеннюю загрузку?
Извиняюсь, это немного загруженный вопрос.
Спасибо