2011-06-03 50 views
2

假設follwing方法:有沒有Java EE的方式來改變用戶?

Test getTest() 
{ 
    Properties props = new Properties(); 
    props.put(javax.naming.Context.SECURITY_PRINCIPAL, "OtherUser"); 
    props.put(javax.naming.Context.SECURITY_CREDENTIALS, "OtherPassword"); 
    InitialContext ic = new InitialContext(props); 
    return (TestHome)PortableRemoteObject.narrow(ic.lookup("ejb/Test"), 
      TestHome.class).create(); 
} 

如果此方法(在EJB)從客戶端使用用戶「MYUSER」稱爲我想它與不同的呼叫者主要返回EJB。然後客戶的測試呼叫將被記錄爲來自「其他用戶」。即我已經程序化地改變了給定EJB的客戶端調用者主體。

但是,我在Java EE規範中找不到任何文本,儘管它適用於我們當前的Java EE應用程序服務器(Sybase EAS 4.1),但我想問問您是否是Java EE標準方法或不。

回答

0

如果我得到這個權利,這應該通過多個方法調用將用戶名連接到EJB,在我看來這是一個狀態。我猜這個標準是用setUser(String name)方法創建一個有狀態SessionBean。在無狀態bean中,您必須在每個方法調用上傳遞userName(或屬性對象)。

1

A 標準處理登錄/註銷的方式是JAAS。我不知道是否可以公平地說它是標準,但是到目前爲止我使用的Java EE服務器(JBoss,Websphere)以及Sybase EAS顯然也支持它。例如,JBoss爲數據庫和LDAP提供了幾個預定義的登錄模塊,以及您不得不爲應用程序聲明式配置的內容。但是,通過實現相應的接口(javax.security.auth.spi.LoginModule),您也可以完全自由地編寫自己的登錄模塊。請參考the JAAS Reference Guide

關於你的代碼片段:我不知道這是否會在其他應用服務器上工作。這是EJB 1.1,因此非常古老。你一定要看看EJB 3.1,並考慮現代化你的應用程序。

+0

在Java EE中,JAAS並不是您可能認爲的整體安全框架。例如JBoss中的登錄模塊僅基於JAAS。使用Java EE進行登錄/註銷的官方API是JASPIC。這是來自Java EE中許多安全API的人員中的一篇相當不錯的文章:http://java.sys-con.com/node/1002315 – 2013-05-20 07:46:29

相關問題