Аутентификация мобильного приложения с помощью Keycloak для вызова защищенного весеннего загрузочного API - PullRequest
0 голосов
/ 23 октября 2018

Я строю архитектуру микроуслуг, которая состоит из 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 через весеннюю загрузку?

Извиняюсь, это немного загруженный вопрос.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...