如何从部署到Websphere 6.1的EJB访问身份验证别名 [英] How to access authentication alias from EJB deployed to Websphere 6.1

查看:174
本文介绍了如何从部署到Websphere 6.1的EJB访问身份验证别名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要为EJB中的密钥库提供密码,但我不希望它对开发人员可见。我的想法是在Websphere Console中创建身份验证别名,然后查找MY_ALIAS并从别名获取密码。
我发现了一些与主题相关的讨论:
http: //www.coderanch.com/t/79439/Websphere/Authenticationledge

I need to provide password for keystore in my EJB but I don't want it to be visible to developers. My idea was to create Authentication Alias in Websphere Console and later lookup for MY_ALIAS and obtain password from alias. I found some discussion related to subject at: http://www.coderanch.com/t/79439/Websphere/Authentication-Data

有人知道别名可以查找吗?你建议的方法是什么来实现我的目标?

Do anybody knows can alias be lookuped? What is your suggested method to achieve my goal?

非常感谢你!

推荐答案

您可以使用以下代码从J2C身份验证数据条目中获取凭据:

You can use the following code to obtain credentials from J2C authentication data entry:

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());

这篇关于如何从部署到Websphere 6.1的EJB访问身份验证别名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