如何在.NET Core中通过OpenIDConnect实现LinkedIn外部登录?已遇错误求助
解决ASP.NET Core中LinkedIn登录配置错误的方案
你的配置核心问题是LinkedIn OIDC端点配置不正确,且缺少必要的流程参数设置,以下是修正后的完整实现方案:
修正后的OpenIdConnect配置代码
.AddOpenIdConnect(Configuration.GetSection("ExternalLoginConfiguration:LinkedInConfiguration:Scheme").Value, "linkedin", options => { options.SignInScheme = "Identity.External"; options.ClientId = Configuration.GetSection("ExternalLoginConfiguration:LinkedInConfiguration:ClientId").Value; options.ClientSecret = Configuration.GetSection("ExternalLoginConfiguration:LinkedInConfiguration:ClientSecret").Value; options.CallbackPath = Configuration.GetSection("ExternalLoginConfiguration:LinkedInConfiguration:CallbackPath").Value; // 关键修正:指定LinkedIn官方标准的OIDC元数据地址 options.MetadataAddress = "https://www.linkedin.com/oauth/v2/.well-known/openid-configuration"; // LinkedIn仅支持授权码流程,需明确指定响应类型 options.ResponseType = "code"; options.Scope.Clear(); options.Scope.Add("openid"); options.Scope.Add("email"); options.Scope.Add("profile"); options.SaveTokens = true; // 可选:将LinkedIn返回的自定义Claim映射到.NET标准Claim类型 options.ClaimActions.MapJsonKey(ClaimTypes.Name, "name"); options.ClaimActions.MapJsonKey(ClaimTypes.Email, "email"); options.ClaimActions.MapJsonKey(ClaimTypes.GivenName, "given_name"); options.ClaimActions.MapJsonKey(ClaimTypes.Surname, "family_name"); });
必须完成的配套检查
- 回调地址一致性:LinkedIn开发者后台配置的重定向URI,必须与
CallbackPath完全匹配(包含协议、域名、完整路径,例如https://yourdomain.com/signin-linkedin)。 - 权限启用:在LinkedIn应用的「产品」选项卡中,必须添加并启用「Sign In with LinkedIn using OpenID Connect」产品,否则无法获取
email和profile权限。 - 网络连通性:确保你的服务器能正常访问LinkedIn的OIDC元数据地址,避免防火墙或代理拦截请求。
内容的提问来源于stack exchange,提问作者Gouthami Shivakoti
相关产品推荐
相关产品推荐

