日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Realm 配置

發布時間:2025/3/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Realm 配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快速入門

本文檔介紹了如何借助一個“數據庫”來配置 Tomcat ,從而實現容器管理安全性。所要連接的這種數據庫含有用戶名、密碼以及用戶角色。你只需知道的是,如果使用的 Web 應用含有一個或多個?<security-constraint>?元素,<login-config>?元素定義了用戶驗證的必需細節信息。如果你不打算使用這些功能,則可以忽略這篇文檔。

關于容器管理安全性的基礎知識,可參考?Servlet Specification (Version 2.4)?中的第 12 節內容。

關于如何使用 Tomcat 中的單點登錄(用戶只需驗證一次,就能夠登錄一個虛擬主機的所有 Web 應用)功能,請參看該文檔。

概述

什么是 Realm

Realm(安全域)其實就是一個存儲用戶名和密碼的“數據庫”再加上一個枚舉列表。“數據庫”中的用戶名和密碼是用來驗證 Web 應用(或 Web 應用集合)用戶合法性的,而每一合法用戶所對應的角色存儲在枚舉列表中。可以把這些角色看成是類似 UNIX 系統中的 group(分組),因為只有能夠擁有特定角色的用戶才能訪問特定的 Web 應用資源(而不是通過對用戶名列表進行枚舉適配)。特定用戶的用戶名下可以配置多個角色。

雖然 Servlet 規范描述了一個可移植機制,使應用可以在?web.xml?部署描述符中聲明它們的安全需求,但卻沒有提供一種可移植 API 來定義出 Servlet 容器與相應用戶及角色信息的接口。然而,在很多情況下,非常適于將 Servlet 容器與一些已有的驗證數據庫或者生產環境中已存在的機制“連接”起來。因此,Tomcat 定義了一個 Java 接口(org.apache.catalina.Realm),通過“插入”組件來建立連接。提供了 6 種標準插件,支持與各種驗證信息源的連接:

  • JDBCRealm——通過 JDBC 驅動器來訪問保存在關系型數據庫中的驗證信息。
  • DataSourceRealm——訪問保存在關系型數據庫中的驗證信息。
  • JNDIRealm——訪問保存在 LDAP 目錄服務器中的驗證信息。
  • UserDatabaseRealm——訪問存儲在一個 UserDatabase JNDI 數據源中的認證信息,通常依賴一個 XML 文檔(conf/tomcat-users.xml)。
  • MemoryRealm——訪問存儲在一個內存中對象集合中的認證信息,通過 XML 文檔初始化(conf/tomcat-users.xml)。
  • JAASRealm——通過 Java 認證與授權服務(JAAS)架構來獲取認證信息。

另外,還可以編寫自定義?Realm?實現,將其整合到 Tomcat 中,只需這樣做:

  • 實現?org.apache.catalina.Realm?接口。
  • 將編譯好的 realm 放到 $CATALINA_HOME/lib 中。
  • 聲明自定義 realm,具體方法詳見“配置 Realm”一節。
  • 在 MBeans 描述符文件中聲明自定義realm。

配置 Realm

在詳細介紹標準 Realm 實現之前,簡要了解 Realm 的配置方式是很關鍵的一步。大體來說,就是需要在conf/server.xml?配置文件中添加一個 XML 元素,如下所示:

<Realm className="... class name for this implementation"... other attributes for this implementation .../>

<Realm>?可以嵌入以下任何一種?Container?元素中。Realm 元素的位置至關重要,它會對 Realm 的“范圍”(比如說哪個 Web 應用能夠共享同一驗證信息)有直接的影響。

  • <Engine>?元素?內嵌入該元素中的這種 Realm 元素可以被所有虛擬主機上的所有?Web 應用所共享,除非該 Realm 元素被內嵌入下屬?<Host>?或?<Context>?元素的 Realm 元素所覆蓋。
  • <Host>?元素?內嵌入該元素中的這種 Realm 元素可以被這一虛擬主機上的所有?Web 應用所共享。除非該 Realm 元素被內嵌入下屬?<Context>?元素的 Realm 元素所覆蓋。
  • <Context>?元素?內嵌入該元素中的這種 Realm 元素只能被這一 Web 應用所使用。

常用特性

摘要式密碼

對于每種標準?Realm?實現來說,用戶的密碼默認都是以明文方式保存的。在很多情況下,這種方式都非常糟糕,即使是一般的用戶也能收集到足夠的驗證信息,從而以其他用戶的信息成功登錄。為了避免這種情況的發生,標準?Realm?實現支持一種對用戶密碼進行摘要式處理的機制,它能以無法輕易破解的形式對存儲的密碼進行加密處理,同時保證Realm?實現仍能使用這種加密后的密碼進行驗證。

在標準的 Realm 驗證時,會將存儲的密碼與用戶所提供的密碼進行比對,這時,我們可以通過指定?<Realm>?元素中的?digest?屬性來選擇摘要式密碼。該屬性值必須是一種java.security.MessageDigest?類所支持的摘要式算法(SHA、MD2、或 MD5)。當你選擇該屬性值時,存儲在 Realm 中的密碼內容必須是明文格式,隨后它將被你所指定的算法進行摘要式加密。

在調用 Realm 的?authenticate()?方法后,用戶所提供的明文密碼同樣也會利用上述你所指定的加密算法進行加密,加密結果與 Realm 的返回值相比較。如果兩者相等,則表明原始密碼的明文形式更用戶所提供的密碼完全等同,因此該用戶身份驗證成功。

可以采用以下兩種比較便利的方法來計算明文密碼的摘要值:

  • 如果應用需要動態計算摘要式密碼,調用?org.apache.catalina.realm.RealmBase?類的靜態?Digest()?方法,傳入明文密碼和摘要式算法名稱及字符編碼方案。該方法返回摘要式密碼。
  • 如果想執行命令行工具來計算摘要式密碼,只需執行:
    CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} {cleartext-password}
    標準輸出將返回明文密碼的摘要式形式。

如果使用 DIGEST 驗證的摘要式密碼,用來生成摘要密碼的明文密碼則將有所不同,而且必須使用一次不加鹽的 MD5 算法。對應到上面的范例,那就是必須把?{cleartext-password}?替換成?{username}:{realm}:{cleartext-password}。再比如說,在一個開發環境中,可能采用這種形式:testUser:Authentication required:testPassword。{realm}?的值取自 Web 應用?<login-config>?的?<realm-name>?元素。如果沒有在 web.xml 中指定,則使用默認的Authentication required。

若要使用非平臺默認編碼的用戶名和(或)密碼,則命令如下:

CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} -e {encoding} {input}

但需要注意的是,一定要確保輸入正確地傳入摘要。摘要返回?{input}:{digest}。如果輸入在返回時出現損壞,摘要則將無效。

摘要的輸出格式為?{salt}${iterations}${digest}。如果鹽的長度為 0,迭代次數為 1,則輸出將簡化為?{digest}。

CATALINA_HOME/bin/digest.[bat|sh]?的完整格式如下:

CATALINA_HOME/bin/digest.[bat|sh] [-a <algorithm>] [-e <encoding>][-i <iterations>] [-s <salt-length>] [-k <key-length>][-h <handler-class-name>] <credentials>
  • -a?用來生成存儲憑證的算法。如未指定,將使用憑證處理器(CredentialHandler)的默認值,如果認證處理器和算法均未指定,則使用默認值?SHA-512。
  • -e?指定用于任何必要的字節與字符間轉換的字符編碼方案。如未指定,使用系統默認的字符編碼方案?Charset#defaultCharset()。
  • -i?生成存儲的憑證時所使用的迭代次數。如未指定,使用 CredentialHandler 的默認值。
  • -s?生成并存儲到認證中的鹽的長度(字節)。如未指定,使用 CredentialHandler 的默認值。
  • -k?(生成憑證時,如果隨帶創建了)鍵的長度(位)。如未指定,則使用 CredentialHandler 的默認值
  • -h?CredentialHandler 使用的完整類名。如未指定,則輪流使用內建的憑證處理器(MessageDigestCredentialHandler,然后是?SecretKeyCredentialHandler),將使用第一個接受指定算法的憑證處理器。

范例應用

Tomcat 自帶的范例應用中包含一個受到安全限制保護的區域,使用表單式登錄方式。為了訪問它,在你的瀏覽器地址欄中輸入?http://localhost:8080/examples/jsp/security/protected/,并使用?UserDatabaseRealm?默認的用戶名和密碼進行登錄。

Manager 應用

如果你希望使用 Manager 應用在一個運行的 Tomcat 安裝上來部署或取消部署 Web 應用,那么必須在一個選定的 Realm 實現上,將?manager-gui?角色添加到至少一個用戶名上。這是因為 Manager 自身使用一個安全限制,要想在該應用的 HTML 界面中訪問請求 URI,就必須要有 manager-gui 角色。

