我根据Google OpenID OpenID
构建了OpenID4Java
服务器供内部使用。
我在Apache-Tomcat 6.0
上部署了它。
当消费者试图发现时,它正在抛出以下错误
org.openid4java.discovery.yadis.YadisException: 0x706: GET failed on http://localhost:9090/idp4java/idp : 503:HTTP/1.0 503 Service Unavailable
at org.openid4java.discovery.yadis.YadisResolver.retrieveXrdsLocation(YadisResolver.java:371)
at org.openid4java.discovery.yadis.YadisResolver.discover(YadisResolver.java:233)
at org.openid4java.discovery.yadis.YadisResolver.discover(YadisResolver.java:221)
当我通过网址http://localhost:9090/idp4java/idp访问XRDS
时,我得到了它,但当我的消费者代码试图获取它时,上面的错误即将到来。
我们是否需要对Tomcat
进行任何设置以启用Yadis
?
任何想法为什么会发生这种情况。我的代码与Google IDP
一起工作正常。
先谢谢。 贾
答案 0 :(得分:0)
上周五对此做了一些研究,并且可以解决它。
今天早上将记录器级别调试以查看发生了什么,并发现HTTP错误503是由于代码中的代理设置而来的。
在Production scnenario中,您需要Proxy设置,以便可以连接OpenID。您的appserver / webserver需要直接连接到OpenID for Discovery和Association进程。
HttpClientFactory.setProxyProperties(proxySettings);
HttpClientFactory类来自OpenID4Java。
在评论上述行后,我开始收到404错误。
原因是OpenIDURL结尾处的“/”,即http://myopenid.net/idp/。当我删除这个“/”时,它开始工作。
由于 贾