我在使用 Spring Social 对 Linkedin 进行身份验证时遇到了一些问题。
到目前为止,我可以http://localhost:8080/signin
在我的服务器上打开一个表单,单击链接auth/linkedin
重定向到https://www.linkedin.com/uas/oauth2/authorization?...
,在允许访问后,重定向回http://localhost:8080/auth/linkedin?...
. 此时,我的服务器 POST 到https://www.linkedin.com/uas/oauth2/accessToken
,但失败:
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
...
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
在证书方面,我远非专家。据我所知,Linkedins 证书被拒绝。为了让它被接受,Linkedins 证书或颁发它的证书颁发机构的证书必须在我的信任库中。
该错误表明我两者都没有。因此,一种解决方案似乎是将证书颁发机构的证书简单地导入信任库。
这似乎是不好的做法。我假设我正在与linkedin交谈,但信任链的重点不是假设而是证明某人的身份,在这种情况下并没有发生。如果我只是假设某人,如果他们说他们是谁,那么证书就会失去价值。
另外,似乎我一开始就不应该得到这个错误。我没有发现其他人对 Linkedin 有问题,而且我很难相信他们不会使用公认的证书颁发机构。那么问题的根本原因可能是什么?