【发布时间】:2018-02-11 11:06:16
【问题描述】:
我正在使用 dotnet core 我想在网站上设置 LinkedIn 身份验证,因为 LinkedIn 没有默认的身份验证构建器,如 facebook、google 和 twitter 我决定使用如下通用实现:
services.AddAuthentication().AddOAuth("LinkedIn",
c =>
{
c.ClientId = Configuration["linkedin-app-id"];
c.ClientSecret = Configuration["linkedin-app-secret"];
c.Scope.Add("r_basicprofile");
c.Scope.Add("r_emailaddress");
c.CallbackPath = "/signin-linkedin";
c.AuthorizationEndpoint = "https://www.linkedin.com/oauth/v2/authorization";
c.TokenEndpoint = "https://www.linkedin.com/oauth/v2/accessToken";
c.UserInformationEndpoint = "https://api.linkedin.com/v1/people/~:(id,formatted-name,email-address,picture-url)";
})
我遇到了一个问题,因为 GetExternalLoginInfoAsync() 为空,查看 Identity ASP.net 核心源代码,是因为 providerkey 为空。
取自asp.net核心代码:
var providerKey = auth.Principal.FindFirstValue(ClaimTypes.NameIdentifier);
var provider = items["LoginProvider"] as string;
if (providerKey == null || provider == null)
{
return null;
}
问题是我可以在哪里将 ClaimTypes.NameIdentifier 添加到 LinkedIn 声明?
【问题讨论】:
-
在:github.com/aspnet-contrib/AspNet.Security.OAuth.Providers 中还有一个 LinkedIn 提供程序(目前为 rc2-final 版本)。如果您搜索 AspNet.Security.OAuth.LinkedIn 并确保勾选 Include Prerelease,则可以从 nuget 获取它
-
感谢更新!
标签: c# oauth asp.net-core-mvc .net-core .net-core-2.0