亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將用戶憑據傳遞給 WebLogic 11g 身份驗證提供程序?

如何將用戶憑據傳遞給 WebLogic 11g 身份驗證提供程序?

慕無忌1623718 2021-08-25 10:10:18
我想我對 WebLogic 的AuthenticationProviders.我的理解在閱讀 JAAS 時,我想我已經掌握了如何使用 aLoginContext來執行登錄。在LoginContext上拿起LoginModule從JAAS配置文件和JAAS選項。通過定義 some 的實例CallbackHandler,您可以傳遞用戶憑據。調用后LoginContext.login(),使用關聯的LoginModule.在瀏覽了 Oracle 上的文檔后AuthorizationProviders,大部分內容看起來非常簡單。AnAuthenticationProvider利用 JAAS 執行登錄。看起來像AuthenticationProvider一個LoginContext內部管理一個。我很難掌握/發現的是 WebLogic 如何管理LoginContext以及CallbackHandler最終傳遞給LoginModule.initialize方法的 。情況該應用程序:在 WebLogic 11g (10.3.6) 上運行的 Java Web 應用程序。嘗試使用用戶名和密碼進行身份驗證,而無需表單登錄。目前,該應用程序使用表單登錄并使用“j_security_check”操作提交。有一個自定義AuthenticationProvider,LoginModule它處理登錄并處理表單中提交的用戶名和密碼。我假設 WebLogic 可以在內部處理“j_security_check”操作,并且知道如何將表單輸入字段映射到CallbackHandler傳遞給自定義LoginModule.我的目標我正在嘗試創建第二個登錄過程,該過程涉及從 HTTP 請求標頭中提取憑據(用戶名/密碼)。當前使用 servlet 過濾器提取憑據。以一種或另一種方式,我想將這些憑據傳遞給LoginModule表單登錄已經存在的憑據。我想執行以下操作之一:直接從標題中獲取憑據并將它們傳遞給AuthenticationProvider(通過一些自定義AuthenticationProvider實現和/或配置)使用 servlet 過濾器提取標頭憑據并手動將它們傳遞到AuthenticationProvider.我的問題我該怎么做才能將標頭憑據傳遞給LoginModule?是否有AuthenticationProvider可以從標題中提取用戶名和密碼的預定義?你能描述一下從請求到登錄的流程嗎?有什么方法可以訪問CallbackHandler或LoginContext使用的AuthenticationProvider?這樣我就可以將憑據傳遞給AuthenticationProvider自己。WebLogic 如何知道從何處獲取用戶憑據以及如何將它們綁定到特定的憑據AuthenticationProvider?我很可能在此過程中遺漏了一些關鍵概念,因此請隨時將我提到的任何內容放在正確的軌道上。謝謝!
查看完整描述

2 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

我理解 WebLogic 的最大障礙AuthenticationProviders是理解如何傳遞憑據。似乎有太多事情在幕后“自動”發生。我覺得我必須以某種方式訪問一個LoginContext和/或CallbackHandler在后臺操作的 WebLogic。我在正確的軌道上,但錯過了一些關于 JAAS 身份驗證的重要內容......

JAAS 身份驗證的第 3 步和第 4 步如下所示:

  1. WebLogic Server 容器調用 WebLogic 安全框架。如果存在包含身份驗證信息的客戶端 CallbackHandler則會將其傳遞到 WebLogic 安全框架中。

  2. 對于每個配置的身份驗證提供程序,WebLogic 安全框架使用傳入的身份驗證信息創建一個 CallbackHandler 。(這些是由 WebLogic 安全框架在服務器端創建的內部 CallbackHandler,與客戶端的 CallbackHandler 無關。)

這是讓我失望的部分。我的思緒被CallbackHandler傳遞到 WebLogic 的身份驗證信息上。我沒能聽懂步驟末尾顯示的注釋:

注意

對于完全在服務器端執行的身份驗證,該過程將從步驟 3 開始,WebLogic Server 容器將在步驟 4 之前調用 weblogic.security.services.authentication.login 方法。

你難道不知道嗎……Authentication有四種login方法,每一種都接受一個CallbackHandler!

對于我的情況,我可以使用 servlet 過濾器從請求標頭中挑選憑據,將它們傳遞給CallbackHandler,然后調用Authentication.login(CallbackHandler callbackHandler)以使用自定義LoginModule.


查看完整回答
反對 回復 2021-08-25
  • 2 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號