日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAAS使用

發布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAAS使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

Java 驗證和授權服務(Java Authentication Authorization Service,簡稱 JAAS)是 Java 在 JDK 1.4 引入的安全框架。JAAS 提供了一種靈活的、說明性機制,用于對用戶進行身份驗證和服務訪問的授權。

JAAS 是一種可插拔的認證模塊( Pluggable Authentication Module,PAM )的安全體系結構。這意味著可以通過改變模塊,支持從一種安全協議組件無縫的切換到另一個協議組件。同時這種體系架構定義的接口可以無需修改代碼實現加入多種認證技術和授權機制,因為 JAAS API 定義了應用程序代碼與實際驗證邏輯之間的抽象,這個抽象不用重新編譯現有的應用程序代碼就可以作為登錄模塊的運行時替代。這種實現方式是通過應用程序只調用 LoginContext 接口,而認證技術的實際提供程序則是基于 LoginModule 接口進行開發的,在運行時,LoginContext 通過讀取配置文件確定使用哪些認證模塊來對應用程序進行認證。

JAAS 認證中最重要的實體對象是:principal 和 subject,subject 表示一個驗證通過的主體,這個主體保存著一系列的相關信息,包含此實體的 principal,公開 Credential 以及私有 Credential。

使用

使用步驟

在應用程序中使用 JAAS 的步驟為:

  • 實例化一個 LoginContext 對象,LoginContext 通過查詢一個配置文件確定所使用的認證技術
  • 調用 LoginContext 的 login() 方法來進行認證
  • 認證通過,可通過 getSubject() 獲取 subject 對象
  • 簡單示例

    String applicationName="app"; LoginContext logincontext = new LoginContext(applicationName); // ① try {logincontext.login(); // ② } catch (LoginException e) {// Authentication failed. }// Authentication successful, we can now continue. // We can use the returned Subject if we like. Subject subject = logincontext.getSubject(); // ③ Subject.doAs(subject, new MyPrivilegedAction());

    代碼分析

  • 代碼 ① 是在構建一個 LoginContext 對象,這個對象內部首先會通過傳入的 Application 參數在 JAAS 的配置文件中找到對應的配置,然后根據這個配置加載實際的 LoginModule
  • 代碼 ② 是應用程序中執行登錄驗證,LoginContext 內部會調用每個加載的 LoginModule 的 login() 方法。如果登錄失敗,會拋出 LoginException 異常,如果登錄成功,則繼續向下執行
  • 登錄成功后,可通過代碼 ③ 獲取驗證通過的 subject 對象,可通過這個對象發起服務授權等請求操作
  • 配置文件

    在上面的使用過程中,可以發現 JAAS 的實際認證機制是通過配置文件來配置的,一般配置文件是保存在文本中的。文本文件中由很多配置塊構成,通常把這些配置塊稱作申請(Application)。每個申請對應了一個或多個特定的 LoginModule 對象。

    在代碼中構造一個 LoginContext 對象時,需要把配置文件中申請的名稱傳遞給它,LoginContext 將會根據申請中的信息決定激活哪些 LoginModule 對象,按照什么順序激活以及使用什么規則激活。

    配置文件的結構如下所示

    Application{ModuleClass Flag ModuleOptions;ModuleClass Flag ModuleOptions;... }; Application2{ModuleClass Flag ModuleOptions;... }

    • ModuleClass:指定使用的實際 LoginModule
    • Flag:控制當申請中包含了多個 LoginModule 時進行登錄時的行為,一般有以下幾個選項:
      • Required:最常用的選項,該選項意味著對應的 LoginModule 對象必須被調用,并且還必須要通過所有的驗證
      • Sufficient
      • Requistite
      • Optional
    • ModuleOption:允許有多個參數

    簡單示例

    Sample {com.sun.security.auth.module.NTLoginModule Rquired debug=true; }

    示例中的申請指定了 LoginContext 對象應該使用 NTLoginModule 進行驗證,并設置了一個調試參數 debug=true,這樣診斷輸出將被輸出到 System.out 中。

    配置文件可以被任意命名,并且可以被放在任何位置。JAAS 框架通過使用 java.securty.auth.long.config 屬性來確定配置文件的位置,可通過以下幾種方式設置這個屬性:

    • 環境變量進行配置,客戶端代碼基本不怎么用,局限性太大了
    • 命令啟動程序,可進行參數設置屬性: java -Djava.security.auth.login.config=jass.config JAASTest
    • 代碼中設置此屬性:System.setProperty("java.security.auth.login.config","D:\xxx\jass.config");

    本文由博客一文多發平臺 OpenWrite 發布!

    總結

    以上是生活随笔為你收集整理的JAAS使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。