c# - Asp.Net MVC LinkedIn OAuth 2.0 登录失败
问题描述
LinkedIn 登录突然停止工作,错误代码为error=access_denied,代码库或包没有任何变化。
根据文档错误代码access_denied,表示用户已拒绝许可,但即使在授予许可时也会发生这种情况,我们仅请求默认信息电子邮件 ID。
问题是返回的用户信息始终为空。
使用的 Nuget 包是Owin.Security.Providers.LinkedIn : 2.22.0,我们尝试更新它,但它没有解决问题。
对于诊断,我们检查了linkedIn 应用程序设置,它看起来不错,也可以通过 javascript sdk 登录相同的应用程序 ID,因此问题似乎与应用程序 ID 无关。
在 github 中没有提出与它相关的问题。所以,不知道根本问题在哪里。
该问题的任何指针或解决方案都会有所帮助。
解决方案
调试nuget包Owin.Security.Providers.LinkedIn https://github.com/TerribleDev/OwinOAuthProviders的源代码后遇到问题。
由于 tls 协商问题,对端点https://www.linkedin.com/oauth/v2/accessToken的调用失败,并在 LinkedInAuthenticationHandler 类的 AuthenticateCoreAsync 方法中抛出底层连接已关闭错误。我设置了 SecurityProtocol,如下面的代码片段所示。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls |
SecurityProtocolType.Tls11 |
SecurityProtocolType.Tls12;
不知道为什么尽管其他端点正在工作,但对这个端点的调用却突然失败了。