1

我为遗留系统创建了自己的 JCA->EIS 适配器。我在连接到旧系统时无法进行身份验证。

这是相当难以解释的。在 GlassFish v3.1.1 中,在您创建自己的 JCA 适配器并安装它之后,有一个名为“Work Security Maps”的选项卡。这似乎是为 EIS 系统输入用户名/密码的唯一位置。我想用匿名(未经身份验证的)用户运行我的 EJB,但为了填写 EIS 密码,您似乎必须指定组或用户映射。

有没有办法让 JCA 适配器的所有调用都使用相同的用户名/密码访问 EIS 系统?

所需的行为类似于 JDBC 的工作方式。我的数据库有一个用户名/密码。我的应用程序注入了数据源,但我不必将当前用户映射到数据库用户。

编辑:如第一个答案中所述,您可以使用 config-properties 来实现它。但是,我不认为这是根据 JCA 规范执行此操作的正确方法。在 Websphere 中,您可以将 JAAS 凭证分配为“组件管理的身份验证别名”以及何时调用主题。

我似乎无法在 GlassFish 中执行此操作。如果你调用 Subject.getPrivateCredentials(PasswordCredential.class) 你会得到一组带有空白字符串的凭据。

4

2 回答 2

1

在 JDBC RA(或我最近使用的 ActiveMQ RA)中,您在资源适配器属性(ra.xml 中的 config-property)中设置用户名和密码。您可能希望在资源适配器中以类似的方式实现它。

于 2011-12-22T15:51:48.830 回答
0

事实证明,在 ra.xml 中不使用 config-property 也很有可能做到这一点。诀窍是,您必须使用 ejb-jar.xml。GlassFish 中似乎存在一个错误,其中基于纯注释的 EJB 不使用基于容器的身份验证。

我正在尝试在 GlassFish jira 上记录一个错误,详细说明:http: //java.net/jira/browse/GLASSFISH-18096

于 2012-01-02T22:35:15.580 回答