You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Security OAuth2集成LinkedIn API遇签名验证器缺失问题

解决Spring Security LinkedIn OAuth2登录的missing_signature_verifier错误

问题原因

当LinkedIn客户端scope包含openid时,Spring Security会启用OIDC(OpenID Connect)流程,该流程要求验证ID Token签名。报错的核心原因:

  • LinkedIn Provider配置缺少JWK Set URI,Spring无法获取用于验证签名的公钥
  • 用户名属性配置不符合LinkedIn的OIDC响应格式(LinkedIn用sub作为用户唯一标识,而非id)

解决方案

1. 更新application.yml配置

修改OAuth2客户端和Provider配置,补充JWK地址并修正用户名属性:

server:
  port: 8081
spring:
  security:
    oauth2:
      client:
        registration:
          linkedin:
            clientId: ?
            clientSecret: ?
            scope: profile, email, openid
            authorizationGrantType: authorization_code
            redirect-uri: "{baseUrl}/login/oauth2/code/linkedin"  # 用占位符适配动态域名
            client-name: LinkedIn
            clientAuthenticationMethod: client_secret_post
        provider:
          linkedin:
            tokenUri: https://www.linkedin.com/oauth/v2/accessToken
            authorizationUri: https://www.linkedin.com/oauth/v2/authorization
            userInfoUri: https://api.linkedin.com/v2/userinfo
            userNameAttribute: sub  # 替换为OIDC标准的用户标识字段
            jwkSetUri: https://www.linkedin.com/oauth/v2/jwks  # 新增LinkedIn公钥集合地址

logging:
  level:
    org.springframework.security: TRACE

2. 保留现有WebSecurityConfig逻辑

你已处理了LinkedIn Token响应缺少token_type的问题,同时移除了LinkedIn不支持的nonce参数,这部分代码可以直接保留。如果后续仍有异常,可以尝试移除自定义的accessTokenResponseClient——Spring Security 5.3+已能自动适配LinkedIn的Token响应格式。

关键修改说明

  • jwkSetUri:提供LinkedIn用于签名ID Token的公钥集合地址,Spring Security会自动据此生成签名验证器,解决missing_signature_verifier错误
  • userNameAttribute: sub:LinkedIn的OIDC用户信息响应中,用户唯一标识为sub字段,原配置的id会导致用户信息解析失败
  • redirect-uri占位符:{baseUrl}会自动适配部署环境的域名,避免硬编码ngrok地址带来的维护问题

内容的提问来源于stack exchange,提问作者phukan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 07:45:06