<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 23,comments - 12,trackbacks - 0

    摘要
      Realm是一個用戶數據庫的概念,類似于Unix中的用戶群組,它通過用戶名和密碼來標識一個用戶,這個用戶屬于一定的角色(role)。而一個特殊的web應用資源,可以限定某個角色的用戶才被許可訪問。這種許可策略,使得web應用的整體權限控制與應用細節相剝離,從而獲得更好的可配置性。下面我們通過比較常見的基于數據庫,使用直接JDBC連接的Realm的配置使用情況,看看它是如何實現粗粒度的ACL的。(2004-03-13 11:21:34)

    --------------------------------------------------------------------------------
    By lanf

    應用TOMCAT基于JDBC的的Realm (1)
    作(譯)者:Lanf From LinuxAID

    Realm是一個用戶數據庫的概念,類似于Unix中的用戶群組,它通過用戶名和密碼來標識一個用戶,這個用戶屬于一定的角色(role)。而一個特殊的web應用資源,可以限定某個角色的用戶才被許可訪問。這種許可策略,使得web應用的整體權限控制與應用細節相剝離,從而獲得更好的可配置性。下面我們通過比較常見的基于數據庫,使用直接JDBC連接的Realm的配置使用情況,看看它是如何實現粗粒度的ACL的。

    JDBCRealm

    JDBCRealm是使用JDBC連接關系數據庫的一個Tomcat 4 Realm接口的實現。它可以直接使用你現有的用戶數據庫表,來獲取角色用戶的信息,完成驗證。你必須滿足以下條件:

    必須有個有效的數據表,里面有所有你需要通過Realm來認證的用戶。這張表必須至少有兩個字段,可以用來標示用戶名和密碼。
    需要有一張表來標明用戶與角色的對應關系,用戶可以有任意個角色,沒有角色也是合法的,這是和UNIX用戶群組的不同之處。同樣這個表也需要兩個字段,來映射用戶名與角色名的對應關系。
    數據庫準備

    在我們的例子中,我們建兩張新表來處理realm的認證。
    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)
    );
     


    JDBC驅動

    你需要將你的JDBC啟動包放在 $CATALINA_HOME/server/lib 目錄或者 $CATALINA_HOME/common/lib 目錄下,確保Tomcat能通過CLASSPATH找到它。使用mysql數據庫的話,你可以使用類似 mm.mysql-2.0.4-bin.jar 的驅動包;Oracle 9i你可以使用ojdbc14.jar等Oracle自帶的驅動;PostgreSQL可以在http://jdbc.postgresql.org/ 取得合適的驅動程序。

    編輯server.xml

    編輯$CATALINA_HOME/conf/server.xml文件,在host里添加如下片段(以MySQL為例)
     <Realm className = 'org.apache.catalina.realm.JDBCRealm' debug='0'
          driverName = 'org.gjt.mm.mysql.Driver'
    connectionURL = 'jdbc:mysql://localhost/authority?user=dbuser&password=dbpass'
           userTable='users' userNameCol='user_name' userCredCol='user_pass'
       userRoleTable='user_roles' roleNameCol='role_name'/>

     


    其中 jdbc:mysql://localhost/authority?user=dbuser&password=dbpass 是Mysql的連接串,你可以根據你的需要進行修改。其有關屬性介紹如下: 屬性 描述
    className Realm的實現類,這里必須是 'org.apache.catalina.realm.JDBCRealm'
     
    connectionName 數據庫用戶名
     
    connectionPassword 數據庫用戶的密碼
     
    connectionURL 數據庫的JDBC連接串
     
    debug Debug的程度,它和Logger相關配置配合使用,值越高信息越詳細,缺省為0
     
    digest 存儲密碼的加密方式,如果不指定則是明文存儲。指定為 java.security.MessageDigest 之類的類名則要看數據庫里表中用戶密碼的存放格式。
     
    driverName 數據庫驅動程序類
     
    roleNameCol 角色表的存放角色名的字段名.
     
    userCredCol 用戶表里存放密碼的字段名
     
    userNameCol 用戶表中存放用戶名的字段名
     
    userRoleTable 角色表的表名(類似/etc/group)
     
    userTable 用戶表的表名
     


    注意點

    如果你對用戶表進行了新增操作和修改操作,那么會實時作用于正要進行登陸操作的用戶;
    用戶已經完成登陸后,你對它進行的刪除修改操作,并不能實時作用于用戶的當前狀態,只能在此用戶下次登陸的時候生效;(如果是基于表單認證的用戶,是在會話結束或者他注銷后當前認證失效;如果是基礎認證的用戶則需要等到當前窗口關閉)
    對數據庫里那兩個表的增刪改管理,你需要自行編寫合適的業務代碼,Tomcat并沒有提供標準的實現,這是沒有意義的。
    編譯者注:這部分內容是幫助newbie理解Realm而直接從Realm Configuration HOW-TO中摘譯的,是我們完整例子所必須要了解并正確配置的部分,不過似乎沒有看到類似的譯文,就做了這件累贅的事情。這系列文章對熟手基本沒有什么幫助,請見諒。

     

    posted on 2005-08-17 09:41 my java 閱讀(547) 評論(0)  編輯  收藏 所屬分類: java身份認證轉帖
    主站蜘蛛池模板: 1000部拍拍拍18勿入免费视频下载| jzzjzz免费观看大片免费| 黄页网站免费在线观看| 亚洲经典在线中文字幕| 91免费国产自产地址入| 亚洲成年人免费网站| 91久久精品国产免费直播| 中文字幕无码亚洲欧洲日韩| 免费看的黄色大片| 成在线人直播免费视频| 亚洲熟妇少妇任你躁在线观看无码| 一级看片免费视频囗交| 亚洲精品国产美女久久久| 黄网站色视频免费在线观看的a站最新 | 亚洲综合在线视频| 国产又黄又爽又猛免费app| 中文字幕乱码亚洲精品一区| 免费少妇a级毛片人成网| 中文字幕无线码中文字幕免费| 亚洲欧洲精品无码AV| 国产成人精品免费视频动漫| 亚洲丁香婷婷综合久久| 亚洲日韩涩涩成人午夜私人影院| 老司机69精品成免费视频| 亚洲性一级理论片在线观看| 国产猛烈高潮尖叫视频免费| 成人无码视频97免费| 亚洲国产精品综合久久网各| 日本免费高清一本视频| 国产成人AV免费观看| 亚洲系列国产精品制服丝袜第| 日韩成全视频观看免费观看高清 | 含羞草国产亚洲精品岁国产精品| 亚洲 综合 国产 欧洲 丝袜| 精品国产污污免费网站| 亚洲六月丁香婷婷综合| 中文字幕亚洲综合久久男男| 88av免费观看| 乱淫片免费影院观看| 亚洲视频免费观看| 亚洲精品tv久久久久|