我正在使用 openid4java 库在 spring-mvc 应用程序中实现“使用 google 登录”功能。
它在我的本地 tomcat 服务器上运行良好,但在远程服务器上它突然停止工作。在那之前它也工作得很好。
在 catalina.out 进行一些登录后,我发现在 google 重定向到返回 url 后,响应的验证失败
VerificationResult verification = openIdService.getConsumerManager().verify(
receivingURL.toString(),
response, discovered);
Identifier verified = verification.getVerifiedId(); //Null
在远程服务器上验证的值为空。在本地服务器上,它是一个 uri
我知道在处理响应时,ConsumerManager 需要与用于放置身份验证请求的实例相同。
其余代码实现如下
有一个 OpenIdController,其中 OpenIdService 是自动装配的。
OpenIdServiceImpl 实现 OpenIdService 并具有返回 consumerManager 实例的 getConsumerManager 方法。
在 OpenIdServiceImpl 的构造中,创建了 ConsumerManager 的实例。
创建提交表单和处理响应的操作写在 OpenIdController 中,并使用 getConsumerManager 方法访问 consumerManager 实例。
编辑:
我尝试在表单提交之前记录发现信息,并在此处的回调中将其输出
Debugging OpenId: Discovered (before) OpenID2
OP-endpoint:https://www.google.com/accounts/o8/ud
ClaimedID:null
Delegate:null
Debugging OpenId: Discovered (after) OpenID2
OP-endpoint:https://www.google.com/accounts/o8/ud
ClaimedID:null
Delegate:nul
我在这里做错什么了吗?但它适用于本地服务器!
或者与远程服务器上的 tomcat 配置有关?
任何帮助表示赞赏。如果需要,我可以发布代码。
谢谢。