LinkedIn OAuth2 с Spring-security-oauth2-client не работает, client_id отсутствует при запросе accessToken

Spring-security-oauth2-client предоставляет средства для простой интеграции сторонних сервисов с моим приложением. Он имеет встроенную поддержку аутентификации с помощью Google, Facebook, Github и Okta, но также поддерживает регистрацию других провайдеров oauth2. В этом случае я пытаюсь добавить LinkedIn в качестве поставщика, который отлично работает до тех пор, пока мое приложение не попытается отправить POST-запрос на https://www.linkedin.com/oauth/v2/accessToken.

Для успешного выполнения этого запроса требуется, чтобы ID клиента и client_secret были добавлены как параметры. Но Spring-security-oauth2-client построен не так, потому что все другие поставщики требуют добавления ID клиента и client_secret в виде закодированной строки в заголовки запросов.

Из-за этого LinkedIn возвращает 401, говоря, что отсутствует мой ID клиента. Вы можете просмотреть мою конфигурацию провайдера LinkedIn ниже:

spring.security.oauth2.client.registration.linkedin.provider=linkedin
spring.security.oauth2.client.registration.linkedin.client-id=MYID
spring.security.oauth2.client.registration.linkedin.client-secret=MYSECRET
spring.security.oauth2.client.registration.linkedin.scope=MYSCOPES
spring.security.oauth2.client.registration.linkedin.client-name=linkedin login
spring.security.oauth2.client.registration.linkedin.redirect-uri-template=http://MYWEBSITE/login/oauth2/code/linkedin
spring.security.oauth2.client.registration.linkedin.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.linkedin.client-authentication-method=form

spring.security.oauth2.client.provider.linkedin.authorization-uri=https://www.linkedin.com/oauth/v2/authorization
spring.security.oauth2.client.provider.linkedin.token-uri=https://www.linkedin.com/oauth/v2/accessToken
spring.security.oauth2.client.provider.linkedin.user-info-uri=https://api.linkedin.com/v2/me

Попытка этой конфигурации с учетными данными и URL-адресами Github привела к тому, что мой веб-сайт успешно получил токен доступа от Github.

Есть ли способ настроить этот пакет для работы с LinkedIn? Или есть какой-либо способ, которым LinkedIn может разрешить ID клиента & client_secret в заголовках POST-запроса к https://www.linkedin.com/oauth/v2/accessToken?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
0
1 117
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из-за настройки spring.security.oauth2.client.registration.linkedin.client-authentication-method=form мне не удалось отправить правильный запрос в LinkedIn. Параметр form не поддерживался моей версией spring-security-oauth2-client (5.0.6.RELEASE). После изменения на post он работал как шарм, но затем я столкнулся со следующей проблемой, о которой я собираюсь задать другой вопрос.

Вопрос к моим недавно возникшим неприятностям: Ответ LinkedIn OAuth2 / accessToken не возвращает «token_type»

Другие вопросы по теме