What have you found for these years?

2009-05-04

rubycas-server bug

測試版本是 0.7.1.1, 準備著手開始 patch?
等會就去找他們的 issue tracker

*

我確認是 rubycas-server 的 bug 了,見:
lib/casserver/cas.rb: 300, CASServer::CAS#clean_service_url

clean_service = dirty_service.dup
['service', 'ticket', 'gateway', 'renew'].each do |p|
clean_service.sub!(Regexp.new("#{p}=[^&]*"), '')
end

他會把:
http://google.com/?abc=123&ticket=456
變成:
http://google.com/?abc=123&
因此 service url 就改變了,當初取得 ticket 時應該是:
http://google.com/?abc=123
才對。結果 rubycas-server 以 service 不同為由,redirect 回去。

接著就能看到 redirect loop, 因為登入一直被踢回原本網址,
而且後面不斷接上 &, 最後就會看到 &&&&&&&& 一堆在屁股...

我不知道那為什麼一開始 service url 後面沒有多的 and?
或許是因為他用不同的方式做 url clean up 吧?有待追查。

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0