日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

jboss5.1安全性配置_使用Java EE安全性和JBoss AS 7.x保护JSF应用程序的安全

發布時間:2023/12/3 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jboss5.1安全性配置_使用Java EE安全性和JBoss AS 7.x保护JSF应用程序的安全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jboss5.1安全性配置

企業應用程序的一個常見要求是在登錄頁面后面保護所有JSF頁面。 有時,您甚至希望在應用程序內部具有保護區,只有擁有特定角色的用戶才能訪問這些保護區。 Java EE標準附帶了實現受某些安全性約束保護的Web應用程序所需的所有方法。 在此博客文章中,我們希望開發一個簡單的應用程序,以演示這些方法的用法,并展示如何為兩個不同的角色構建完整的JSF應用程序。 由于該解決方案乍看之下可能會直截了當,因此有一些陷阱需要注意。

我們要關心的第一點是應用程序的文件夾布局。 我們有三種不同的頁面:

  • 所有用戶都應該可以訪問登錄頁面和錯誤頁面。
  • 我們有一個主頁,只有經過身份驗證的用戶才能訪問。
  • 我們有一個受保護的頁面,該頁面僅對角色protected-role的用戶可見。

因此,將這三種類型的頁面放在三個不同的文件夾中:根文件夾src / main / webapp,文件夾src / main / webapp / pages和受保護的頁面位于src / main / webapp / pages / protected:

web.xml文件是定義我們要使用的角色以及如何將某些URL模式的可訪問性映射到這些角色的位置:

<security-constraint><web-resource-collection><web-resource-name>pages</web-resource-name><url-pattern>/pages/*</url-pattern><http-method>PUT</http-method><http-method>DELETE</http-method><http-method>GET</http-method><http-method>POST</http-method></web-resource-collection><auth-constraint><role-name>security-role</role-name><role-name>protected-role</role-name></auth-constraint> </security-constraint> <security-constraint><web-resource-collection><web-resource-name>protected</web-resource-name><url-pattern>/pages/protected/*</url-pattern><http-method>PUT</http-method><http-method>DELETE</http-method><http-method>GET</http-method><http-method>POST</http-method></web-resource-collection><auth-constraint><role-name>protected-role</role-name></auth-constraint> </security-constraint><security-role><role-name>security-role</role-name> </security-role> <security-role><role-name>protected-role</role-name> </security-role>

如您所見,我們定義了兩個角色:security-role和protected-role。 匹配模式/ pages / *的URL僅可由擁有角色security-role和protected-role的用戶訪問,而/ pages / protected / *下的頁面僅限于具有protected-role角色的用戶。

您可能會偶然發現的另一點是歡迎頁面。 乍一看,您希望將登錄頁面指定為歡迎頁面。 但這不起作用,因為Servlet容器的登錄模塊會自動將所有未經授權的訪問重定向到登錄頁面。 因此,我們將應用程序的主頁指定為歡迎頁面。 這已經是一個受保護的頁面,但是當用戶直接調用其URL時,它將自動重定向到登錄頁面。

<welcome-file-list><welcome-file>pages/home.xhtml</welcome-file> </welcome-file-list>

現在我們幾乎完成了web.xml頁面。 我們要做的就是定義身份驗證方法以及登錄頁面和錯誤頁面,以防用戶輸入無效的憑據時顯示。 必須引起注意的是,這兩個頁面均不包含受保護的URL(例如CSS或JavaScript文件),否則,甚至禁止訪問這兩個頁面,并且用戶會看到Application Server特定的錯誤頁面。

<login-config><auth-method>FORM</auth-method><form-login-config><form-login-page>/login.xhtml</form-login-page><form-error-page>/error.xhtml</form-error-page></form-login-config> </login-config>

在將應用程序部署到JBoss Application Server的過程中,我們提供了一個名為jboss-web.xml的文件,該文件將我們的應用程序連接到安全域:

<?xml version="1.0" encoding="UTF-8"?> <jboss-web><security-domain>java:/jaas/other</security-domain> </jboss-web>

在standalone.xml中配置了“其他”安全域。 默認配置要求用戶傳遞“ RealmUsersRoles”登錄模塊,該模塊從配置文件夾中的兩個文件application-users.properties和application-roles.properties獲取其用戶和角色定義。 您可以使用提供的添加用戶腳本將新用戶添加到該領域:

What type of user do you wish to add?a) Management User (mgmt-users.properties)b) Application User (application-users.properties) (a): bEnter the details of the new user to add. Realm (ApplicationRealm) : Username : bart Password : Re-enter Password : What roles do you want this user to belong to? (Please enter a comma separated list, or leave blank for none) : security-role,protected-role About to add user 'bart' for realm 'ApplicationRealm' Is this correct yes/no? yes

在這里重要的是選擇正確的領域(ApplicationRealm),因為默認情況下,在standalone.xml中為“其他”登錄模塊配置了該領域。 這也是您以逗號分隔列表的形式提供用戶所擁有的角色的地方。

<form method="POST" action="j_security_check" id=""><h:panelGrid id="panel" columns="2" border="1" cellpadding="4" cellspacing="4"><h:outputLabel for="j_username" value="Username:" /><input type="text" name="j_username"/><h:outputLabel for="j_password" value="Password:" /><input type="password" name="j_password"/><h:panelGroup><input type="submit" value="Login"/></h:panelGroup></h:panelGrid> </form>

下一步是實現一個簡單的登錄表單,該表單將其數據提交到登錄模塊。 注意輸入字段的ID以及表單的操作。 這樣,表單就被發布到登錄模塊,該模塊從請求中提取輸入的用戶名和密碼。 JSF開發人員可能想知道為什么我們使用標準HTML表單而不是元素。 這樣做的原因是JSF表單元素跨越了自己的名稱空間,因此輸入字段的ID帶有表單ID的前綴(并且此ID不能為空)。

如果用戶已通過登錄表單,我們將向他顯示一個主頁。 但是,只有擁有保護角色角色的用戶才能訪問受保護頁面的鏈接。 這可以通過以下呈現條件來完成:

<h:link value="Protected page" outcome="protected/protected" rendered="#{facesContext.externalContext.isUserInRole('protected-role')}"/>

最后但并非最不重要的一點是,我們需要注銷功能。 對于這種情況,我們實現了一個簡單的后備bean,類似于以下實例,它使用戶的會話無效并將其重定向回登錄頁面:

@Named(value = "login") public class Login {public String logout() {FacesContext.getCurrentInstance().getExternalContext().invalidateSession();return "/login";} }
  • 像往常一樣,完整的源代碼可以在github上找到。

參考: Martin's Developer World博客上的JCG合作伙伴 Martin Mois 提供了Java EE安全性和JBoss AS 7.x保護JSF應用程序的安全 。

翻譯自: https://www.javacodegeeks.com/2014/01/securing-a-jsf-application-with-java-ee-security-and-jboss-as-7-x.html

jboss5.1安全性配置

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的jboss5.1安全性配置_使用Java EE安全性和JBoss AS 7.x保护JSF应用程序的安全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。