[英]Client application to get the roles of a logged in user (JAAS)
我有以下代碼用於運行Java(SE)應用程序(不在服務器上),其中登錄應使用運行JAAS身份驗證的現有JBoss服務器(我綁定到4.2.3)完成。 我從一個簡單的控制台應用程序開始執行登錄,然后將此功能集成到應用程序中。
我使用一個片段 - 在這里找到 - 來執行登錄:
JaasJbossConfiguration.activateConfiguration();
UsernamePasswordHandler handler =
new UsernamePasswordHandler("userName", "passWord");
LoginContext lc = new LoginContext("myrealm", handler);
try {
lc.login();
} catch (LoginException e) {
// Authentication failed.
}
這就像一個魅力。 現在我想擴展我的應用程序並僅允許特殊角色的用戶訪問。 有沒有辦法從Java應用程序端獲取用戶角色或僅允許那些用戶進行身份驗證?
@RolesAllowed
) EJBContext.getCallerPrincipal()
和EJBContext.isUserInRole()
HttpServletRequest.getRemoteUser()
和HttpServletRequest.isUserInRole()
無論如何,請查看登錄模塊的源代碼(例如: DatabaseServerLoginModule
)。 然后編寫一個執行相同操作的EJB(關於角色查找),並將角色列表返回給獨立應用程序。
按照以下步驟使用容器(主要是JAAS)提供的JEE安全性。 優點是,您可以通過配置將身份驗證和授權更改為任何新技術,而不會影響應用程序的其他部分。 我舉一個使用JBoss AS的例子
在web.xml中添加安全性約束
Web資源/ * ROLE_ADDUPDATE ROLE_SEARCH ROLE_ADMIN ROLE_ADMIN ROLE_ADDUPDATE ROLE_SEARCH
在jboss-web.xml中添加Jboss安全域名
java:/ jaas / other true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.