jini-jakarta99-blogging
[ 首頁 | 索引 | 登入 | 註冊 ]

2004-02-22

jini 所撰寫。最後修改者是 jini 在 1632 天之前。 已瀏覽 2275 次。
[編輯] [附加]

JAAS Tutorial 04:25

JAAS 在 J2SDK 1.3 就是一個 optional package 了, 在 J2SDK 1.4 就正式加入 .

此篇文章參考

>>http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/tutorials/GeneralAcnOnly.html

Authentication 身份驗證

可以下載範例程式碼.

>>http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/tutorials/SampleAcn.java

這程式是一個身份驗證的簡單範例, 他的執行觀念步驟如下

建立 LoginContext 的 instance

這時候就是建立一個 Sample 的 LoginContext, 並且利用一個 CallbackHandler 來處理 Callback 的資料.

LoginContext lc = null;
try {
    lc = new LoginContext("Sample", new MyCallbackHandler());
} catch (LoginException le) {
    System.err.println("Cannot create LoginContext. "
        + le.getMessage());
    System.exit(-1);
} catch (SecurityException se) {
    System.err.println("Cannot create LoginContext. "
        + se.getMessage());
    System.exit(-1);
}

呼叫 LoginContext login 這個 method

這個 login 將會執行連結到驗證伺服器之中, 很簡單地利用剛剛建立的 LoginContext, lc.login() 就可以了.

try {
// attempt authentication
    lc.login();
} catch (LoginException le) {
  System.err.println("Authentication failed:");
  System.err.println("  " + le.getMessage());
}

實作 CallbackHandler 這個 interface

我們也將產生 MyCallbackHandler 去實作 CallbackHandler, 什麼是 Callback 呢 ? 簡單來說, 就是 server 要求使用者登入的資訊 ! 我稱之 驗證規則

class MyCallbackHandler implements CallbackHandler

當 LoginContext lc.login() 連結到 auth server 會回傳一些 callbacks 放到 CallbackHandler 之中, 因為標準的 callback 共有

  • NameCallback 要求輸入使用者帳號
  • PasswordCallback 要求輸入使用者密碼
  • TextOutputCallback 回傳一些錯誤, 警告, 等訊息 LoginModule 給予使用者~

public void handle(Callback[] callbacks)
  throws IOException, UnsupportedCallbackException {

for (int i = 0; i < callbacks.length; i++) { if (callbacks[i] instanceof TextOutputCallback) {

// display a message according to a specified type . . .

} else if (callbacks[i] instanceof NameCallback) {

// prompt the user for a username . . .

} else if (callbacks[i] instanceof PasswordCallback) {

// prompt the user for a password . . .

} else { throw new UnsupportedCallbackException (callbacks[i], "Unrecognized Callback"); } } }

Login Config 的語法

>>http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/tutorials/LoginConfigFile.html

執行測試

請先下載

>>http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/tutorials/sample_jaas.config
>>http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/tutorials/SampleAcn.java
>>http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/tutorials/SampleLoginModule.java
>>http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/tutorials/SamplePrincipal.java
>>http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/tutorials/sampleacn.policy

分別建立相關的目錄位置

SampleAcn.java 放在 sample 目錄之下, SampleLoginModule.java 放在 sample/module 之下, 而 SamplePricipal 放在 sample/principal 之下. 最後將該 config and policy 放在根目錄 !

將所有 java 檔案 complie 之後, 使用

#java -Djava.security.auth.login.config==sample_jaas.config sample.SampleAcn

執行程式, 測試成功的 id/password 為 testUser/testPassword , 大家可以測試了解相關的錯誤情況.

製作相關的 jars

執行 complie ( 不需要額外的 jar, 只要是 jdk1.4.* 的 JDK 環境就可以了 )

jar -cvf SampleAcn.jar sample/SampleAcn.class sample/MyCallbackHandler.class
jar -cvf SampleLM.jar sample/module/SampleLoginModule.class sample/principal/SamplePrincipal.class
jar -cvf SampleAction.jar sample/SampleAction.class

執行 policy 測試

java -classpath SampleAzn.jar;SampleAction.jar;SampleLM.jar
-Djava.security.manager
-Djava.security.policy==sampleazn.policy
-Djava.security.auth.login.config==sample_jaas.config sample.SampleAzn

Policy file 的語法

>>http://java.sun.com/j2se/1.4.2/docs/guide/security/PolicyFiles.html

Policy Tool 的相關參考

>>http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/policytool.html

JAAS 參考文件

>>http://java.sun.com/j2se/1.4.2/docs/guide/security/jaas/JAASRefGuide.html
目前無回響 | 發表回響
請利用全文檢索或日期來找你想看的文章 ^^~

< August 2008 >
SunMonTueWedThuFriSat
12
3456789
10111213141516
17181920212223
24252627282930
31

歡迎來到 jini(99% jakarta) blogging
如果要加入我的 blogging 網頁
可以抓下面的小圖
jini (99% jakarta) blogging
link 是 www.softleader.com.tw:8668
alt 請寫 jini (99% jakarta) blogging

Blog 精選
>>Jakarta
>>Java Database
>>JAAS
>>Code Style
>>Groovy
>>Self Misc.

不會用 snipsnap 嗎
請查詢 snipsnap-help.

我會發言的討論版
jini in>>jsptw


我發行的電子報(Java Opensource Newspaper)
>>BIG5-Traditional Chinese Version
>>GB-Simplified Chinese Version

Users: (2)
… and 32 Guests


一群Java高手的部落格
>>JiaYun
>>jserv
>>Forth
>>Tempo
>>edwardsayer
>>swanbear
>>jini's JavaEE 5
>>雅加達爪哇咖啡北京分店

其他連結:
XHTML 1.0 validated
CSS validated
RSS 2.0 validated
powered by snipsnap
Attribution-NonCommercial-ShareAlike 1.0
Java b Blog
RSS Feed

Powered by SnipSnap 0.4.2a

snipsnap.org | Copyright 2000-2002 Matthias L. Jugel and Stephan J. Schmidt