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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

servlet 认证,授权

發布時間:2024/4/17 编程问答 86 豆豆
生活随笔 收集整理的這篇文章主要介紹了 servlet 认证,授权 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.csdn.net/linshizhan/article/details/7792707

?servlet安全分為四類:認證,授權,數據完整性,機密性。

? ? ?有時候我們的某個網頁,可能不允許所有人查看,如有些機密消息只有高級會員查看,這時候我們該如何處理?我們怎么判斷訪問網頁的這個人就是本人,而不是其他人冒充的呢?

? ? servlet中的認證和授權就能解決這個問題,認證就是驗證是否是本人,驗證是否是本人的方法就是能否輸入正確的用戶名和密碼。授權就是用戶賬戶和密碼匹配后,查看該用戶的角色,是否有查看相關資源的權限。

? ? 在tomcat中conf文件夾下tomcat-users.xml中,我們可以定義角色 和相應賬戶的賬戶名,密碼,和角色信息。

? ?

[html] view plaincopyprint?
  • <tomcat-users>??
  • ???<role?rolename="member"/>??
  • ???<role?rolename="guest"/>??
  • ???<user?username="shizhan"?password="shizhan"?roles="member"/>??
  • ???<user?username="xxx"?password="xxx"?roles="guest"/>??
  • </tomcat-users>??
  • <tomcat-users><role rolename="member"/><role rolename="guest"/><user username="shizhan" password="shizhan" roles="member"/><user username="xxx" password="xxx" roles="guest"/> </tomcat-users>

    ?

    ? ?例如上面我們聲明了member和guest兩個角色。

    ? ?并且聲明了兩個用戶,shizhan和xxx,角色分別為member和guest。

    ? ?在web.xml中,我們可以通過?<security-role>把我們定義的角色告訴web應用。

    ? ?

    [html] view plaincopyprint?
  • <security-role>??
  • ????<role-name>member</role-name>??
  • ??</security-role>??
  • ????
  • ?<security-role>??
  • ?????<role-name>guest</role-name>??
  • ?</security-role>??
  • <security-role><role-name>member</role-name></security-role><security-role><role-name>guest</role-name></security-role>


    ?

    ? ? 例如現在我們要對url為/TestSafeLogin的servlet進行認證和授權,可以這么聲明

    ? ? ?

    [html] view plaincopyprint?
  • <security-constraint>??
  • ??????<web-resource-collection>??
  • ?????????<web-resource-name>demo</web-resource-name>??
  • ?????????<url-pattern>/TestSafeLogin</url-pattern>??
  • ?????????<http-method>GET</http-method>??
  • ??????????<http-method>POST</http-method>??
  • ??????</web-resource-collection>??
  • ??????<auth-constraint>??
  • ????????<role-name>member</role-name>??
  • ??????</auth-constraint>??
  • ??????<user-data-constraint>??
  • ??????????<transport-guarantee>CONFIDENTIAL</transport-guarantee>??
  • ??????</user-data-constraint>??
  • ??</security-constraint>??
  • <security-constraint><web-resource-collection><web-resource-name>demo</web-resource-name><url-pattern>/TestSafeLogin</url-pattern><http-method>GET</http-method><http-method>POST</http-method></web-resource-collection><auth-constraint><role-name>member</role-name></auth-constraint><user-data-constraint><transport-guarantee>CONFIDENTIAL</transport-guarantee></user-data-constraint></security-constraint>


    ?

    ? ??<web-resource-name>demo</web-resource-name>這個標簽沒有實質作用。

    ? ??<url-pattern>/TestSafeLogin</url-pattern>請求哪個servlet必須進行驗證。

    ? ???<http-method>GET</http-method> ?<http-method>POST</http-method>請求這個servlet的get和post請求才進行驗證。

    ? ?? ?<auth-constraint>
    ? ? ? ? ? ? ?<role-name>member</role-name>
    ? ? ? </auth-constraint> 表示只有會員這個角色才能查看。

    ? ? ?? <user-data-constraint>
    ? ? ? ? ? ? <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    ? ? ? </user-data-constraint>表示傳輸用戶名和密碼的時候,利用https協議進行加密傳輸。

    ? ? 上面定義了只有會員的角色才能對/TestSafeLogin這個資源進行get和post請求,而且用戶名和密碼傳輸過程中使用https協議進行傳輸。

    ? ? 可是當我們訪問了這個資源后,容器利用什么方式要求用戶輸入用戶名和密碼呢?

    ? ? 這里有四種認證方式:

    ? ? 1:基本認證(采用base64編碼)

    ? ? 2:摘要(digest)認證

    ? ? 3:客戶證書(client-cert)是以一種非常安全的形式進行傳輸登錄信息,使用了公共密鑰證書,缺點是客戶必須有證書才能登錄你的系統。

    ? ? 4:表單認證(form),可以根據合法的html建立登錄表單,四種認證中,表單認證是最不安全的。

    ? ? 下面我們以表單認證來演示我們的例子。在web.xml中配置

    ? ??

    [html] view plaincopyprint?
  • <login-config>??
  • ????<auth-method>FORM</auth-method>??
  • ????<form-login-config>??
  • ???????<form-login-page>/login.html</form-login-page>??
  • ???????<form-error-page>/loginerror.html</form-error-page>??
  • ????</form-login-config>??
  • </login-config>??
  • <login-config><auth-method>FORM</auth-method><form-login-config><form-login-page>/login.html</form-login-page><form-error-page>/loginerror.html</form-error-page></form-login-config></login-config>

    ? 表示需要客戶輸入用戶名和密碼的時候,跳轉到login.html,當輸入錯誤的時候跳轉到loginerror.html,并且以表單的方式提交。

    ? ?下面看看login.html

    ? ?

    [html] view plaincopyprint?
  • <!DOCTYPE?html>??
  • <html>??
  • ??<head>??
  • ????<title>login.html</title>??
  • ??</head>??
  • ????
  • ??<body>??
  • ???????
  • ?????<form?method="post"?action="j_security_check">??
  • ????????????????????用戶名<input?type="text"??name="j_username"/><br/>??
  • ????????????????????密碼??<input?type="text"??name="j_password"/><br/>??
  • ??????????<input?type="submit"?value="登錄"/>??
  • ?????</form>??
  • ??</body>??
  • </html>??
  • <!DOCTYPE html> <html><head><title>login.html</title></head><body><form method="post" action="j_security_check">用戶名<input type="text" name="j_username"/><br/>密碼 <input type="text" name="j_password"/><br/><input type="submit" value="登錄"/></form></body> </html>


    ?

    ? ?其中action的值等于j_security_check,用戶名的name是j_username,密碼的name是j_password,這些都是規定好的,不可改變。

    ? ?既然表單認證是最不安全的,那么怎么保證我們的信息傳輸的安全性呢?

    ? ?其實java ee規范中有傳輸層的安全性規范,我們可以使用

    ? ? ?<user-data-constraint>
    ? ? ? ? ? ? <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    ? ? ? </user-data-constraint>來進行配置,上面我們已經配置過了,他使用的是ssl協議進行加密。

    ? ?現在一切都準備好了,我們還必須對tomcat配置ssl協議,其實就是為我們的服務器生成一個證書,大家可以參考網上的資料。

    ? 完畢。

    ?

    總結

    以上是生活随笔為你收集整理的servlet 认证,授权的全部內容,希望文章能夠幫你解決所遇到的問題。

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