使用ASP.NET身份为Google,Twitter和LinkedIn进行外部登录,我已经完成所有这些工作,但是最近LinkedIn出于某种原因才停止。
当我进入登录页面并单击以通过LinkedIn进行登录时,它将带我到LinkedIn,并显示所有LinkedIn屏幕以进行登录然后授权该应用程序。我单击“允许”,并将控制权返回给我的ExternalLoginCallback
中的AccountController.cs
处理程序:
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}
//....
}
问题是,对于LinkedIn,我得到loginInfo == null
并被重定向回登录页面,但我不知道为什么。我看到的唯一线索是在请求网址中:
https://account.example.com:44301/Account/ExternalLoginCallback?error=access_denied
因此,LinkedIn已添加error=access_denied
,但我感到困惑的是,为什么一切都看起来不错,并且以前的版本在我的工作中没有任何变化(该代码甚至几个月都没有被使用过)
通过Startup.Auth.cs
中的LinkedIn登录设置如下:
app.UseTwitterAuthentication(new Microsoft.Owin.Security.Twitter.TwitterAuthenticationOptions() {
ConsumerKey = AuthKeys.TwitterKey,
ConsumerSecret = AuthKeys.TwitterSecret,
// Stupid twitter and their constantly changing certs: http://stackoverflow.com/questions/25011890/owin-twitter-login-the-remote-certificate-is-invalid-according-to-the-validati
BackchannelCertificateValidator = new Microsoft.Owin.Security.CertificateSubjectKeyIdentifierValidator(new[]
{
"A5EF0B11CEC04103A34A659048B21CE0572D7D47", // VeriSign Class 3 Secure Server CA - G2
"0D445C165344C1827E1D20AB25F40163D8BE79A5", // VeriSign Class 3 Secure Server CA - G3
"7FD365A7C2DDECBBF03009F34339FA02AF333133", // VeriSign Class 3 Public Primary Certification Authority - G5
"39A55D933676616E73A761DFA16A7E59CDE66FAD", // Symantec Class 3 Secure Server CA - G4
"4eb6d578499b1ccf5f581ead56be3d9b6744a5e5", // VeriSign Class 3 Primary CA - G5
"5168FF90AF0207753CCCD9656462A212B859723B", // DigiCert SHA2 High Assurance Server CA
"B13EC36903F8BF4701D498261A0802EF63642BC3" // DigiCert High Assurance EV Root CA
})
});
我尝试将Owin.Security.Providers.LinkedIn
nuget软件包更新为最新版本,但无济于事。而且我什至尝试删除here中的BackchannelCertificateValidator
(可能是已经更改,不再需要,结果相同)。
有人有任何线索吗?