Java學習筆記
來源:互聯網
上載者:User
筆記 身分識別驗證機制(authentication):確定一個使用者具有自己聲稱的那個身份
應用程式關心使用者是否通過了驗證而不關心是通過何種方式進行的驗證???
授權(存取控制:authorization):★堅持使用<security-role>來聲明所有角色
使用者資訊的提供:
首選由容器提供的身分識別驗證:(具有靜態特徵;效率?)
a.HTTP基本驗證(BASIC):usr/pwd通過Base64編碼後加入某個請求首部
b.HTTP摘要身分識別驗證(DIGEST):(HTTP1.1支援)伺服器端驗證用戶端發來的MD5摘要(包括伺服器端發來的含有時間戳記、請求資源、伺服器標識的nonce)
c.HTTPS客戶身分識別驗證(CLIENT-CERT):要求用戶端的SSL
d.表單型驗證(FORM):servlet規範專屬,由servlet容器自身來實現,明文傳輸(具體實現依賴<login-config>元素中<form-login-config>的設定)
存取控制類型由Web應用程式配置描述符中定義(屬於servlet規範):/WEB-INF/web.xml
使用者資訊的擷取:request對象提供方法獲得驗證後的使用者資訊(Servlet 2.2 API)
應用程式控制的身分識別驗證:(動態驗證模型),口令仍以明文傳送
自訂行為<oar:validateSession name="xxx" loginPage="login.jsp" errorMsg="xxx" />必須被放在應用程式中所有受保護頁面的開始:
包括3個必需屬性:name 由驗證頁面建立的Bean對象的名稱
login 找不到該對象名稱時的轉寄URL
errorMsg 在轉寄的URL頁面上顯示的訊息
作為POST請求對象的帶有存取控制的頁面需要對POST方法進行驗證:
<% if (!request.getMethod().equals("POST")) { %>
<ora:redirect page="main.jsp" />
<% } %>
避免使用者重新提交到期表單
使用HTTPS驗證將使其他三種認證失效:無論是只對伺服器進行認證還是對用戶端和伺服器端都進行認證,串連都是經過加密的
對於cookie的處理:
<ora:addCookie maxAge="2592000"/>表示cookie儲存30天(30*24*3600s)
<ora:addCookie maxAge="0"/>表示cookie立即失效