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?




Из-за настройки 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»