java - 如何从部署到 Websphere 6.1 的 EJB 访问身份验证别名

标签 java security websphere jaas websphere-6.1

我需要为我的 EJB 中的 keystore 提供密码,但我不希望它对开发人员可见。我的想法是在 Websphere 控制台中创建身份验证别名,然后查找 MY_ALIAS 并从别名获取密码。 我在以下位置找到了一些与主题相关的讨论: http://www.coderanch.com/t/79439/Websphere/Authentication-Data

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

非常感谢!

最佳答案

您可以使用以下代码从 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());

关于java - 如何从部署到 Websphere 6.1 的 EJB 访问身份验证别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4663534/

相关文章:

java - 带有 Java 7 的 JTextPane 中带有样式文本的奇怪文本换行

java - 如何使用 Facelets 将动态支持 bean 传递到 JSF 2.0 页面?

java - NumberFormat 解析问题

java - X lang 有安全性吗?

security - 密码限制如何帮助安全?

CSS 文件存在但在部署应用程序后第一次被忽略

Websphere应用程序修改web.xml不起作用

java - Websphere 7 中的自定义登录模块

java - 如何从文本文件的一行中删除两个字符之间的空格

security - 如何更改 ssl 证书 JBoss AS 6.1.0.Final