|
最近有客戶說升級(jí)了我們的產(chǎn)品他們SSO環(huán)境突然不工作了,他們不確定是第三方的authentication center出了問題還是我們產(chǎn)品的問題,事實(shí)上絕大多數(shù)的SSO實(shí)現(xiàn)都依賴于http header,我們的產(chǎn)品依賴于REMOTE_USER這個(gè)header來告訴我們已經(jīng)通過授權(quán)的用戶名,這里要多說一句,http header REMOTE_USER和HttpServletRequest.getRemoteUser可不一樣,這個(gè)方法拿的是一個(gè)類似cgi運(yùn)行環(huán)境的環(huán)境變量,例如如果IIS+Tomcat來實(shí)現(xiàn)windows authentication的時(shí)候,ajp3協(xié)議里會(huì)會(huì)告訴這個(gè)環(huán)境變量的值,這個(gè)時(shí)候跟http request就沒什么關(guān)系了。 客戶要求我們是否能夠幫助dump出到達(dá)tomcat容器的http requests,來證明確實(shí)要求的http request不包含相應(yīng)的內(nèi)容,想了一些,這應(yīng)該容器應(yīng)該提供的debug功能,所以查了查文檔,果然tomcat的valve架構(gòu)就是完成類似事情的,而且有一個(gè)專門的valve來做這件事
只要在server.xml里uncomment這一行就好了。 不過這個(gè)valve不適用tomcat 7,tomcat團(tuán)隊(duì)在tomcat 7里面決定把類似的功能放入標(biāo)準(zhǔn)的Java Servlet Filter體系,并且內(nèi)置了filter類,org.apache.catalina.filters.RequestDumperFilter,使用也很簡(jiǎn)單,只要在web.xml里按照下面的樣子配置就好
不過可惜的是兩者的功能有那么一點(diǎn)點(diǎn)的不等價(jià),甚至tomcat 6的valve更勝一籌,有些debug scenarios里filter表現(xiàn)出有點(diǎn)奇怪的方式,具體可以看 這里 |
|
|