2011-01-11 35 views
6

EJBのキーストアにパスワードを提供する必要がありますが、開発者に表示させたくありません。私の考えは、Websphere Consoleで認証エイリアスを作成し、後でMY_ALIASを検索し、エイリアスからパスワードを取得することでした。 件名に関連するディスカッションが見つかりました: http://www.coderanch.com/t/79439/Websphere/Authentication-DataWebsphere 6.1にデプロイされたEJBから認証エイリアスにアクセスする方法

誰かがエイリアスを参照できますか?私の目標を達成するためにあなたの提案された方法は何ですか?

ありがとうございました!

答えて

6

あなたはJ2C認証データエントリから資格情報を取得するには、次のコードを使用することができます。

import com.ibm.wsspi.security.auth.callback.Constants; 
import com.ibm.wsspi.security.auth.callback.WSMappingCallbackHandlerFactory; 
import javax.resource.spi.security.PasswordCredential; 
import javax.security.auth.Subject; 
import javax.security.auth.callback.CallbackHandler; 
import javax.security.auth.login.LoginContext; 

Map map = new HashMap(); 
map.put(Constants.MAPPING_ALIAS, "YOUR_J2C_DATA_ALIAS"); 
CallbackHandler callbackHandler = WSMappingCallbackHandlerFactory.getInstance().getCallbackHandler(map, null); 

LoginContext loginContext = new LoginContext("DefaultPrincipalMapping", callbackHandler); 
loginContext.login(); 

Subject subject = loginContext.getSubject(); 
Set credentials = subject.getPrivateCredentials(); 

PasswordCredential passwordCredential = (PasswordCredential) credentials.iterator().next(); 

String user = passwordCredential.getUserName(); 
String password = new String(passwordCredential.getPassword()); 
+0

これは魅力のように働きました! – Jay

+0

Websphere固有のクラス( 'Constants'と' WSMappingCallbackHandlerFactory')を参照せずにこれを行う方法があるのでしょうか? – FGreg

+0

@FGregこれは可能だとは思わない。 WAS特有のものなので、いくつかの特定のクラスを使用することを想定する必要があります。 BTW、これらは公開WAS APIの一部です。あなたはそれを使用して何か問題がありますか? – fnt

関連する問題