5

全て、

JAAS LoginContext を使用して複数の KDC/Realm の組み合わせに対して認証を行う方法について、誰でもアドバイスを提供できますか。つまり、試行 1 がレルム A に対して失敗した場合は、レルム B を試してください。

以下の擬似コードのようなもの。

いつものように、どんな助けも大歓迎です。

プレーンコピーをクリップボードプリントに表示しますか?

[realms]   
  some.address.for.auth.one  
  {  
     kdc = some.address.one  
  }  

  some.address.for.auth.two  
  {  
     kdc = some.address.two  
  }  

boolean loginSuccess = false;  

try  
{  
   LoginContext lc = new LoginContext(...);  
   //Try Realm 1  
   lc.login();  
   loginSuccess = true;  
}  
catch(LoginException le)  
{  
  try  
  {  
     LoginContext lc2 = new LoginContext(...);  
     //Try Realm 2  
     lc2.login();  
     loginSuccess = true;  
  }  
  catch(LoginException le)  
  {  
     //...  
  }  
}  

return loginSuccess;  
4

1 に答える 1

0

それが可能だ。たとえば、各構成を個別のファイルに格納し、各構成の開始時に Java パスを krb5.ini および login.conf ファイルに渡すことができます。

boolean loginSuccess = false;  

try  
{  
   System.setProperty("java.security.krb5.conf", "C:\kerb\conf1\krb5.ini");
   System.setProperty("java.security.auth.login.config", "C:\kerb\conf1\login.conf");
   // in login.conf you can have defined path to keytab for this configuration

   LoginContext lc = new LoginContext(...);  
   //Try Realm 1  
   lc.login();  
   loginSuccess = true;  
}  
catch(LoginException le)  
{  
  try  
  {  
     System.setProperty("java.security.krb5.conf", "C:\kerb\conf2\krb5.ini");
     System.setProperty("java.security.auth.login.config", "C:\kerb\conf2\login.conf");
     // in login.conf you can have defined path to keytab for this configuration

     LoginContext lc2 = new LoginContext(...);  
     //Try Realm 2  
     lc2.login();  
     loginSuccess = true;  
  }  
  catch(LoginException le)  
  {  
     //...  
  }  
}  

return loginSuccess;  

これら 2 つのシステム プロパティについては、http://docs.oracle.com/javase/7/docs/technotes/guides/security/jgss/tutorials/LoginConfigFile.html および http://docs.oracle.com/javase/ で説明して ます 。 7/docs/technotes/guides/security/jgss/tutorials/KerberosReq.html

もう 1 つの可能性は、ファイルを使用しない構成です。CallbackHandler (ここではユーザー名とパスワードを渡します) と Configuration (ここでは login.conf にあるパラメーターを渡します) を取る LoginContext コンストラクターがあります。Kdc およびレルムは、システム プロパティ java.security.krb5.realm および java.security.krb5.kdc で渡すことができます。

http://docs.oracle.com/javase/8/docs/api/javax/security/auth/login/LoginContext.html#LoginContext-java.lang.String-javax.security.auth.Subject-javax.security. auth.callback.CallbackHandler-javax.security.auth.login.Configuration-

于 2014-04-07T18:27:20.870 に答える