出于安全性考慮,默認情況下,Realm 中的用戶名(比如使用?conf/tomcat-users.xml)沒有被分配 manager-gui 角色。因此,用戶起初無法使用這個功能,除非 Tomcat 管理員特意將這一角色分配給他們。

Realm 日志

Realm 的容器(Context、Host 及 Engine)所對應的日志配置文件將記錄?Realm?所記錄下的調試和異常信息。

標準 Realm 實現

JDBCRealm

簡介

JDBCRealm?是 Tomcat?Realm?接口的一種實現,它通過 JDBC 驅動程序在關系型數據庫中查找用戶。只要數據庫結構符合下列要求,你可以通過大量的配置來靈活地修改現有的表與列名。

  • 必須有一張用戶表(users table)。它包含著一個由?Realm?所能識別的所有合法用戶所構成的行。
  • 用戶表必須至少包含兩列(當然,如果現有應用確實需要,則同樣也可以包含更多的列):
    • 用戶名。當用戶登錄時,能被 Tomcat 識別的用戶名。
    • 密碼。當用戶登錄時,能被 Tomcat 所識別的密碼。該列中的值可能是明文,也可能是摘要式密碼,稍后詳述。
  • 必須有一張用戶角色表(user roles table)。該表包含一個角色行,包含著可能指定給特定用戶的每個合法角色。一個用戶可以沒有角色,也可以有一個或多個角色,這都是合法的。
  • 用戶角色表?至少應包含兩列(如果現有應用確實需要,則也可以包含更多的列):
    • 用戶名。Tomcat 所能識別的用戶名(與用戶表中指定的值相同)。
    • 用戶所對應的合法角色名。

快速入門

