栽倒在openid里

今天下了spring security( aka Acegi )。准备用它的openid完成用户认证。

事情大概是这样的,用户在登陆页输入openid的provider(例如yahoo.com),sxip的openid首先对这个url执行一个类型为head的http请求。yahoo会把yadis url返回回来。然后sxip再发一个GET请求获取yadis信息数据。这一步没有问题。找到了。但是接下来会把本机的j_spring_openid_security_check页面当作YadisURL使用headXrdsUrl再次请求。这一点让我很奇怪。然后就会得到这样的错误:

ERROR [org.apache.commons.httpclient.HttpMethodDirector] - Narrowly avoided an infinite loop in execute

然后sxip会说HTTP error during HEAD request on: http://localhost:8080/myapp/j_spring_openid_security_check ,原因是:Maximum redirects (0) exceeded

奇怪~~~~

然后发现是我的openid版本不配套。很奇怪。spring security的包中没有包含openid,所以这个是我自己下的。下载的是0.9.4。最终发现,替换成0.9.3就ok啦!

但是现在已经夜里4点了。还要睡吗?

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