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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAAS

發(fā)布時(shí)間:2023/12/10 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAAS 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SUN的J2EE框架中的JAAS (Java Authentication Authorization Service)提供了靈活和可伸縮的機(jī)制來保證客戶端或服務(wù)器端的安全。JAAS強(qiáng)調(diào)的是通過驗(yàn)證誰在運(yùn)行代碼以及它的權(quán)限來保護(hù)系統(tǒng)免受攻擊。它最偉大的地方是能讓你能夠?qū)⒁恍?biāo)準(zhǔn)的安全機(jī)制,例如:Solaris NIS(網(wǎng)絡(luò)信息服務(wù))、Windows NT、LDAP(輕量目錄存取協(xié)議)等安全服務(wù)便捷的集成到系統(tǒng)中(SUN已經(jīng)提供了這些標(biāo)準(zhǔn)安全機(jī)制的實(shí)現(xiàn)類)。當(dāng)然我們也可以將我們已有的安全系統(tǒng)集成到JAAS中去,所需要的工作僅僅是一個(gè)安全接口的封裝和配置工作。

在以下的篇幅中,我們將重點(diǎn)說明一下JAAS中的安全框架的三個(gè)應(yīng)用

u一個(gè)基于標(biāo)準(zhǔn)NT模式認(rèn)證的應(yīng)用,

u基于自定義安全模式的應(yīng)用

uJAASWeb上的應(yīng)用

[JAAS整體框架]


在應(yīng)用程序中使用JAAS驗(yàn)證的步驟:

  • 創(chuàng)建一個(gè)LoginContext的實(shí)例。(傳遞兩個(gè)參數(shù):驗(yàn)證模式和CallBackHandler) 
  • 通過調(diào)用LoginContext的login()方法來進(jìn)行驗(yàn)證。  
  • 應(yīng)用login()方法返回的Subject對象中的信息完成權(quán)限控制 
  • 下面是一個(gè)簡單的例子:

    ?

    讓我們先看代碼中涉及到的核心JAAS類和接口。這些類可以被分為三種類型:  

    u?普通類型SubjectPrincipal,憑證  

    u?驗(yàn)證LoginContextLoginModuleCallBackHandlerCallback

    u?授權(quán)PolicyAuthPermissionPrivateCredentialPermission

      上面列舉的類和接口大多數(shù)都在javax.security.auth包中。在J2SE1.4中,還有一些接口的實(shí)現(xiàn)類在com.sun.security.auth包中。?

    應(yīng)用JAAS框架

    ?

    配置部分

    上面已經(jīng)提到,JAAS的可擴(kuò)展性來源于它能夠進(jìn)行動(dòng)態(tài)配置,而配置信息通常是保存在文本。這些文本文件有很多個(gè)配置塊構(gòu)成,我們通常把這些配置塊稱作申請(Application)。每個(gè)申請對應(yīng)了一個(gè)或多個(gè)特定的LoginModule對象.

      當(dāng)你的代碼構(gòu)造一個(gè)LoginContext對象時(shí),你需要把配置文件中申請的名稱傳遞給它。LoginContext將會(huì)根據(jù)申請中的信息決定激活哪些LoginModule對象,按照什么順序激活以及使用什么規(guī)則激活。

      配置文件的結(jié)構(gòu)如下所示:

    Application?{

    ModuleClass?Flag?ModuleOptions;

    ?ModuleClass?Flag?ModuleOptions;

    ...?};

    下面是一個(gè)名稱為Sample的申請

    Sample?{

    com.sun.security.auth.module.NTLoginModule?Rquired?debug=true;

    ?}

      上面這個(gè)簡單的申請指定了LoginContext對象應(yīng)該使用NTLoginModule進(jìn)行驗(yàn)證。類的名稱在ModuleClass中被指定。Flag控制當(dāng)申請中包含了多個(gè)LoginModule時(shí)進(jìn)行登錄時(shí)的行為:RequiredSufficientRequisiteOptional。最常用的是Required,使用它意味著對應(yīng)的LoginModule對象必須被調(diào)用,并且必須需要通過所有的驗(yàn)證。

    DEMO1:集成應(yīng)用NT安全服務(wù)

    步驟一?編輯配置文件

    其中NTLoginModuleSUN提供的NT驗(yàn)證的實(shí)現(xiàn)類,我們只要將其配置進(jìn)來即可

    步驟二?應(yīng)用JAAS接口

    DEMO2集成非標(biāo)準(zhǔn)的安全服務(wù)

    JAAS也能將非標(biāo)準(zhǔn)的安全服務(wù)集成進(jìn)來,對于非標(biāo)準(zhǔn)的安全服務(wù)的集成,我們需要做的工作是用以有的安全接口來實(shí)現(xiàn)JAAS的?LoginModule接口和CallBackHandler接口。

    步驟一?實(shí)現(xiàn)SampleLoginModule

    實(shí)現(xiàn)LoginModule?接口?,實(shí)現(xiàn)4個(gè)方法

    u?public?boolean?login()?throws?LoginException??中完成密碼校驗(yàn)工作

    u?public?boolean?commit()?throws?LoginException?返回用戶權(quán)限,保存入Subject對象

    u?public?boolean?abort()?throws?LoginException?中斷用戶的登陸

    u?public?boolean?logout()?throws?LoginException?注銷

    步驟二?實(shí)現(xiàn)CallBackHandler

    實(shí)現(xiàn)CallbackHandler接口,實(shí)現(xiàn)

    public?void?handle(Callback[]?callbacks)?主要是獲得用戶認(rèn)證信息

    步驟三?在JAAS中集成

    類似DEMO1NT安全服務(wù)的集成

    DEMO3?Web上應(yīng)用JAAS框架

    現(xiàn)在我們希望將通過命令行調(diào)用的程序一直到Web應(yīng)用程序中。由于Web應(yīng)用程序與一般的應(yīng)用程序的交互方式有區(qū)別不同,我們將不能使用JAAS提供的標(biāo)準(zhǔn)CallbackCallbackHandler類。因?yàn)槲覀儾荒茉?/span>Web程序中打開一個(gè)命令窗口讓用戶輸入信息。在這種情況下我們可以在創(chuàng)建LoginContext對象前先初始化一個(gè)Subject對象,在Subject對象的憑證中保存用戶名和密碼。然后我們可以將該Subject對象傳遞給LoginContext的構(gòu)造函數(shù)。?

    String?user?=?request.getParameter("user");
    String?pass?=?request.

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。