為了設置 Tomcat 從而使用 JDBCRealm,需要執行以下步驟:

  • 在數據庫中創建符合上述規范的表與列。
  • 配置一個 Tomcat 使用的數據庫用戶名與密碼,并且至少有只讀權限(Tomcat 永遠都不會去修改那些表中的數據)。
  • 將用到的 JDBC 驅動程序復制到?$CATALINA_HOME/lib?目錄中。注意只能識別 JAR 文件!
  • 在?$CATALINA_BASE/conf/server.xml?目錄中設置一個?<Realm>?元素。這一點下文將會詳細敘述。
  • 如果 Tomcat 處于運行狀態,則重啟它。
  • Realm 元素屬性

    如上所述,為了配置 JDBCRealm,需要創建一個?Realm?元素,并把它放在?$CATALINA_BASE/conf/server.xml?文件中。JDBCRealm 的屬性都定義在?Realm?配置文檔中。

    范例

    下面這個 SQL 腳本范例創建了我們所需的表(根據你所用的數據庫,可以相應修改其中的語法)。

    create table users (user_name varchar(15) not null primary key,user_pass varchar(15) not null );create table user_roles (user_name varchar(15) not null,role_name varchar(15) not null,primary key (user_name, role_name) );

    Realm?元素包含在默認的?$CATALINA_BASE/conf/server.xml?文件中(被注釋掉了)。在下面的范例中,有一個名為 authority 的數據庫,它包含上述創建的表,通過用戶名“dbuser”和密碼“dbpass”進行訪問。

    <Realm className="org.apache.catalina.realm.JDBCRealm"driverName="org.gjt.mm.mysql.Driver"connectionURL="jdbc:mysql://localhost/authority?user=dbuser&amp;password=dbpass"userTable="users" userNameCol="user_name" userCredCol="user_pass"userRoleTable="user_roles" roleNameCol="role_name"/>

    特別注意事項

    JDBCRealm 必須遵循以下規則:

    • 當用戶首次訪問一個受保護資源時,Tomcat 會調用這一?Realm?的?authenticate()?方法,從而使任何對數據庫的即時修改(新用戶、密碼或角色改變,等等)都能立即生效。
    • 一旦用戶認證成功,在登錄后,該用戶(及其相應角色)就將緩存在 Tomcat 中。(對于以表單形式的認證,這意味著直到會話超時或者無效才會過期;對于基本形式的驗證,意味著直到用戶關閉瀏覽器才會過期。)在會話序列化期間不會保存或重置緩存的用戶。對已認證用戶的數據庫信息進行的任何改動都不會生效,直到該用戶下次登錄。
    • 應用負責管理users(用戶表)和user roles(用戶角色表)中的信息。Tomcat 沒有提供任何內置功能來維護這兩種表。

    DataSourceRealm

    簡介

    DataSourceRealm?是 Tomcat?Realm?接口的一種實現,它通過一個 JNDI 命名的 JDBC 數據源在關系型數據庫中查找用戶。只要數據庫結構符合下列要求,你可以通過大量的配置來靈活地修改現有的表與列名。

    • 必須有一張用戶表(users table)。它包含著一個由?Realm?所能識別的所有合法用戶所構成的行。
    • 用戶表必須至少包含兩列(當然,如果現有應用確實需要,則同樣也可以包含更多的列):
      • 用戶名。當用戶登錄時,能被 Tomcat 識別的用戶名。
      • 密碼。當用戶登錄時,能被 Tomcat 所識別的密碼。該列中的值可能是明文,也可能是摘要式密碼,稍后詳述。
    • 必須有一張用戶角色表(user roles table)。該表包含一個角色行,包含著可能指定給特定用戶的每個合法角色。一個用戶可以沒有角色,也可以有一個或多個角色,這都是合法的。
    • 用戶角色表?至少應包含兩列(如果現有應用確實需要,則也可以包含更多的列):
      • 用戶名。Tomcat 所能識別的用戶名(與用戶表中指定的值相同)。
      • 用戶所對應的合法角色名。

    快速入門

    為了設置 Tomcat 從而使用 DataSourceRealm,需要執行以下步驟:

  • 在數據庫中創建符合上述規范的表與列。
  • 配置一個 Tomcat 使用的數據庫用戶名與密碼,并且至少有只讀權限(Tomcat 永遠都不會去修改那些表中的數據)。
  • 為數據庫配置一個 JNDI 命名的 JDBC DataSource。詳情可參考JNDI DataSource Example HOW-TO》應該鏈接至相應中文頁面》。
  • 在?$CATALINA_BASE/conf/server.xml?目錄中設置一個?<Realm>?元素。這一點下文將會詳細敘述。
  • 如果 Tomcat 處于運行狀態,則重啟它。
  • 范例

    下面這個 SQL 腳本范例創建了我們所需的表(根據你所用的數據庫,可以相應修改其中的語法)。

    create table users (user_name varchar(15) not null primary key,user_pass varchar(15) not null );create table user_roles (user_name varchar(15) not null,role_name varchar(15) not null,primary key (user_name, role_name) );

    在下面的范例中,有一個名為 authority 的 MySQL 數據庫,它包含上述創建的表,通過名為 “java:/comp/env/jdbc/authority” 的 JNDI 命名的 JDBC 數據源來訪問。

    <Realm className="org.apache.catalina.realm.DataSourceRealm"dataSourceName="jdbc/authority"userTable="users" userNameCol="user_name" userCredCol="user_pass"userRoleTable="user_roles" roleNameCol="role_name"/>

    特別注意事項

    使用 DataSourceRealm 時必須遵守下列規則:

    • 當用戶首次訪問一個受保護資源時,Tomcat 會調用這一?Realm?的?authenticate()?方法,從而使任何對數據庫的即時修改(新用戶、密碼或角色改變,等等)都能立即生效。
    • 一旦用戶認證成功,在登錄后,該用戶(及其相應角色)就將緩存在 Tomcat 中。(對于以表單形式的認證,這意味著直到會話超時或者無效才會過期;對于基本形式的驗證,意味著直到用戶關閉瀏覽器才會過期。)在會話序列化期間不會保存或重置緩存的用戶。對已認證用戶的數據庫信息進行的任何改動都不會生效,直到該用戶下次登錄。
    • 應用負責管理users(用戶表)和user roles(用戶角色表)中的信息。Tomcat 沒有提供任何內置功能來維護這兩種表。

    JNDIRealm

    簡介

    JNDIRealm?是 Tomcat?Realm?接口的一種實現,通過一個 JNDI 提供者1在 LDAP 目錄服務器中查找用戶。realm 支持大量的方法來使用認證目錄。

    通常是可以使用 JNDI API 類的標準 LDAP 提供者。

    a. 連接目錄

    realm 與目錄服務器的連接是通過?connectionURL?配置屬性來定義的。這個 URL 的格式是通過 JNDI 提供者來定義的。它通常是個 LDAP URL,指定了所要連接的目錄服務器的域名,另外還(可選擇)指定了所需的根命名上下文的端口和唯一名稱(DN)。

    如果有多個提供者,則可以配置?alternateURL。如果一個套接字連接無法傳遞給提供者?connectionURL,則會換用?alternateURL。

    當通過創建連接來搜索目錄,獲取用戶及角色信息時,realm 會利用?connectionName?和?connectionPassword?這兩個屬性所指定的用戶名和密碼在目錄上進行自我認證。如果未指定這兩個屬性,則創立的連接是匿名連接,這種連接適用于大多數情況。

    b. 選擇用戶目錄項

    在目錄中,每個可被認證的用戶都必須表示為獨立的項,這種獨立項對應著由屬性?connectionURL?定義的初始?DirContext?中的元素。這種用戶項必須有一個包含認證所需用戶名的屬性。

    每個用戶項的唯一性名稱(DN)通常含有用于認證的用戶名。在這種情況下,userPattern?屬性可以用來指定 DN,其中的?{0}?代表用戶名應該被替換的位置。

    realm 必須搜索目錄來尋找一個包含用戶名的唯一項,可用下列屬性來配置搜索:

    • userBase?用戶子樹的基準項。如果未指定,則搜索基準為頂級元素。
    • userSubtree?用戶子樹,也就是搜索范圍。如果希望搜索以userBase?項為基準的整個子樹,則使用?true;默認值為?false,只對頂級元素進行搜索。
    • userSearch?指定替代用戶名之后所使用的 LDAP 搜索過濾器的模式。
    c. 用戶認證
    • 綁定模式

      默認情況下,realm 會利用用戶項的 DN 與用戶所提供的密碼,將用戶綁定到目錄上。如果成功執行了這種簡單的綁定,那么就可以認為用戶認證成功。

      出于安全考慮,目錄可能保存的是用戶的摘要式密碼,而非明文密碼(參看摘要式密碼以獲知詳情)。在這種情況下,在綁定過程中,目錄會自動將用戶所提供的明文密碼加密為正確的摘要式密碼,以便后續和存儲的摘要式密碼進行比對。然而在綁定過程中,realm 并不參與處理摘要式密碼。不會用到?digest?屬性,如果設置了該屬性,也會被自動忽略。

    • 對比模式

      另外一種方法是,realm 從目錄中獲取存儲的密碼,然后將其與用戶所提供的值進行比對。配置方法是,在包含密碼的用戶項中,將?userPassword?屬性設為目錄屬性名。

      對比模式的缺點在于:首先,connectionName?和?connectionPassword?屬性必須配置成允許 realm 讀取目錄中的用戶密碼。出于安全考慮,這是一種不可取的做法。事實上,很多目錄實現甚至都不允許目錄管理器讀取密碼。其次,realm 必須自己處理摘要式密碼,包括要設置所使用的具體算法、在目錄中表示密碼散列值的方式。但是,realm 可能有時又要訪問存儲的密碼,比如為了支持 HTTP 摘要式訪問認證(HTTP Digest Access Authentication,RFC 2069)。(注意,HTTP 摘要式訪問認證不同于之前討論過的在庫中存儲密碼摘要的方式。)

    d. 賦予用戶角色

    Realm 支持兩種方法來表示目錄中的角色:

    • 將角色顯式表示為目錄項

      通過明確的目錄項來表示角色。角色項通常是一個 LDAP 分組項,該分組項的一個屬性包含角色名稱,另一屬性值則是擁有該角色的用戶的 DN 名或用戶名。下列屬性配置了一個目錄搜索來尋找與認證用戶相關的角色名。

      • roleBase?角色搜索的基準項。如未指定,則基準項為頂級目錄上下文。
      • roleSubtree?搜索范圍。如果希望搜索以?roleBase?為基準項的整個子樹,則設為?true。默認值為?false,請求一個只包含頂級元素的單一搜索。
      • roleSearch?用于選擇角色項的 LDAP 搜索過濾器。它還可以(可選擇)包含用于唯一名稱的模式替換?{0}、用戶名的模式替換?{1},以及用戶目錄項屬性的模式替換?{2}。使用?userRoleAttribute?來指定提供?{2}?值的屬性名。
      • roleName?包含角色名稱的角色項屬性。
      • roleNested?啟用內嵌角色。如果希望在角色中內嵌角色,則設為?true。如果配置了該屬性,每一個新近找到的 roleName 和 DN 都將用于遞歸式的新角色搜索。默認值為?false。
    • 將角色表示為用戶項屬性

      將角色名稱保存為用戶目錄項中的一個屬性值。使用?userRoleName?來指定該屬性名稱。

    當然,也可以綜合使用這兩種方法來表示角色。

    快速入門

    為了配置 Tomcat 使用 JNDIRealm,需要下列步驟:

  • 確保目錄服務器配置中的模式符合上文所列出的要求。
  • 必要時可以為 Tomcat 配置一個用戶名和密碼,對上文所提到的信息用于只讀訪問權限(Tomcat 永遠不會修改該信息。)
  • 按照下文的方法,在?$CATALINA_BASE/conf/server.xml?文件中設置一個?<Realm>?元素。
  • 如果 Tomcat 已經運行,則重啟它。
  • Realm 元素屬性

    如上所述,為了配置 JDBCRealm,需要創建一個?Realm?元素,并把它放在?$CATALINA_BASE/conf/server.xml?文件中。JDBCRealm 的屬性都定義在?Realm?配置文檔中。

    范例

    在目錄服務器上創建適合的模式超出了本文檔的講解范圍,因為這是跟每個目錄服務器的實現密切相關的。在下面的實例中,我們將假定使用的是 OpenLDAP 目錄服務器的一個分發版(2.0.11 版或更新版本,可從http://www.openldap.org處下載)。假設?slapd.conf?文件包含下列設置(除了其他設置之外)。

    database ldbm suffix dc="mycompany",dc="com" rootdn "cn=Manager,dc=mycompany,dc=com" rootpw secret

    我們還假定?connectionURL,使目錄服務器與 Tomcat 運行在同一臺機器上。要想了解如何配置及使用 JNDI LDAP 提供者的詳細信息,請參看?http://docs.oracle.com/javase/7/docs/technotes/guides/jndi/index.html。

    接下來,假定利用如下所示的元素(以 LDIF 格式)來填充目錄服務器。

    # Define top-level entry dn: dc=mycompany,dc=com objectClass: dcObject dc:mycompany# Define an entry to contain people # searches for users are based on this entry dn: ou=people,dc=mycompany,dc=com objectClass: organizationalUnit ou: people# Define a user entry for Janet Jones dn: uid=jjones,ou=people,dc=mycompany,dc=com objectClass: inetOrgPerson uid: jjones sn: jones cn: janet jones mail: j.jones@mycompany.com userPassword: janet# Define a user entry for Fred Bloggs dn: uid=fbloggs,ou=people,dc=mycompany,dc=com objectClass: inetOrgPerson uid: fbloggs sn: bloggs cn: fred bloggs mail: f.bloggs@mycompany.com userPassword: fred# Define an entry to contain LDAP groups # searches for roles are based on this entry dn: ou=groups,dc=mycompany,dc=com objectClass: organizationalUnit ou: groups# Define an entry for the "tomcat" role dn: cn=tomcat,ou=groups,dc=mycompany,dc=com objectClass: groupOfUniqueNames cn: tomcat uniqueMember: uid=jjones,ou=people,dc=mycompany,dc=com uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com# Define an entry for the "role1" role dn: cn=role1,ou=groups,dc=mycompany,dc=com objectClass: groupOfUniqueNames cn: role1 uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com

    OpenLDAP 服務器。假定用戶使用他們的 uid(比如說 jjones)登錄應用,匿名連接已經足夠可以搜索目錄并獲取角色信息了:

    <Realm className="org.apache.catalina.realm.JNDIRealm"connectionURL="ldap://localhost:389"userPattern="uid={0},ou=people,dc=mycompany,dc=com"roleBase="ou=groups,dc=mycompany,dc=com"roleName="cn"roleSearch="(uniqueMember={0})" />

    利用這種配置,通過在?userPattern?替換用戶名,realm 能夠確定用戶的 DN,然后利用這個 DN 和取自用戶的密碼將用戶綁定到目錄中,從而驗證用戶身份,然后搜索整個目錄服務器來找尋用戶角色。

    現在假定希望用戶輸入電子郵件地址(而不是用戶 id)。在這種情況下,realm 必須搜索目錄找到用戶項。當用戶項被保存在多個子樹中,而這些子樹可能分別對應不同的組織單位或企業位置時,可能必須執行一個搜索。

    另外,假設除了分組項之外,你還想用用戶項的屬性來保存角色,那么在這種情況下,Janet Jones 對應的項可能如下所示:

    dn: uid=jjones,ou=people,dc=mycompany,dc=com objectClass: inetOrgPerson uid: jjones sn: jones cn: janet jones mail: j.jones@mycompany.com memberOf: role2 memberOf: role3 userPassword: janet

    這個 realm 配置必須滿足以下新要求:

    <Realm className="org.apache.catalina.realm.JNDIRealm"connectionURL="ldap://localhost:389"userBase="ou=people,dc=mycompany,dc=com"userSearch="(mail={0})"userRoleName="memberOf"roleBase="ou=groups,dc=mycompany,dc=com"roleName="cn"roleSearch="(uniqueMember={0})" />

    當 Janet Jones 用她的電子郵件?j.jones@mycompany.com?登錄時,realm 會搜索目錄,尋找帶有該電郵值的唯一項,并嘗試利用給定密碼來綁定到目錄:uid=jjones,ou=people,dc=mycompany,dc=com。如果驗證成功,該用戶將被賦予以下三個角色:"role2" 與 "role3",她的目錄項中的?memberOf?屬性值;"tomcat",她作為成員存在的唯一分組項中的?cn?屬性值。

    最后,為了驗證用戶,我們必須從目錄中獲取密碼并在 realm 中執行本地比對,將 realm 按照如下方式來配置:

    <Realm className="org.apache.catalina.realm.JNDIRealm"connectionName="cn=Manager,dc=mycompany,dc=com" connectionPassword="secret"connectionURL="ldap://localhost:389"userPassword="userPassword"userPattern="uid={0},ou=people,dc=mycompany,dc=com"roleBase="ou=groups,dc=mycompany,dc=com"roleName="cn"roleSearch="(uniqueMember={0})" />

    但是,正如之前所討論的那樣,往往應該優先考慮默認的綁定模式。

    特別注意事項

    使用 JNDIRealm 需要遵循以下規則:

    • 當用戶首次訪問一個受保護資源時,Tomcat 會調用這一?Realm?的?authenticate()?方法,從而使任何對數據庫的即時修改(新用戶、密碼或角色改變,等等)都能立即生效。
    • 一旦用戶認證成功,在登錄后,該用戶(及其相應角色)就將緩存在 Tomcat 中。(對于以表單形式的認證,這意味著直到會話超時或者無效才會過期;對于基本形式的驗證,意味著直到用戶關閉瀏覽器才會過期。)在會話序列化期間不會保存或重置緩存的用戶。對已認證用戶的數據庫信息進行的任何改動都不會生效,直到該用戶下次登錄。
    • 應用負責管理users(用戶表)和user roles(用戶角色表)中的信息。Tomcat 沒有提供任何內置功能來維護這兩種表。

    UserDatabaseRealm

    UserDatabaseRealm?是 Tomcat?Realm?接口的一種實現,使用 JNDI 資源來存儲用戶信息。默認,JNDI 資源是通過一個 XML 文件來提供支持的。它并不是針對大規模生產環境用途而設計的。在啟動時,UserDatabaseRealm 會從一個 XML 文檔中加載所有用戶以及他們角色的信息(該 XML 文檔默認位于?$CATALINA_BASE/conf/tomcat-users.xml。)用戶、密碼以及相應角色通常可利用 JMX 進行動態編輯,更改結果會加以保存并立刻反映在 XML 文檔中。

    Realm 元素屬性

    跟之前討論的一樣,為了配置 UserDatabaseRealm,需要在?$CATALINA_BASE/conf/server.xml?中創建?<Realm>?元素。關于 UserDatabaseRealm 中的屬性定義可參看?Realm 配置文檔。

    用戶文件格式

    用戶文件使用的格式與?MemoryRealm所使用的相同。

    范例

    默認的 Tomcat 安裝已經配置了內嵌在?<Engine>?元素中的 UserDatabaseRealm,因而可以將其應用于所有的虛擬主機和 Web 應用中。默認的?conf/tomcat-users.xml?文件內容為:

    <tomcat-users><user username="tomcat" password="tomcat" roles="tomcat" /><user username="role1" password="tomcat" roles="role1" /><user username="both" password="tomcat" roles="tomcat,role1" /> </tomcat-users>

    特別注意事項

    使用 UserDatabaseRealm 需要遵循以下規則:

    • 當 Tomcat 首次啟動時,它會從用戶文件中加載所有已定義的用戶及其相關信息。假如對該用戶文件中的數據進行修改,則只有重啟 Tomcat 后才能生效。這些修改并不是通過 UserDatabase 數據源來完成的,是由 Tomcat 所提供的通過 JMX 訪問的 MBean 來實現的。
    • 當用戶首次訪問一個受保護資源時,Tomcat 會調用這一?Realm?的?authenticate()?方法。
    • 一旦用戶認證成功,在登錄后,該用戶(及其相應角色)就將緩存在 Tomcat 中。(對于以表單形式的認證,這意味著直到會話超時或者無效才會過期;對于基本形式的驗證,意味著直到用戶關閉瀏覽器才會過期。)在會話序列化期間不會保存或重置緩存的用戶。對已認證用戶的數據庫信息進行的任何改動都不會生效,直到該用戶下次登錄。

    MemoryRealm

    簡介

    MemoryRealm?是一種對 Tomcat 的 Realm 接口的簡單演示實現,并不是針對生產環境而設計的。在啟動時,MemoryRealm 會從 XML 文檔中加載所有的用戶信息及其相關的角色信息(默認該文檔位于?$CATALINA_BASE/conf/tomcat-users.xml)。只有重啟 Tomcat 才能使對該文件作出的修改生效。

    Realm 元素屬性

    跟之前討論的一樣,為了配置 MemoryRealm,需要在?$CATALINA_BASE/conf/server.xml?中創建?<Realm>?元素。關于 MemoryRealm 中的屬性定義可參看?Realm 配置文檔。

    用戶文件格式

    用戶文件包含下列屬性。默認情況下,conf/tomcat-users.xml?必須是一個 XML 文件,并且帶有一個根元素:<tomcat-users>。每一個有效用戶都有一個內嵌在根元素中的?<user>?元素。

    • name?用戶登錄所用的用戶名。
    • password?用戶登錄所用的密碼。如果?<Realm>?元素中沒有設置?digest?屬性,則采用明文密碼,否則就設置為摘要式密碼,如之前討論的那樣。
    • roles?以逗號分隔的用戶角色名列表。

    特別注意事項

    使用 MemoryRealm 需要注意以下規則:

    • 當 Tomcat 首次啟動時,它會從用戶文件中加載所有已定義的用戶及其相關信息。假如對該用戶文件中的數據進行修改,則只有重啟 Tomcat 后才能生效。
    • 當用戶首次訪問一個受保護資源時,Tomcat 會調用這一?Realm?的?authenticate()?方法。
    • 一旦用戶認證成功,在登錄后,該用戶(及其相應角色)就將緩存在 Tomcat 中。(對于以表單形式的認證,這意味著直到會話超時或者無效才會過期;對于基本形式的驗證,意味著直到用戶關閉瀏覽器才會過期。)在會話序列化期間不會保存或重置緩存的用戶。對已認證用戶的數據庫信息進行的任何改動都不會生效,直到該用戶下次登錄。
    • 應用負責管理users(用戶表)和user roles(用戶角色表)中的信息。Tomcat 沒有提供任何內置功能來維護這兩種表。

    JAASRealm

    簡介

    JAASRealm?是 Tomcat 的?Realm?接口的一種實現,通過 Java Authentication & Authorization Service(JAAS,Java身份驗證與授權服務)架構來實現對用戶身份的驗證。JAAS 架構現已加入到標準的 Java SE API 中。

    通過 JAASRealm,開發者實際上可以將任何安全的 Realm 與 Tomcat 的 CMA 一起組合使用。

    JAASRealm 是 Tomcat 針對基于 JAAS 的 J2EE 1.4 的 J2EE 認證框架的原型實現,基于?JCP Specification Request 196,從而能夠增強容器管理安全性,并且能促進“可插拔的”認證機制,該認證機制能夠實現與容器的無關性。

    根據 JAAS 登錄模塊和準則(參見?javax.security.auth.spi.LoginModule?與?javax.security.Principal?的相關說明),你可以自定義安全機制,或者將第三方的安全機制與 Tomcat 所實現的 CMA 相集成。

    快速入門

    為了利用自定義的 JAAS 登錄模塊使用 JAASRealm,需要執行如下步驟:

  • 編寫自己的 JAAS 登錄模塊。在開發自定義登錄模塊時,將通過 JAAS 登錄上下文對基于 JAAS?2的 User 和 Role 類管理。注意,JAASRealm 內建的?CallbackHandler?目前只能識別?NameCallback?和?PasswordCallback。

    2. 詳情請參看?JAAS 認證教程?與?JAAS 登錄模塊開發教程。

  • 盡管 JAAS 并未明確指定,但你也應該為用戶和角色創建不同的類來加以區分,它們都應該擴展自?javax.security.Principal,從而使 Tomcat 明白從登錄模塊中返回的規則究竟是用戶還是角色(參看?org.apache.catalina.realm.JAASRealm?相關描述)。不管怎樣,第一個返回的規則總被認為是用戶規則。
  • 將編譯好的類指定在 Tomcat 的類路徑中。
  • 為 Java 建立一個 login.config 文件(參見?JAAS LoginConfig 文件)。將其位置指定給 JVM,從而便于 Tomcat 明確它的位置。例如,設置如下環境變量:
    JAVA_OPTS=$JAVA_OPTS -Djava.security.auth.login.config==$CATALINA_BASE/conf/jaas.config

  • 為了保護一些資源,在 web.xml 中配置安全限制。
  • 在 server.xml 中配置 JAASRealm 模塊。
  • 重啟 Tomcat(如果它正在運行)。
  • Realm 元素屬性

    在上述步驟中,為了配置步驟 6 以上的 JAASRealm,需要創建一個?<Realm>?元素,并將其內嵌在?<Engine>?元素中的?$CATALINA_BASE/conf/server.xml?文件內。關于 JAASRealm 中的屬性定義可參看?Realm 配置文檔。

    范例

    下例是 server.xml 中的一截代碼段:

    <Realm className="org.apache.catalina.realm.JAASRealm"appName="MyFooRealm"userClassNames="org.foobar.realm.FooUser"roleClassNames="org.foobar.realm.FooRole"/>

    完全由登錄模塊負責創建并保存用于表示用戶規則的 User 與 Role 對象(javax.security.auth.Subject)。如果登錄模塊不僅無法創建用戶對象,而且也無法拋出登錄異常,Tomcat CMA 就會失去作用,所在頁面就會變成?http://localhost:8080/myapp/j_security_check?或其他未指明的頁面。

    JAAS 方法具有雙重的靈活性:

    • 你可以在自定義的登錄模塊后臺執行任何所需的進程。
    • 通過改變配置以及重啟服務器,你可以插入一個完全不同的登錄模塊,不需要對應用做出任何改動。

    特別注意事項

    • 當用戶首次訪問一個受保護資源時,Tomcat 會調用這一?Realm?的?authenticate()?方法。
    • 一旦用戶認證成功,在登錄后,該用戶(及其相應角色)就將緩存在 Tomcat 中。(對于以表單形式的認證,這意味著直到會話超時或者無效才會過期;對于基本形式的驗證,意味著直到用戶關閉瀏覽器才會過期。)在會話序列化期間不會保存或重置緩存的用戶。對已認證用戶的數據庫信息進行的任何改動都不會生效,直到該用戶下次登錄。
    • 和其他 Realm 實現一樣,如果?server.xml?中的?<Realm>?元素包含一個?digest?屬性,則支持摘要式密碼。JAASRealm 的?CallbackHandler?將先于將密碼傳回?LoginModule?之前,對密碼進行摘要式處理。

    CombinedRealm

    簡介

    CombinedRealm?是一種 Tomcat 的 Realm 實現,通過一個或多個子 Realm 進行用戶驗證。

    通過 CombinedRealm,開發者能夠將多個 Realm(同一或不同類型) 組合起來使用,從而用于驗證多種數據源,而且萬一當其中一個 Realm 失敗,或其他一些操作需要多個 Realm 時,它還能提供回滾處理。

    子 Realm 是通過在定義 CombineRealm 的?Realm?元素中內嵌?Realm?元素來實現的。驗證操作會按照 Realm 元素的疊加順序來逐個進行。對逐個 Realm 進行驗證,從而就能充分證明用戶的身份。

    Realm 元素屬性

    為了配置 CombinedRealm,需要創建一個?<Realm>?元素,并將其內嵌在?<Engine>?或?<Host>?元素中的?$CATALINA_BASE/conf/server.xml?文件內。同樣,你也可以將其內嵌到?context.xml?文件下的?<Context>?節點。

    范例

    下面是 server.xml 中的一段代碼,綜合使用了 UserDatabaseRealm 和 DataSourceRealm:

    <Realm className="org.apache.catalina.realm.CombinedRealm" ><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/><Realm className="org.apache.catalina.realm.DataSourceRealm"dataSourceName="jdbc/authority"userTable="users" userNameCol="user_name" userCredCol="user_pass"userRoleTable="user_roles" roleNameCol="role_name"/> </Realm>

    LockOutRealm

    簡介

    LockOutRealm?是一個 Tomcat 的 Realm 實現,它擴展了 CombinedRealm,假如在某一段時間內出現很多驗證失敗,則它能夠提供鎖定用戶的功能。

    為了確保操作的正確性,該 Realm 允許出現較合理的同步。

    該 Realm 并不需要對底層的 Realm 或與其相關的用戶存儲機制進行任何改動。它會記錄失敗的登錄,包括那些因為用戶不存在的登錄。為了防止無效用戶通過精心設計的請求而實施的 DOS 攻擊(從而造成緩存增加),沒有通過驗證的用戶所在列表的容量受到了嚴格的限制。

    子 Realm 是通過在定義 LockOutRealm 的?Realm?元素中內嵌?Realm?元素來實現的。驗證操作會按照 Realm 元素的疊加順序來逐個進行。對逐個 Realm 進行驗證,從而就能充分證明用戶的身份。

    Realm 元素屬性

    為了配置 CombinedRealm,需要創建一個?<Realm>?元素,并將其內嵌在?<Engine>?或?<Host>?元素中的?$CATALINA_BASE/conf/server.xml?文件內。同樣,你也可以將其內嵌到?context.xml?文件下的?<Context>?節點。關于 LockOutRealm 中的屬性定義可參看?Realm 配置文檔。

    范例

    下面是 server.xml 中的一段代碼,為 UserDatabaseRealm 添加了鎖定功能。

    <Realm className="org.apache.catalina.realm.LockOutRealm" ><Realm className="org.apache.catalina.realm.UserDatabaseRealm"resourceName="UserDatabase"/> </Realm>

    轉載于:https://www.cnblogs.com/pingxin/p/p00051.html

    總結

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

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

    人人射 | 少妇按摩av | 99国产精品久久久久老师 | 日韩试看| 成人h动漫在线看 | 91精品免费视频 | 啪嗒啪嗒免费观看完整版 | 99久久综合国产精品二区 | 99久久久成人国产精品 | 免费97视频| 国产综合在线视频 | 国产剧情在线一区 | 欧美三级在线播放 | 国产精品第 | 五月婷婷国产 | 国产在线91精品 | 国产在线观 | 九九热精品国产 | 黄色成人av网址 | 中文字幕精品www乱入免费视频 | 色综合久久久久网 | 国产一级片免费视频 | 91亚洲精品久久久蜜桃网站 | 久久男人中文字幕资源站 | 很黄很黄的网站免费的 | 天天色天天艹 | 国产亚洲视频系列 | 亚洲一区二区高潮无套美女 | 69xxxx欧美 | 亚洲欧洲精品一区 | 久青草视频 | 成人午夜毛片 | 亚洲黄色小说网 | 91久久久久久久 | 日日麻批40分钟视频免费观看 | 免费在线成人 | 亚洲日日射| www.狠狠操.com | 午夜三级在线 | 国产精品麻豆欧美日韩ww | 日韩激情久久 | 在线观看小视频 | 欧美一区二区精美视频 | 美女一区网站 | 午夜精品99久久免费 | 91麻豆精品国产91久久久久 | 国产一区二区三区黄 | 久久久久久国产精品免费 | 97在线影视 | 最新成人在线 | 黄色大片日本 | 国产精品国产三级国产不产一地 | 亚洲激情国产精品 | 久久激情小说 | 99久久久国产精品免费99 | 97免费在线观看视频 | 日日草av| 亚洲区二区 | 操操操操网 | 伊人久久国产 | 在线免费视频你懂的 | 亚洲免费一级电影 | 91人人插 | 在线涩涩 | 久久国产精品久久精品 | 91av在线国产 | 亚洲黄色片一级 | 日韩网站视频 | 欧美成人中文字幕 | 美女很黄免费网站 | 久久99精品国产99久久6尤 | 精品视频免费久久久看 | 亚洲va欧美va国产va黑人 | 国产精品久久久久久久久久直播 | 97碰碰精品嫩模在线播放 | 久久精品99 | 久久经典国产视频 | 亚洲午夜久久久影院 | 免费99| 国产亚洲精品久久19p | 精品99久久 | 国产剧情久久 | 久久国产午夜精品理论片最新版本 | 国产日韩欧美在线观看 | 狠狠黄 | av大片免费在线观看 | 天天曰 | 中文不卡视频在线 | av电影免费在线 | 96看片 | 久久观看免费视频 | 伊人久久婷婷 | 久久久久久久久久伊人 | 白丝av免费观看 | 五月婷婷丁香综合 | 日韩av手机在线观看 | 97精品国产97久久久久久春色 | 成人国产精品入口 | 人人射网站 | 亚洲视频axxx| 久草视频在线观 | 国产中文字幕视频 | 黄色片网站免费 | 国产精品女主播一区二区三区 | 成人丁香花| 日韩av电影网站在线观看 | 亚洲国产一区二区精品专区 | 亚洲成人资源网 | 日韩电影中文字幕在线 | 超级碰碰免费视频 | 天天人人综合 | 最新高清无码专区 | 五月婷婷丁香激情 | 99视频国产在线 | 亚洲国产日本 | 日韩成人免费在线 | 久草免费在线视频 | 一区二区伦理电影 | 九七视频在线观看 | 久久综合久久88 | 免费观看黄色12片一级视频 | 992tv在线成人免费观看 | 国产精品欧美在线 | 日韩xxxxxxxxx| 日韩1页| 婷婷在线网 | 国产一区二区电影在线观看 | 综合激情网... | 日本性高潮视频 | av成人在线看 | 国产精品第二十页 | 日本不卡一区二区三区在线观看 | 91理论电影| 国产一区二区日本 | 久久精品视频网站 | 91精品啪啪| av线上免费看 | 亚洲视频专区在线 | 久久久久久久久久久久影院 | 国产自产高清不卡 | 香蕉视频在线免费 | 精品一区二区精品 | av电影免费在线看 | 亚洲天天做 | 在线观看不卡视频 | 中文字幕免费国产精品 | 欧美aⅴ在线观看 | 亚洲aⅴ一区二区三区 | 日韩欧美视频免费观看 | 国产成人资源 | 不卡的av中文字幕 | 精品国产一二三 | 在线观看中文字幕一区 | 一区二区精品国产 | 九九爱免费视频 | 91麻豆精品国产91久久久无限制版 | 操天天操 | 久操伊人| 久久99热这里只有精品国产 | 久久国产精品第一页 | 亚洲精品玖玖玖av在线看 | 69绿帽绿奴3pvideos | 不卡视频在线看 | 精品国产午夜 | 天天摸夜夜添 | 在线黄色毛片 | 黄色软件大全网站 | 香蕉影院在线观看 | 久久不卡国产精品一区二区 | 日韩毛片久久久 | 在线高清 | 男女激情免费网站 | 久久综合婷婷综合 | 久久最新 | 免费看片色| 一级片免费在线 | 成年性视频 | 特级毛片网站 | 在线亚洲高清视频 | 精品一区二区免费在线观看 | 麻豆成人精品视频 | 国产特级毛片aaaaaa毛片 | 正在播放 国产精品 | 色wwwww| 黄色精品一区 | 国产日产在线观看 | 一区二区三区四区精品视频 | 一级黄色免费网站 | 久久精品一区八戒影视 | 久在线| 亚州av免费 | 国产片免费在线观看视频 | 麻豆极品 | 亚洲成a人片在线www | 91九色网站 | 五月婷婷在线观看 | 黄色大片av | 久久国产精品久久国产精品 | 日韩免费观看高清 | 天天干天天插 | 成年免费在线视频 | 久久免费国产电影 | 成人精品一区二区三区电影免费 | 最近日本韩国中文字幕 | 五月婷婷在线综合 | 国产亚洲精品美女久久 | 99热这里只有精品免费 | 国产在线不卡视频 | 日韩免费观看一区二区 | 日韩av在线高清 | 中文字幕在线字幕中文 | 婷婷射五月| a√资源在线 | 亚洲一级黄色大片 | 亚洲精品视频免费在线 | 中文字幕在线观看免费 | 亚洲成人第一区 | 日日爽日日操 | 在线免费观看黄网站 | 丁香婷婷激情啪啪 | 国产99爱 | 欧美aaa一级 | 精品国产电影一区 | 久久久麻豆精品一区二区 | 五月婷婷久久丁香 | 69精品视频| 天天射天天爱天天干 | 一级理论片在线观看 | 久久看片网 | 亚洲激情在线观看 | 日韩资源在线观看 | 国产在线观看免 | 在线视频18在线视频4k | 天天干天天干天天色 | 精品中文字幕在线播放 | 成人在线播放视频 | 国内精品久久久久久 | 天天操天天插 | 欧美色图亚洲图片 | 久久免费精品一区二区三区 | 精品亚洲va在线va天堂资源站 | 欧美日韩中文字幕综合视频 | 日韩免费在线观看 | 亚洲精品国精品久久99热 | 在线观看视频日韩 | 亚洲高清在线精品 | 天天艹天天干天天 | 99久久久国产精品免费99 | av色网站 | 国产99黄 | av在线播放国产 | 国产精品永久 | 日精品| 成人a视频在线观看 | 久草在线综合 | 91视频免费 | 狠狠干,狠狠操 | 亚洲精品国产综合99久久夜夜嗨 | 国产精品麻豆91 | 国产永久免费观看 | 国产一级二级视频 | 人人狠狠综合久久亚洲婷 | 天天综合色网 | av亚洲产国偷v产偷v自拍小说 | 久久精品视频一 | 国产日韩欧美自拍 | 国产女v资源在线观看 | 国产精品美女久久久 | 不卡的av电影在线观看 | 日韩久久影院 | 国产 在线观看 | 精品视频免费在线 | 就操操久久 | 免费激情在线电影 | 国产伦理精品一区二区 | 婷婷视频在线 | 午夜的福利 | 欧美成天堂网地址 | 色综合久久久久久久 | 日韩亚洲精品电影 | 久久人人爽爽人人爽人人片av | 三级黄色三级 | 欧美 亚洲 另类 激情 另类 | 色狠狠一区二区 | 久久99欧美 | 在线视频日韩欧美 | 一区二区三区中文字幕在线 | 久久久久久伊人 | 最新中文字幕在线播放 | 久久久久在线观看 | 久久国产成人午夜av影院潦草 | 亚洲精品黄网站 | 欧美亚洲一区二区在线 | 免费a级大片 | 超碰在线人人草 | 国内成人精品视频 | av在线免费网 | 亚洲成人中文在线 | 久草视频观看 | 亚洲综合五月天 | 黄色午夜 | 中文字幕av在线电影 | 久久精美视频 | 九九免费视频 | 久久久亚洲成人 | 亚洲电影院 | 欧美一级久久久 | 久久国产精品精品国产色婷婷 | 国产在线观看中文字幕 | 成人免费视频网 | 97在线视频观看 | 国产精品久久久久久久久久久久午夜 | 在线天堂日本 | 国产视频综合在线 | 色在线视频网 | 欧美一级黄大片 | 蜜桃视频日本 | 国产一区在线视频 | 亚洲精品久久久蜜桃直播 | 国产亚洲精品日韩在线tv黄 | 国产精品va在线观看入 | 不卡日韩av | 国产中文在线视频 | 日韩精品免费一区二区 | 成人一级免费电影 | 日韩国产高清在线 | 久久这里只有精品首页 | 国产在线观看一 | 新av在线| 91成版人在线观看入口 | 91精品国产91久久久久久三级 | 美女免费视频观看网站 | 欧美日韩国产欧美 | 亚洲国产中文字幕在线观看 | 日产乱码一二三区别免费 | av福利网址导航 | 日韩三级免费观看 | 久久精品视频在线免费观看 | 国产精品av免费观看 | 日韩在线播放视频 | 天天爽夜夜爽精品视频婷婷 | 久久这里只有精品23 | 国产不卡免费视频 | 精品亚洲在线 | 亚洲精品视频在线看 | 99精品国产福利在线观看免费 | 日韩电影一区二区三区 | 日韩中文字幕国产精品 | 91在线中文| 青青草国产成人99久久 | 91成人在线视频观看 | 亚洲精品久久久蜜桃 | 在线观看成年人 | av成人动漫| 成人看片 | 欧美黄网站 | 国产一二区在线观看 | 精品国产免费一区二区三区五区 | 国产色婷婷精品综合在线手机播放 | 99精品在线观看视频 | 黄色软件在线观看 | 国产国产人免费人成免费视频 | 成人久久网| 狠狠色丁香婷婷综合视频 | 国产一级片网站 | 亚洲精品乱码白浆高清久久久久久 | 三级av在线 | 国产精品女 | 91观看视频 | 国产成人精品一二三区 | 欧美成人影音 | 国产亚洲va综合人人澡精品 | 免费观看性生活大片3 | 欧美一区二区日韩一区二区 | wwxxxx日本| 精品亚洲欧美无人区乱码 | 天天射天天拍 | 特级西西444www大胆高清无视频 | 婷婷六月天丁香 | 国产精品18久久久久久不卡孕妇 | 97免费在线视频 | 免费观看9x视频网站在线观看 | 亚洲国产美女久久久久 | 国产精品久久久久久一二三四五 | 91av手机在线 | 日本中文字幕网址 | 国产在线观看你懂得 | 91.精品高清在线观看 | www91在线观看 | 91久久精品一区二区二区 | 91九色视频导航 | 亚洲精品美女在线观看播放 | 亚洲涩涩色 | 婷婷在线免费 | 久久99国产精品久久99 | 91看片黄色| 玖玖玖影院 | 亚洲国产精品一区二区久久hs | 日本黄色免费看 | 国产又粗又猛又色 | 亚洲jizzjizz日本少妇 | 国产成人黄色在线 | 91在线视频观看 | 久久99深爱久久99精品 | 国内精品久久久久国产 | 午夜久久久精品 | 91av手机在线 | 久久久久久久久久久影视 | 国产尤物一区二区三区 | 欧美日韩一区二区三区在线观看视频 | 久久亚洲免费视频 | 亚洲欧洲国产日韩精品 | 又黄又爽的视频在线观看网站 | 国产成a人亚洲精v品在线观看 | 国产一卡二卡在线 | www.狠狠 | 国产免费av一区二区三区 | 91亚洲激情 | 四虎永久精品在线 | av天天在线观看 | 午夜电影久久 | 婷婷av资源| 久久9精品 | 亚洲午夜av电影 | 免费看成年人 | 五月婷婷视频在线观看 | 欧美日韩亚洲一 | 777奇米四色 | 亚洲国产欧洲综合997久久, | 国产v在线播放 | 日韩狠狠操 | 成人一区电影 | 国产玖玖在线 | 亚洲精品人人 | 亚洲精品一区二区精华 | 亚洲国产中文在线观看 | 91少妇精拍在线播放 | 日韩网 | 欧美日韩在线视频一区二区 | 亚洲成人网av | 亚洲干 | 天天玩天天干天天操 | 丁香电影小说免费视频观看 | 成人国产精品入口 | 国色综合 | 国产成人精品三级 | 日韩一区二区三区在线看 | 成年人毛片在线观看 | 亚洲精品久久久久999中文字幕 | 久久超碰在线 | 亚洲色综合| 亚洲欧美国产精品18p | 中午字幕在线观看 | 婷婷午夜| 成年人免费看的视频 | 91精品国产自产老师啪 | 国内视频在线 | 亚洲天堂激情 | av五月婷婷| 九九视频热 | 成人免费ⅴa| 亚洲一区精品二人人爽久久 | 最新午夜 | 日韩在线色视频 | avwww在线 | 日韩美女黄色片 | 最新日本中文字幕 | 国产1级视频| av+在线播放在线播放 | 91桃色在线播放 | 懂色av一区二区三区蜜臀 | 制服丝袜在线 | 在线看黄色av | 男女激情免费网站 | zzijzzij亚洲日本少妇熟睡 | 人人玩人人添人人 | 亚洲区精品视频 | 久久精品超碰 | 成人性生活大片 | 日韩久久久久久 | 亚洲在线视频播放 | 园产精品久久久久久久7电影 | 日韩羞羞| 亚洲国产中文在线 | 久久精品香蕉 | av电影在线观看 | 色综合久久综合中文综合网 | 国产黄色片一级 | 国产黄色网| 婷香五月 | 国产精品一区二区三区99 | 99精品视频一区 | 亚洲在线精品视频 | 狠狠狠狠狠狠 | 中文字幕色站 | 2023天天干| 97操碰 | 色综合久久久久久久久五月 | 日日爱影视 | 色国产精品一区在线观看 | 特黄色大片 | 国产日韩欧美视频在线观看 | 91在线视频免费播放 | 中文字幕 影院 | 欧美性黄网官网 | 少妇bbw揉bbb欧美 | 亚洲五月六月 | 操老逼免费视频 | 中文字幕欧美日韩va免费视频 | 国产一区网| 国产精品精品久久久 | 婷婷九九| 精品伊人久久久 | 国产98色在线 | 日韩 | 国产精品99久久久久久人免费 | av激情五月 | 成人在线免费视频观看 | 91av超碰| 激情婷婷欧美 | 黄色网www | 看片网站黄 | 国产精品自在线拍国产 | 日韩网站在线观看 | 91中文字幕在线视频 | 国产精品视频地址 | 久久久国产精品免费 | 日本精品久久久久久 | 日本公妇在线观看高清 | 成人久久精品 | 国产涩图 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 欧美日韩不卡在线视频 | 狠狠的操狠狠的干 | 日韩国产精品久久久久久亚洲 | 亚洲三级精品 | 天天操天天操天天操天天操天天操 | 日韩免费电影网 | 亚洲视频999| 91在线成人 | 日韩| 美女网站在线播放 | 日韩免费一区二区 | 97在线看| 欧美日韩一级久久久久久免费看 | 免费网站黄| 91网在线观看 | 欧美在线观看视频一区二区三区 | 91视频首页 | a久久免费视频 | 少妇bbw撒尿| 99精品小视频 | 中文字幕av在线电影 | 国产一级片免费观看 | 日韩在线电影 | 久久久久99精品国产片 | 玖玖玖精品 | 美女露久久 | 免费看片亚洲 | 日本韩国精品一区二区在线观看 | 国产福利资源 | 人人cao| 久久免费成人精品视频 | 91热视频在线观看 | japanesefreesex中国少妇 | 中文字幕 国产 一区 | 国内精品国产三级国产aⅴ久 | www.久草视频 | 中文字幕av免费观看 | 天天鲁一鲁摸一摸爽一爽 | 久久一及片 | www.夜夜草| 国产精品女教师 | 丰满少妇高潮在线观看 | 亚洲国产精品免费 | 视频一区二区精品 | 国产成人久久av977小说 | 国产在线专区 | 精品一区二区三区四区在线 | 精品国产福利在线 | 日韩av播放在线 | 欧美一级小视频 | 天天色天天射天天综合网 | 中文字幕中文 | 国产手机视频精品 | 亚洲激情视频 | 免费在线一区二区 | 一级片视频在线 | 中文字幕国语官网在线视频 | 青青草国产在线 | 九九九在线观看视频 | 日日弄天天弄美女bbbb | 久久伊99综合婷婷久久伊 | 一区二区精品在线视频 | 久久久久亚洲精品 | 色视频一区 | 国产精品区二区三区日本 | 九九视频免费 | 久久视频国产精品免费视频在线 | 国内久久久 | 97爱爱爱| 国产亚洲精品女人久久久久久 | 亚洲乱码在线观看 | 在线亚洲观看 | 久久久久久久久免费视频 | 蜜臀av夜夜澡人人爽人人 | 日本久久电影网 | 中文字幕在线电影 | 日韩三级视频在线观看 | 免费看污污视频的网站 | 精品在线观看视频 | 在线观看成人小视频 | 亚洲视频在线看 | 五月天婷婷丁香花 | 91麻豆操| 精品国产1区2区 | 日韩成人av在线 | 成人a免费视频 | 激情 亚洲 | 国产91全国探花系列在线播放 | 人人爽网站 | 在线观看黄网 | 国产女人40精品一区毛片视频 | 久草在线视频精品 | 激情五月激情综合网 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 欧美久久久影院 | 色资源二区在线视频 | av在线色 | 日韩精品一区二区三区三炮视频 | 免费在线观看的av网站 | 国内精品免费久久影院 | 日色在线视频 | 日韩欧美视频一区 | 久久精品免费 | 久草a在线| 成人免费视频播放 | 91中文字幕网 | www.人人草| 亚洲国产精品传媒在线观看 | 91精品久久久久久久91蜜桃 | 三级av免费看 | 欧美日韩国产色综合一二三四 | 一本一道久久a久久综合蜜桃 | 国产精品自在欧美一区 | 亚洲黄色免费在线 | 国产视频一区精品 | 久久精品视频在线看 | 黄av免费在线观看 | 久久国产精品99国产精 | 久久天堂影院 | 丁香六月国产 | 草久在线播放 | 欧美日韩中文字幕综合视频 | 色欧美综合 | 欧美日韩另类在线观看 | 麻豆久久一区 | 精品国产乱码久久 | 日批视频在线观看免费 | 久久久久国产免费免费 | av成人免费在线看 | 国产美腿白丝袜足在线av | 日韩免费观看一区二区 | 国产精品成久久久久 | 国产一级在线 | 国产精品成人aaaaa网站 | 99久久久成人国产精品 | 久久这里只精品 | 日本高清久久久 | 欧美成人手机版 | 亚洲第一区在线播放 | 欧美在线一级片 | 丝袜网站在线观看 | 成年人免费在线观看 | 成人在线播放网站 | 亚洲九九九| 午夜久久久久久久久久久 | 999国产在线| 99在线视频网站 | 操久在线 | 国产中文字幕一区二区三区 | 粉嫩av一区二区三区四区在线观看 | 天天综合日日夜夜 | 五月天天天操 | 久久国内精品 | 亚洲精品短视频 | 久久久久久久网站 | 久久久久国产精品一区 | 免费国产视频 | 欧美a级成人淫片免费看 | 成人免费看片98欧美 | 欧美电影黄色 | 精品国产一二三四区 | 丁香六月在线 | 日韩大片免费观看 | 中文日韩在线 | 免费观看性生活大片3 | 99热这里精品 | 在线 精品 国产 | 日韩在线视频看看 | 成人av网页 | 国产精品1024 | 成人av免费在线看 | 免费观看www7722午夜电影 | 国产精品久久久久久久毛片 | 久久亚洲欧美 | 国产精品久久99综合免费观看尤物 | 91探花系列在线播放 | 中文字幕在线视频国产 | 久久国产高清视频 | 麻豆一级视频 | 亚洲成人资源网 | 91精品国产综合久久婷婷香蕉 | 婷婷色站| 亚洲精品理论 | 国产拍揄自揄精品视频麻豆 | 99综合电影在线视频 | av在线电影免费观看 | 500部大龄熟乱视频使用方法 | 亚洲午夜av电影 | 99久久99久久精品免费 | 91亚洲精品乱码久久久久久蜜桃 | 久操中文字幕在线观看 | 狠狠色丁香久久综合网 | 成片免费观看视频大全 | 在线视频免费观看 | 久久久福利影院 | 国内视频一区二区 | 一级片在线 | 婷婷伊人综合 | 91精品国产综合久久婷婷香蕉 | 中文字幕在线播放日韩 | 99视频一区二区 | 中文国产成人精品久久一 | 成年性视频 | 亚洲欧美视频网站 | 99热只有精品在线观看 | 日韩免费大片 | 日韩素人在线观看 | 国产一区私人高清影院 | 久久久免费视频播放 | 激情五月播播久久久精品 | 香蕉日日| 在线观看国产高清视频 | 国产精品女同一区二区三区久久夜 | 久久午夜网| 中文字幕资源在线 | 欧美视频在线二区 | 久久99国产一区二区三区 | 国产正在播放 | 日韩欧美电影在线 | 99精品国产一区二区 | 午夜丰满寂寞少妇精品 | 午夜国产一区二区 | 97国产在线播放 | 国产精品一区二区三区免费看 | 国产视频在线免费观看 | 一级黄色片在线 | 国产h片在线观看 | 日本三级中文字幕在线观看 | www.精选视频.com | 日日躁天天躁 | 在线成人免费 | av高清在线| 黄色大全视频 | 久草在线免费资源站 | 在线免费观看国产精品 | 国产精品一区二区免费 | 天天干天天搞天天射 | 久久91久久久久麻豆精品 | 99精品视频在线播放观看 | 成人在线观看日韩 | 国产精品第72页 | 93久久精品日日躁夜夜躁欧美 | 欧美视频在线观看免费网址 | 蜜桃视频在线观看一区 | 色狠狠综合 | 999在线精品 | 九九热视频在线免费观看 | 九九激情视频 | 亚洲美女免费精品视频在线观看 | 在线免费观看的av | 在线视频一二三 | 亚洲精品国产精品国自产观看 | 欧美大片mv免费 | av在线播放中文字幕 | 国产精品高清免费在线观看 | 日韩丝袜在线观看 | 亚洲精品国产麻豆 | 国产999免费视频 | 欧美在线视频第一页 | 日本最新中文字幕 | 亚洲黑丝少妇 | 在线成人中文字幕 | 国产精国产精品 | 天天干天天操天天爱 | 五月婷婷免费 | 亚洲桃花综合 | 九九久久影视 | 久久久首页 | 久久久99国产精品免费 | 美女福利视频网 | 草久久av| 欧美有色 | 美女视频黄是免费的 | 国产特级毛片aaaaaaa高清 | 欧美日韩视频一区二区 | 欧美日韩综合在线 | 丰满少妇在线观看网站 | 午夜精品剧场 | 亚洲国产午夜视频 | 色婷婷精品大在线视频 | 狠狠躁日日躁狂躁夜夜躁av | 日韩一级理论片 | 国产美女网站在线观看 | 麻豆94tv免费版 | 日本公妇在线观看 | 日韩有码专区 | 久久久久久久久久久久久久免费看 | 香蕉影院在线播放 | 97超碰精品 | 最新色站 | 国产精品初高中精品久久 | 又黄又刺激 | 人人看看人人 | 久草在线视频首页 | 久久久久中文字幕 | 天天爱天天操 | 成人久久久久久久久久 | 91视频xxxx| 免费黄av| 日韩在线免费观看视频 | 国产一区欧美二区 | 天天色天天操综合 | 国产黄色高清 | 久久精品国产亚洲aⅴ | 国产香蕉97碰碰碰视频在线观看 | 中文字幕在线视频免费播放 | 韩日精品视频 | 久保带人 | 免费美女久久99 | www.狠狠操 | 99精品视频免费 | 999成人网 | 最新极品jizzhd欧美 | 天天操天天怕 | 国产高清在线免费视频 | 国产高清精| 久久综合给合久久狠狠色 | 久久免费黄色大片 | 日韩经典一区二区三区 | 欧美在线观看视频 | 亚洲精品高清一区二区三区四区 | 亚洲精品免费视频 | 九九视频在线播放 | 国产又粗又硬又爽的视频 | 在线观看国产成人av片 | 美女福利视频在线 | 免费网站观看www在线观看 | 久草精品在线播放 | 免费精品视频在线观看 | 精品久久一 | 中文av一区二区 | 中文字幕欧美日韩va免费视频 | 欧亚日韩精品一区二区在线 | 午夜久久网 | 欧美一级片免费观看 | 欧美性色综合网站 | 婷婷看片| 天天操综合网站 | 久久久久免费看 | 免费91麻豆精品国产自产在线观看 | 国产精品免费在线视频 | 91精品系列 | 亚洲综合最新在线 | 久久久精品综合 | www.天天色 | 精品播放 | 超碰.com| 久久久久久久99精品免费观看 | 97免费公开视频 | 亚洲丁香日韩 | 一区二区三区在线视频观看58 | 天天操天天操天天操天天操天天操天天操 | 欧美日韩国产一区二区三区在线观看 | 亚洲免费国产 | 国产一级片一区二区三区 | 日韩av视屏在线观看 | 日日插日日干 | 久草色在线观看 | 中文字幕资源网 | 亚洲午夜av电影 | 久久成人国产精品一区二区 | 高清av免费看| 精品久久久免费 | 97av精品 | 又黄又刺激 | 丁香久久五月 | 天天爱天天色 | 色无五月| 国产成人无码AⅤ片在线观 日韩av不卡在线 | 97天天综合网 | 成年人在线免费视频观看 | 日韩一级精品 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 最新日韩视频在线观看 | 日韩欧美国产免费播放 | 精品91久久久久 | 久久久网站 | 最新色站 | 黄色大全免费网站 | 狠狠色狠狠色综合系列 | 精品亚洲二区 | 亚洲精品2区 | 麻豆超碰| 久久视频这里只有精品 | 亚洲视频中文 | 色婷婷在线视频 | 97人人精品 | 高潮久久久久久久久 | 天堂网一区二区 | 综合久久综合久久 | 久草视频在线看 | 狠狠色丁香久久婷婷综合丁香 | 激情综合六月 | 九九热在线观看视频 | 精品视频国产 | 狠狠色婷婷丁香六月 | 在线视频免费观看 | 人人讲下载 | 青青草视频精品 | 四虎www com | 夜色.com| 人人澡人人干 | 亚洲电影影音先锋 | 中文字幕最新精品 | 看av免费| 黄网站色视频免费观看 | 国产91综合一区在线观看 | 91在线播放视频 | 国产精品一区二区三区免费看 | 久久婷婷久久 | 国产午夜精品av一区二区 | av午夜电影 | 免费热情视频 | 日韩欧美网址 | 国产精品久久久久久久久婷婷 | 探花视频在线版播放免费观看 | 亚洲精品国产精品国自 | 久久久国产精品一区二区三区 | 亚洲国产精品人久久电影 | 久久久久久久久久久免费av | 亚洲深夜影院 | 91中文视频 | 亚洲综合国产精品 | 国产一区二区三区视频在线 | 色综合咪咪久久网 | av色综合网| 久久精品看片 | 女人魂免费观看 | 国产精品福利在线 | 综合色天天 | 波多野结衣视频一区 | 91桃色免费视频 | 中文字幕在线观看一区 | 婷婷在线观看视频 | 久久99在线观看 | 99在线看| 成 人 a v天堂 | 永久黄网站色视频免费观看w | 欧美亚洲久久 | 国产精品av久久久久久无 | 爱情影院aqdy鲁丝片二区 | 久久精品免费电影 | 国产精品一区二区三区在线看 | 天天舔天天搞 | 国产成人三级一区二区在线观看一 | 亚洲三级在线播放 | 婷婷丁香五 | 久久深夜福利免费观看 | 亚洲天堂网在线观看视频 | 天天要夜夜操 | 精品国产a| 操操操干干干 | 在线观看中文字幕亚洲 | 亚洲一级黄色av | 婷婷干五月| av中文字幕在线免费观看 | 免费在线观看成人av | 黄色官网在线观看 | 91在线操| 999日韩| 久久99操 | 久久久片| 久草视频一区 | 中日韩免费视频 | 久久成人欧美 | 日本三级久久久 | 婷婷丁香九月 |