WebSphere Application Server - Express, Version 6.1   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows, Windows Vista

             目次と検索結果のパーソナライズ化

Common Object Request Broker Architecture (CORBA) プログラマチック・ログインの Java Authentication and Authorization Service (JAAS) へのマイグレーション

このトピックは、CORBA ベースのプログラマチック・ログイン API を用いたプログラマチック・ログインの実行方法の例として使用します。

始める前に

ここでは、非推奨の Common Object Request Broker Architecture (CORBA) プログラマチック・ログイン API、および JAAS の提供する 代替手段について概説します。WebSphere Application Server は、 Java Authentication and Authorization Service (JAAS) をプログラマチック・ログイン・アプリケーション・プログラミング・インターフェース (API) として完全にサポートします。JAAS サポートの詳細については、 Java Authentication and Authorization Service のプログラマチック・ログインの構成 およびJava Authentication and Authorization Service によるプログラマチック・ログインの開発 を参照してください。

次のリストに示すのは、非推奨の CORBA プログラマチック・ログイン API です。
  • ${user.install.root}/installedApps/sampleApp.ear/default_app.war/WEB-INF/classes/LoginHelper.java
  • ${user.install.root}/installedApps/sampleApp.ear/default_app.war/WEB-INF/classes/ServerSideAuthenticator.java
  • org.omg.SecurityLevel2.Credentials。 この API は製品に組み込まれていますが、API の使用は推奨されていません。

WebSphere Application Server で提供される API は、標準 JAAS API と標準 JAAS インターフェースの製品インプリメンテーションの組み合わせです。

次に示すのは要約のみです。 詳しくは、ご使用のプラットフォーム用の JAAS 資料 (http://www.ibm.com/developerworks/java/jdk/security/) を参照してください。

プロシージャー

  1. CORBA ベースのプログラマチック・ログイン API を用いたプログラマチック・ログインの実行方法として、 以下の例を使用します。 CORBA ベースのプログラマチック・ログイン API は、JAAS ログインに置き換えられました。
    注: 以下の例で使用されている LoginHelper アプリケーション・プログラミング・インターフェース (API) は、WebSphere Application Server バージョン 6.1 では推奨されていません。また将来のリリースでは除去される予定です。 次のステップで示している JAAS プログラマチック・ログイン API の使用が推奨されています。
    public class TestClient {
    ...
    private void performLogin() {
    // Get the ID and password of the user.
    String userid = customGetUserid();
    String password = customGetPassword();
    
    // Create a new security context to hold authentication data.
    LoginHelper loginHelper = new LoginHelper();
    try {
    // Provide the ID and password of the user for authentication.
    org.omg.SecurityLevel2.Credentials credentials = 
    loginHelper.login(userid, password);
    
    // Use the new credentials for all future invocations.
    loginHelper.setInvocationCredentials(credentials);
    // Retrieve the name of the user from the credentials
    // so we can tell the user that login succeeded.
    
    String username = loginHelper.getUserName(credentials);
    System.out.println("Security context set for user: "+username);
    } catch (org.omg.SecurityLevel2.LoginFailed e) {
    // Handle the LoginFailed exception.
    }
    }
    ...
    }
  2. 以下の例を使用して、 CORBA ベースのプログラマチック・ログイン API を JAAS プログラマチック・ログイン API にマイグレーションします。

    以下の例では、アプリケーション・コードが、必須の Java 2 セキュリティー許可を与えられているものと想定します。詳しくは、Java Authentication and Authorization Service のプログラマチック・ログインの構成 システム・リソースおよび API の保護 (Java 2 セキュリティー) 、 および http://www.ibm.com/developerworks/java/jdk/security/ にある、JAAS の資料を参照してください。

    public class TestClient {
    ...
    private void performLogin() {
    // Create a new JAAS LoginContext.
    javax.security.auth.login.LoginContext lc = null;
    
    try {
    // Use GUI prompt to gather the BasicAuth data.
    lc = new javax.security.auth.login.LoginContext("WSLogin",
    new com.ibm.websphere.security.auth.callback.WSGUICallbackHandlerImpl());
    
    // create a LoginContext and specify a CallbackHandler implementation
    // CallbackHandler implementation determine how authentication data is collected
    // in this case, the authentication date is collected by  login prompt
    //   and pass to the authentication mechanism implemented by the LoginModule.
    } catch (javax.security.auth.login.LoginException e) {
    System.err.println("ERROR: failed to instantiate a LoginContext and the exception: " 
    + e.getMessage());
    e.printStackTrace();
    
    // may be javax.security.auth.AuthPermission "createLoginContext" is not granted
    //   to the application, or the JAAS Login Configuration is not defined.
    }
    
    if (lc != null)
    try {
    lc.login();  // perform login
    javax.security.auth.Subject s = lc.getSubject();
    // get the authenticated subject
    
    // Invoke a J2EE resources using the authenticated subject
    com.ibm.websphere.security.auth.WSSubject.doAs(s,
    new java.security.PrivilegedAction() {
    public Object run() {
    try {
    bankAccount.deposit(100.00);  // where bankAccount is an protected EJB
    } catch (Exception e) {
    System.out.println("ERROR: error while accessing EJB resource, exception: " 
    + e.getMessage());
    e.printStackTrace();
    }
    return null;
    }
    }
    );
    
    // Retrieve the name of the principal from the Subject
    // so we can tell the user that login succeeded,
    // should only be one WSPrincipal.
    java.util.Set ps =
    s.getPrincipals(com.ibm.websphere.security.auth.WSPrincipal.class);
    java.util.Iterator it = ps.iterator();
    while (it.hasNext()) {
    com.ibm.websphere.security.auth.WSPrincipal p =
    (com.ibm.websphere.security.auth.WSPrincipal) it.next();
    System.out.println("Principal: " + p.getName());
    }
    } catch (javax.security.auth.login.LoginException e) {
    System.err.println("ERROR: login failed with exception: " + e.getMessage());
    e.printStackTrace();
    
    // login failed, might want to provide relogin logic
    }
    }
    ...
    }



関連タスク
Java Authentication and Authorization Service のプログラマチック・ログインの構成
Java Authentication and Authorization Service によるプログラマチック・ログインの開発
カスタム・ユーザー・レジストリーのマイグレーション
システム・リソースおよび API の保護 (Java 2 セキュリティー)
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 6:25:35 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/tsec_migratecorba.html