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

如何在.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:47:08