JCIFS實現域單點登入遇到的問題

2021-07-27 17:55:39 字數 2122 閱讀 5579

需求說明

局方所有人的電腦都在乙個域中管理,員工通過域賬號和密碼登入他的計算機之後,在登入應用系統之後不再需要做登入操作,直接進入系統;

實現方法

實現方法也比較簡單,步驟如下:

2.配置過濾器

由於我只要通過jcifs獲取客戶端的系統使用者,並沒有通過jcifs登入ad驗證使用者(使用者登入的時候已經驗證了),所有這裡配的引數就乙個。

3.修改過濾器ntlmhttpfilter的**,去掉ad登入

}完成以上幾步,就可以通過request.getuserprincipal();獲取客戶端系統使用者名稱了。在專案中,把過濾器整合進去,雖然實現了需求,但是遇到個問題。

加了這個過濾器後,之後的所有請求都會發多次,如圖:

這個也能理解,因為jcifs實現的原理就是在請求的標頭檔案加authorization。這樣每次請求都需要驗證一次。那麼問題就來了,由於框架是通過request.getinputstream獲取請求引數再做分析,而http傳送的驗證請求body是為空,導致後面的程式報錯。就不得不再後面的解析中判斷一下輸入流是否為空,再做處理。

我就想能不能怎麼控制http只在發登入請求的時候才發驗證請求,其他的請求就不要用了。想辦法刪掉headers中的authorization引數,查詢資料只有response.setheader("www-authenticate","ntlm"");卻沒有移除這個引數的方法。。求大神們指點一二

實現同域單點登入

利用瀏覽器cookies儲存當前登入使用者資訊,使得同域 能夠共享使用該cookies儲存的使用者資訊,取得當前登入使用者,實現單點登入。域 hello.com 儲存鍵名稱 sso.hello.com 儲存的值 userid sjdjajhsh 示例 cookie sso.hello.com use...

跨域 Cookie 實現單點登入

單點登入 sso single sign on 對於同乙個客戶端 例如 chrome 瀏覽器 只要登入了乙個子站 例如 a.com 則所有子站 b.com c.com 都認為已經登入。比如使用者在登入 後,跳轉到天貓時就已經登入了。未登入使用者訪問子站 a.com 進行登入,自動跳轉到賬戶中心的統一...

單點登入 跨域寫cookie的實現

不多說,上 登入 test1.php 隨便寫就好了,狀態碼是200就ok test2.php,這裡是跨域訪問,有些 被注釋了,這裡用不到。指定允許其他網域名稱訪問 header access control allow origin 是否允許後續請求攜帶認證資訊 cookies 該值只能是true,...