spring-security-oauth2-client提供了轻松将外部服务与我的应用程序集成的方法。它具有对Google,Facebook,Github和Okta的身份验证的内置支持,而且还支持其他oauth2提供程序的注册。在这种情况下,我尝试将LinkedIn添加为提供程序,这种方法在我的应用程序尝试向https://www.linkedin.com/oauth/v2/accessToken发出POST请求之前一直有效。
要使此请求成功,需要将 client_id 和 client_secret 添加为参数。但这不是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可以通过任何可能的方式允许对https://www.linkedin.com/oauth/v2/accessToken的POST请求的标头中的 client_id 和 client_secret ?
答案 0 :(得分:0)
由于设置spring.security.oauth2.client.registration.linkedin.client-authentication-method=form
,我无法向LinkedIn发送正确的请求。我的spring-security-oauth2-client版本(5.0.6.RELEASE)不支持设置form
。将其更改为post
后,它就像一个咒语,但随后遇到了下一个要在另一个问题中提出的问题。
我新遇到的麻烦的问题:LinkedIn OAuth2 /accessToken response not return a "token_type"