首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用openid4java登录谷歌时验证失败

使用openid4java登录谷歌时验证失败
EN

Stack Overflow用户
提问于 2011-10-04 16:35:56
回答 1查看 1.7K关注 0票数 1

我正在使用openid4java库在一个spring-mvc应用程序中实现“使用谷歌登录”功能。

它在我的本地tomcat服务器上运行良好,但在远程服务器上突然停止工作。在此之前,它也运行得很好。

在catalina.out中做了一些登录之后,我发现google重定向到返回的url后,对响应的验证失败了。

代码语言:javascript
复制
VerificationResult verification = openIdService.getConsumerManager().verify(
                      receivingURL.toString(),
                      response, discovered);

Identifier verified = verification.getVerifiedId(); //Null

远程服务器上的verified的值为null。在本地服务器上,它是一个uri

我知道在处理响应时,ConsumerManager需要与发出身份验证请求的实例相同。

代码的其余部分实现如下

有一个OpenIdController,其中的OpenIdService是自动连接的。

OpenIdServiceImpl实现了OpenIdService,并具有返回consumerManager实例的getConsumerManager方法。

在OpenIdServiceImpl的构造中,创建了ConsumerManager的一个实例。

创建用于提交的表单和处理响应的操作是在OpenIdController中编写的,并使用getConsumerManager方法访问consumerManager实例。

编辑:

我尝试在表单提交之前记录Discovery信息,并在此处的回调中记录输出

代码语言:javascript
复制
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配置有关?

任何帮助都是非常感谢的。如果需要,我可以发布代码。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-06 23:19:02

我可以通过在创建ConsumerManager实例后添加以下代码行来解决此问题。

代码语言:javascript
复制
consumerManager.setAssociations(new InMemoryConsumerAssociationStore()); 
consumerManager.setNonceVerifier(new InMemoryNonceVerifier(5000)); 
consumerManager.setMinAssocSessEnc(AssociationSessionType.DH_SHA256);

我发现它在这里的SampleConsumer示例的一个注释中提到过-- http://code.google.com/p/openid4java/wiki/SampleConsumer

请参阅底部的响应#3。

我还没有尝试弄清楚它是做什么的,但希望这是解决它的正确方法:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7645226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档