2012-01-30 133 views
2

我已經使用部署到Glassfish 3.1.1的JAX-WS設置了一個Web服務。我設法使用客戶端證書(相互身份驗證)來設置SSL,但我無法弄清楚如何進行適當的授權。我喜歡爲只讀訪問設置角色,以更新和刪除數據。Glassfish Web服務授權

Java EE 6教程和glassfish安全指南狀態,指出不能將用戶添加到證書領域Java EE Tutorial。那麼在使用相互認證時授權用戶的正確方法是什麼?我必須在頂部使用用戶名和密碼嗎?

回答

1

http://docs.oracle.com/cd/E18930_01/html/821-2435/ggktf.html#gksdc

public class CertificateLM extends AppservCertificateLoginModule 
{ 

    protected void authenticateUser() throws LoginException 
    { 
     // get the DN from the X500Principal. 
     String dname = getX500Principal().getName(); 

     // retrieve the groups of the DN from an external source, e.g. from LDAP 
     String[] groups = getGroupsFromLDAP(dname); 

     if(groups != null) { 
      commitUserAuthentication(groups); 
     } 
     else { 
      throw new LoginException("DN is unknown."); 
     } 
    } 
} 
+0

感謝看看,這看起來像一個工作方法。我希望能夠利用Java EE和glassfish提供的基於角色的訪問控制(使用安全註釋,用戶/組管理)的解決方案。這就是爲什麼我實際上使用基本身份驗證和客戶端證書。 – TPete 2012-04-23 14:06:33

+0

上面的剪切插入應用程序服務器的JAAS層。 您的JEE應用程序仍然可以使用標準JEE安全性,如@annotations。 – PA314159 2012-04-24 11:29:09

+0

我明白了。這也可以鏈接到用戶帳戶管理,以便不需要外部系統(如上面的LDAP)? – TPete 2012-04-24 11:50:37