spring-security-oauth2-client 的 LinkedIn OAuth2 不工作,client_id 在请求 accessToken 时丢失
LinkedIn OAuth2 with spring-security-oauth2-client not working, client_id missing when requesting accessToken
spring-security-oauth2-client 提供了将外部服务与我的应用程序轻松集成的方法。它 built-in 支持使用 Google、Facebook、Github 和 Okta 进行身份验证,但也支持注册其他 oauth2 提供商。在这种情况下,我尝试将 LinkedIn 添加为提供商,这在我的应用程序尝试将 POST-request 变为 https://www.linkedin.com/oauth/v2/accessToken 之前效果很好。
要使此请求成功,需要将 client_id & client_secret 添加为 参数。但这不是构建 spring-security-oauth2-client 的方式,因为所有其他提供程序都需要 client_id & client_secret 将作为编码字符串添加到 请求中 headers.
因为这个 LinkedIn returns 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 在 headers POST-request 到 https://www.linkedin.com/oauth/v2/accessToken?
由于设置 spring.security.oauth2.client.registration.linkedin.client-authentication-method=form
,我无法向 LinkedIn 发出正确的请求。我的 spring-security-oauth2-client (5.0.6.RELEASE) 版本不支持设置 form
。将其更改为 post
后,它就像一个魅力,但后来我遇到了下一个问题,我将在另一个问题中提出这个问题。
我新遇到的麻烦问题:
spring-security-oauth2-client 提供了将外部服务与我的应用程序轻松集成的方法。它 built-in 支持使用 Google、Facebook、Github 和 Okta 进行身份验证,但也支持注册其他 oauth2 提供商。在这种情况下,我尝试将 LinkedIn 添加为提供商,这在我的应用程序尝试将 POST-request 变为 https://www.linkedin.com/oauth/v2/accessToken 之前效果很好。
要使此请求成功,需要将 client_id & client_secret 添加为 参数。但这不是构建 spring-security-oauth2-client 的方式,因为所有其他提供程序都需要 client_id & client_secret 将作为编码字符串添加到 请求中 headers.
因为这个 LinkedIn returns 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 在 headers POST-request 到 https://www.linkedin.com/oauth/v2/accessToken?
由于设置 spring.security.oauth2.client.registration.linkedin.client-authentication-method=form
,我无法向 LinkedIn 发出正确的请求。我的 spring-security-oauth2-client (5.0.6.RELEASE) 版本不支持设置 form
。将其更改为 post
后,它就像一个魅力,但后来我遇到了下一个问题,我将在另一个问题中提出这个问题。
我新遇到的麻烦问题: