1. 程式人生 > >Java for Web學習筆記(一四二)Spring security準備(3)初窺

Java for Web學習筆記(一四二)Spring security準備(3)初窺

瞭解Spring Security的基本知識

完全J2EE的web container也能提供完整的安全框架,但tomcat不是。Spring Security可以使用JDBC,或者我們的服務或倉庫來認證使用者,也提供了內建的對微軟Active Derectory,Jasig的CAS(Central Authentication Service),JAAS(Java Authentication and Authorization Service),LDAP和OpenID的認證和授權。使用Spring Security要求客戶端有額外的處理。

  • org.springframework.security.core.Authentication 繼承了Principal。
  • org.springframework.security.core.GrantedAuthority 提供授權。可以支援role和activity授權。如果使用LDAP或者Active Directory進行認證,Spring Security會自動使用者歸屬的directory groups填入Authentication 的授權中。
  • org.springframework.security.authentication.AuthenticationProvider,是為我們應用提供認證服務的提供者。AuthenticationProvider可以有Active Directory, CAS, JAAS, LDAP, OpenID, JDBC多個實現,也可以自定義。

使用Spring Security的授權服務

在Spring Security中,有集中使用授權的方式。當中最好的可能就是使用全域性方法安全標記,它可以標記在service的方法上,Spring Security確保帶有合適的GrantedAuthority(s)的Authentication來執行方法。

還可以在Spring Security配置中定義方法攔截規則。採用標記還是採用xml配置視我們程式碼的複雜性,如果應用比較複雜,可能定義方法連線規則比標記更為簡單,另外,修改規則,不需要重新編譯。

還可以使用URL攔截跪著,這是最容易實現的,但缺點不少,例如我們只能用於web應用,其他的不行;有例如如果我們有多種使用者介面(web,REST,SOAP)我們需要為每個使用者介面進行定義,這容易造成規則的不一致,從而產生授權漏洞。

一般來講,我們需要使用標記或者配置規則,加上針對login和logout定義一些URL安全規則。我們將在後面學習到。

配置Spring Security

Spring安全配置和Spring框架配置緊密結合,大量使用ApplicationContext來管理它的安全上下文。

設定Spring Security,可以使用XML,Java或者混合配製。在一個應用上下文中可以有多個Spring Security上下文的配置。具體後面學習。

相關推薦

Java for Web學習筆記Spring security準備2授權

訪問的範圍和許可權屬於授權。 Principals和Identities 就Java而言,很方便利用java.security.Principal。Principal至少會包含已被認證的使用者identity,例如使用者名稱,還可能有其他資訊。此外還可以保護使用者的授權資

Java for Web學習筆記Spring security準備3

瞭解Spring Security的基本知識 完全J2EE的web container也能提供完整的安全框架,但tomcat不是。Spring Security可以使用JDBC,或者我們的服務或倉庫來認證使用者,也提供了內建的對微軟Active Derectory,Jasi

Java for Web學習筆記:JSP1何為JSP

使用JSP 通java程式碼來編寫HTML很是繁瑣,通過使用JSTL(JSP標準標籤庫,JavaServer Pages™ Standard Tag Library),通過JSP來更便攜的實現。對JSP的支援Maven中包括javax.servlet.jsp-api、javax.servlet.jsp.js

Java for Web學習筆記對映8@ElementCollection

說明 在前面我們學習了OneToOne、OneToMany、ManyToOne,將資料庫中不同表格的關聯轉換為spring中不同entity的關聯。但是在不少場景中,我們希望在一個entity的檢視中同檢視到這幾個表的資訊,而無需通過entity之間的關聯。 在這個小例子

Java for Web學習筆記Java EE的介紹

  最近有個專案,當中涉及到Java Servlet,專案已經進行了一段日子,最近因為有重大需求調整,需要對架構重新進行梳理,一看,基本上哭笑不得,有不少地方真是黑色幽默,怎麼會這樣呢。   當在這過程中,也引發了我興趣,畢竟之前沒有系統地瞭解過。在網上找到了一本書professional Java for

Java for Web學習筆記一一:再談Entity對映4動態表格建立

如果這個不確定表格也需要我們的war來建立,如何實現。create table的原生SQL,entityManager是無法執行的,因為這不是可以回滾的事務。這種情況,我們需要: 捕獲表格不存在的異常 從原始的Connection中實現表格建立。獲取Connection能否從

Java for Web學習筆記三八篇外之資料庫的ACID和JPA2JPA

在測試中,我們發現在一個JPA事務中: Spring Data的寫SQL是在最後commit前發出,這最大程度地縮短了寫操作和commit之間的時間。 對相同的ID的讀,JPA只從資料庫中讀取一次。 從資料庫中獲取entity,修改entity的資料,即使最後沒有執行s

Java for Web學習筆記:Servlet2HelloServlet

繼承關係: javax.servlet.GenericServlet –》javax.servlet.http.HttpServlet。 405返回 如果我們不重寫Servlet的doGet而採用HTTP GET的方式,將返回405 將返回405 Method Not Allowed。 如果我們重寫do

Java for Web學習筆記:JSTL1使用JSTL

在前面已經使用過JSTL,例如<c:url>,fn是JSTL的functionlibrary,而c是JSTL的tag library。使用它們,我們要告知解析器,如下: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core

Java for Web學習筆記十九:Session3Session Listener

Session Listener 可以通過Listner來監聽session的變化,這就是所謂的publish and subscribe模型。這是一種訊息資訊釋出一方叫釋出者,資訊的接收方叫訂閱者,實際也是事件驅動的高大上說法,訂閱某個事件,然後觸發處理。這種方式最大的作用是將進行session變化以及s

Java for Web學習筆記:Servlet6doGet()和doPost()是執行緒還是佇列

做一個小實驗,程式碼如下: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ for(i

Java for Web學習筆記九十:訊息和叢集5利用websocket實現訂閱和釋出

叢集中的訂閱和釋出 利用spring framework在本app內的訂閱和釋出十分簡單。當我們系統越來越複雜的時候,我們需要向其他app釋出訊息。本學習將給出一個通過websocket來實現不同app之間訊息的訂購和釋出。 在小例子中,我們在所有節點之間都建立webSoc

Java for Web學習筆記:Servlet7上傳檔案

上傳檔案 Servlet的引數設定 採用annotation方式如下: @WebServlet( name = "TicketServlet", urlPatterns = {"/tickets"}, loadOnStartup = 1 ) /* MultipartConfig配置了本Servlet

Java for Web學習筆記五十:Log2配置log4j2

相關maven <!-- log4j-api提供logging的API。這是log4j2中唯一需要在compile時加入,含有你所需的所有類 --> <dependency> <groupId>org.apache.loggin

Java for Web學習筆記三五:自定義tag3TLDS和Tag Handler

JSTL的TLD   這是JSTL採用的方式。TLD(Tag Library Descriptor)描述tag和function,以及具體執行的java程式碼tag handler。Tag Handler是javax.servlet.jsp.tagext.Tag或javax.servlet.jsp.tage

Java for Web學習筆記一二三:搜尋5MySQL全文索引

小例子我們在表格Ticket和TicketComment中加入了fulltext key。小例子在Ticket的Subject或Body,以及在TicketComment的Body檢索內容,按分頁方式顯示出來,同時顯示關聯分數,並按關聯分數降序排列。 -- Ticket中隊S

Java for Web學習筆記三九:Filter1用途、定義和順序

Filter的用途 Filter可以用於以下方面: 記錄request和response的log進行認證和授權進行壓縮和加壓,非HTTPS的加密和解密錯誤處理。對於tomcat,出現錯誤通常會給出一個500的頁面,還有錯誤診斷資訊,對於一個公眾服務,這些診斷資訊可能會向黑客

Java for Web學習筆記:Servlet5初始化引數

Context Init引數 在web.xml中可以基於整個上下文進行設定,在web app內各個Servlet都可以獲取。 <context-param> <param-name>settingOne</param-name> <param-

Java Web 學習筆記之十:RestEasy新增Filter過濾器預處理請求

RestEasy新增Filter過濾器預處理請求 前提 定義filter過濾器,預處理http請求 在resteasy框架下配置filter 實現功能 攔截http請求,獲取請求頭中的

java之jvm學習筆記(訪問控制器)

                 這一節,我們要學習的是訪問控制器,在閱讀本節之前,如果沒有前面幾節的基礎,對你來說可能會比較困難! 知識回顧:                   我們先來回顧一下前幾節的內容,在筆記三的時候我們學了類裝載器,它主