Клиент Spring Boot + Security OAuth2.0 с настраиваемым поставщиком - PullRequest
0 голосов
/ 09 мая 2019

Я создаю клиент OAuth2.0 для настраиваемого поставщика OAuth2 в приложении Spring Boot + Security (версия 5).

Ниже приведен application.properties, который имеет всю конфигурацию, и в моем проекте нет дополнительного класса конфигурации.

spring.security.oauth2.client.registration.xxxxxxxxx.client-id=XXXXXXXXXX
spring.security.oauth2.client.registration.xxxxxxxxx.client-secret=XXXXXXXXXX
spring.security.oauth2.client.registration.xxxxxxxxx.scope=openid
spring.security.oauth2.client.registration.xxxxxxxxx.redirect-uri-template=http://localhost:8080/login/oauth2/code/xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.client-name=xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.provider=xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.client-authentication-method=basic
spring.security.oauth2.client.registration.xxxxxxxxx.authorization-grant-type=authorization_code

spring.security.oauth2.client.provider.xxxxxxxxx.authorization-uri=https://api.xxxxxxxxx.com/authorize
spring.security.oauth2.client.provider.xxxxxxxxx.token-uri=https://api.xxxxxxxxx.com/token
spring.security.oauth2.client.provider.xxxxxxxxx.user-info-uri=https://api.xxxxxxxxx.com/userinfo?schema=openid
spring.security.oauth2.client.provider.xxxxxxxxx.user-name-attribute=name
spring.security.oauth2.client.provider.xxxxxxxxx.user-info-authentication-method=header

Когда я нажимаю http://localhost:8080/, он правильно перенаправляет на страницу входа провайдера, а после успешного входа перенаправляет обратно в мое приложение.

Теперь проблема в том, что когда он перенаправляет, то отображается сообщение об ошибке ниже. enter image description here

Я погуглил эту ошибку, но не получил правильного ответа. Кроме того, поставщик OAuth2 не предоставил такой URL-адрес.

После исследования я узнал, что мне нужно установить свойство ниже. Должно ли оно быть предоставлено провайдером аутентификации? spring.security.oauth2.client.provider.pepstores.jwk-set-uri

Что именно мне здесь не хватает в конфигурации?

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Наконец, проблема решена.Мне просто нужно настроить URI jwk, который должен быть предоставлен провайдером аутентификации.Ниже приведена окончательная конфигурация для клиента Auth Provider.

spring.security.oauth2.client.registration.xxxxxxxxx.client-id=XXXXXXXXXX
spring.security.oauth2.client.registration.xxxxxxxxx.client-secret=XXXXXXXXXX
spring.security.oauth2.client.registration.xxxxxxxxx.scope=openid
spring.security.oauth2.client.registration.xxxxxxxxx.redirect-uri-template=http://localhost:8080/login/oauth2/code/xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.client-name=xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.provider=xxxxxxxxx
spring.security.oauth2.client.registration.xxxxxxxxx.client-authentication-method=basic
spring.security.oauth2.client.registration.xxxxxxxxx.authorization-grant-type=authorization_code

spring.security.oauth2.client.provider.xxxxxxxxx.authorization-uri=https://api.xxxxxxxxx.com/authorize
spring.security.oauth2.client.provider.xxxxxxxxx.token-uri=https://api.xxxxxxxxx.com/token
spring.security.oauth2.client.provider.xxxxxxxxx.user-info-uri=https://api.xxxxxxxxx.com/userinfo?schema=openid
spring.security.oauth2.client.provider.xxxxxxxxx.user-name-attribute=name
spring.security.oauth2.client.provider.xxxxxxxxx.user-info-authentication-method=header
spring.security.oauth2.client.provider.xxxxxxxxx.jwk-set-uri=https://api.xxxxxxxxx.com/jwks

Спасибо

0 голосов
/ 12 мая 2019

Когда вы получаете JWT в клиентском приложении, вам необходимо проверить подпись JWT.Для проверки подписи нужен открытый ключ провайдера аутентификации.В соответствии со спецификациями OAuth провайдер аутентификации может предоставлять открытый ключ через URI, а клиент может использовать этот URI для получения открытого ключа для проверки JWT.Это то, чего не хватает в вашей конфигурации.

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