Сбой входа в Oauth2 для загрузочного приложения Spring с использованием Keycloak - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть простое загрузочное приложение Spring (сгенерированное с помощью jhipster 5.7.2).Нет службы обнаружения.Просто простой монолит.Он использует Keycloak для аутентификации.

Вот конфигурация, которую я выбрал для своего приложения:

{
  "generator-jhipster": {
    "promptValues": {
      "packageName": "com.mycompany.myapp",
      "nativeLanguage": "en"
    },
    "jhipsterVersion": "5.7.2",
    "applicationType": "monolith",
    "baseName": "test",
    "packageName": "com.mycompany.myapp",
    "packageFolder": "com/mycompany/myapp",
    "serverPort": "8080",
    "authenticationType": "oauth2",
    "cacheProvider": "no",
    "websocket": false,
    "databaseType": "sql",
    "devDatabaseType": "postgresql",
    "prodDatabaseType": "postgresql",
    "searchEngine": false,
    "messageBroker": false,
    "serviceDiscoveryType": false,
    "buildTool": "maven",
    "enableSwaggerCodegen": false,
    "clientFramework": "angularX",
    "useSass": false,
    "clientPackageManager": "npm",
    "testFrameworks": [],
    "jhiPrefix": "jhi",
    "otherModules": [],
    "enableTranslation": true,
    "nativeLanguage": "en",
    "languages": [
      "en"
    ]
  }
}

Я использую Keycloak 4.5

Я следовал это документация для включения HTTPS на моем сервере аутентификации.Теперь мой сервер авторизации доступен извне.

Мое приложение запущено на локальном хосте.Когда я пытаюсь выполнить вход в систему, происходит сбой входа в систему с сообщением: Несанкционированный

enter image description here

Журналы приложений говорят следующее: (BadCredentialsException)

2018-12-24 19:31:27.579 DEBUG 43877 --- [ XNIO-2 task-13] c.m.myapp.aop.logging.LoggingAspect      : Enter: com.mycompany.myapp.repository.CustomAuditEventRepository.add() with argument[s] = [AuditEvent [timestamp=2018-12-24T14:01:27.579Z, principal=UNKNOWN, type=AUTHENTICATION_FAILURE, data={type=org.springframework.security.authentication.BadCredentialsException, message=Could not obtain access token}]]
Hibernate: select nextval ('hibernate_sequence')

Нет журналов на конце Keycloak.Если я удалю конфигурацию, связанную с HTTPS, на моем сервере аутентификации, логин будет работать.Не уверен, что именно проблема.

1 Ответ

0 голосов
/ 27 декабря 2018

Я выяснил причину этой проблемы.

В моем случае проблема заключается в процессе создания хранилища ключей (JKS).Нам дали только cert.crt и privkey.crt.Корневой сертификат не был включен при создании хранилища ключей.В документах четко сказано включить корневой сертификат.

Корневой сертификат можно загрузить у поставщика сертификатов. Эта ссылка была полезной, включая корневой сертификат.

При игре с сертификатами, выданными Letsencrypt , все, что нам нужно сделать, это использовать privkey.pem и fullchain.pem.Здесь нам не нужно беспокоиться о включении корневого сертификата, поскольку fullchain.pem уже содержит его.

# convert certificate chain + private key to the PKCS#12 file format
openssl pkcs12 -export -out keystore.pkcs12 -in fullchain.pem -inkey privkey.pem

# convert PKCS#12 file into Java keystore format
keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.jks
...