2011-12-21 45 views
1

我爲遺留系統創建了自己的JCA-> EIS適配器。我在連接到舊系統時遇到身份驗證問題。在GlassFish中,在編寫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),您將返回一組帶有空白字符串的憑證。

回答

1

在JDBC RA(或最近使用的ActiveMQ RA)中,您在資源適配器屬性(ra.xml中的config-property)中設置了用戶名和密碼。您可能希望以類似的方式在您的資源適配器中實現它。

+0

是的,這是一種選擇,而我們最初去這條路線。但是,它以明文形式存儲密碼。 – 2011-12-22 19:57:19

+0

這不是我希望的解決方案,但這是我們實施的。 GlassFish似乎無法在控制檯中爲resoruce設置默認主體。你可以在一個綁定文件中指定它,編譯成你的戰爭/耳朵。 – 2011-12-28 15:10:55

0

事實證明,很有可能在不使用ra.xml中的config-property的情況下執行此操作。訣竅是,你必須使用ejb-jar.xml。 GlassFish似乎存在一個錯誤,其中基於Pure註釋的EJB不使用基於容器的身份驗證。

我試圖得到一個錯誤記錄了在GlassFish的JIRA詳述此:http://java.net/jira/browse/GLASSFISH-18096

+0

原來我是對的!該錯誤報告已被接受,並將在GlassFish 3.1.2和4.0中修復 – 2012-01-05 20:57:32

相關問題