【发布时间】:2019-01-10 04:06:38
【问题描述】:
spring-security-oauth2-client 提供了将外部服务轻松集成到我的应用程序的方法。它内置支持通过 Google、Facebook、Github 和 Okta 进行身份验证,但也支持注册其他 oauth2 提供者。在这种情况下,我正在尝试将 LinkedIn 添加为提供程序,这在我的应用程序尝试向 https://www.linkedin.com/oauth/v2/accessToken 发出 POST 请求之前效果很好。
要使此请求成功,需要将 client_id 和 client_secret 添加为 parameters。但这不是 spring-security-oauth2-client 的构建方式,因为所有其他提供程序都需要将 client_id 和 client_secret 作为编码字符串添加到请求标头。
因为这个 LinkedIn 返回一个 401,说它缺少我的 client_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
使用 Github 的凭据和 url 尝试此配置导致我的网站成功接收来自 Github 的 accessToken。
有没有办法配置这个包以与 LinkedIn 一起使用?或者 LinkedIn 是否有任何可能的方式允许 client_id 和 client_secret 在 POST 请求的标头中发送到https://www.linkedin.com/oauth/v2/accessToken?
【问题讨论】:
标签: spring-boot authentication oauth-2.0 linkedin spring-security-oauth2