国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

關(guān)于Oracle數(shù)據(jù)庫中的N層認(rèn)證具體介紹

瀏覽:5日期:2023-11-13 09:46:08
開發(fā)訪問數(shù)據(jù)庫的Web應(yīng)用程序時(shí),大多數(shù)開發(fā)人員要設(shè)置一個(gè)連接池(一批預(yù)先打開的由中間層保持的數(shù)據(jù)庫會話期)來提高連接速度。應(yīng)用程序從連接池獲得連接,要比為每一個(gè)用戶請求創(chuàng)建新的連接快得多。 連接池的缺點(diǎn)是每個(gè)用戶要作為一個(gè)單一的、高級權(quán)限數(shù)據(jù)庫賬戶向數(shù)據(jù)庫注冊。盡管Web用戶通常是用他們唯一的身份向應(yīng)用程序注冊,但只要數(shù)據(jù)庫已經(jīng)被連接,則所有的系統(tǒng)用戶就都是匿名的。 Oracle數(shù)據(jù)庫在安全性方面有很好的聲譽(yù),因而利用它的重要安全性功能來執(zhí)行你的應(yīng)用程序安全性政策是非常適宜的。假如已知用戶身份,該數(shù)據(jù)庫就能夠進(jìn)行審計(jì)并實(shí)施基于角色的和細(xì)粒度化的訪問控制,包括虛擬專用數(shù)據(jù)庫(Virtual Private Database,VPD)。 Oracle至少提供兩種在所有各層(tiers)保持用戶身份的方法:代理認(rèn)證和應(yīng)用程序上下文參數(shù)CLIENT_IDENTIFIER。 代理認(rèn)證 代理認(rèn)證使中間層能夠用'普通(generic)'或'應(yīng)用程序(application)'賬戶對數(shù)據(jù)庫的訪問進(jìn)行認(rèn)證,然后即代表真實(shí)的用戶建立輕便會話。一個(gè)代理會話可以通過提交用戶的辨認(rèn)名(Distinguished Name (DN)),即一個(gè)x.509證書,或全局唯一用戶名來建立。 例如,為了答應(yīng)用戶Kyle通過具有角色admin的中間層(它作為用戶webapp保持一個(gè)連接池)連接到數(shù)據(jù)庫,數(shù)據(jù)庫治理員首先授予如下的權(quán)限:ALTER USER Kyle GRANT CONNECT THROUGH webapp WITH ROLE admin; 接著,該應(yīng)用程序代碼(在這里是一個(gè)servlet)翻譯從Web接收到的用戶名并建立如下所示的代理會話: String userName = request.getRemoteUser();InitialContext initial =new InitialContext();OracleOCIConnectionPool ds =(OracleOCIConnectionPool)initial.lookup('jdbc/OracleOciDS');oracle.jdbc.OracleConnection conn = null;Properties p = new Properties();p.setProperty(PROXY_USER_NAME, username);conn = ds.getProxyConnection(PROXYTYPE_USER_NAME, p); 代理認(rèn)證答應(yīng)使用包括腳色在內(nèi)的所有數(shù)據(jù)庫安全性功能,但是它要求你設(shè)置真實(shí)的數(shù)據(jù)庫用戶(數(shù)據(jù)庫或企業(yè))。 使用CLIENT_IDENTIFIER 但是,假定你有成百上千的用戶,而你不想為每個(gè)用戶都設(shè)立一個(gè)Oracle數(shù)據(jù)庫或企業(yè)用戶。那么你也可以通過使用應(yīng)用程序上下文將用戶身份從中間層傳遞到該數(shù)據(jù)庫。 應(yīng)用程序上下文是一組可用于數(shù)據(jù)庫會話的名字/值對。Oracle9i有預(yù)定義的應(yīng)用程序上下文名字空間USERENV,它含有用戶會話信息,包括預(yù)定義的屬性CLIENT_IDENTIFIER。這一屬性通常用作從全局應(yīng)用程序上下文選取值的會話標(biāo)識符,但是我們將稍加變更,將它用于保持Web用戶標(biāo)識符。 從servlet或Enterprise JavaBeans (EJB)會話bean,應(yīng)用程序代碼將從Web請求檢索用戶名,然后調(diào)用內(nèi)部PL/SQL過程設(shè)置CLIENT_IDENTIFIER: String userName = request.getRemoteUser();...(set up the JDBC connection)...PreparedStatement ps = conn.prepareCall('begin dbms_session.set_identifier(?);end;');ps.setString(1, username);ps.execute();SELECT sys_context('userenv', 'client_identifier') FROM dual; 使用這種方法沒有使用代理認(rèn)證那樣安全。因?yàn)槿魏稳硕寄茉O(shè)置這個(gè)上下文值,你必須借助額外的安全性措施,如細(xì)粒度的訪問控制和安全的應(yīng)用程序角色等。你的應(yīng)用程序還應(yīng)在將數(shù)據(jù)庫連接返回給連接池之前清除CLIENT_IDENTIFIER屬性。
標(biāo)簽: Oracle 數(shù)據(jù)庫
主站蜘蛛池模板: 欧美成人怡红院在线观看 | 亚洲精品成人久久 | 国产日韩精品一区二区三区 | 一级做a爰在线就看 | 中文偷拍视频在线观看 | 美女一级片视频 | 777色狠狠一区二区三区 | 亚洲精品一区二区三区不卡 | 欧美视频在线观看网站 | 中文字幕日韩精品亚洲七区 | 久久香蕉国产观看猫咪3atv | 牛人国产偷窥女洗浴在线观看 | 92精品国产自产在线 | 欧美成人aaa大片 | 91久久国产综合精品女同我 | 国产成人啪精品视频免费软件 | 国产精品 色 | 欧美国产日本精品一区二区三区 | 欧美大片国产在线永久播放 | 99爱视频免费高清在线观看 | 免费国产视频在线观看 | 亚洲高清免费观看 | 手机看片欧美 | 在线精品国产成人综合第一页 | 欧美日韩视频一区三区二区 | 91精品久久久久久久久网影视 | 成人免费在线播放视频 | 特黄视频 | 国产理论最新国产精品视频 | 久久r这里只有精品 | 美国毛片aa | 欧美日韩亚洲国产 | 免费观看大片毛片 | 久久久久久久国产精品毛片 | 亚洲美女视频一区二区三区 | 中文字幕va一区二区三区 | 国产1区在线观看 | 欧美日韩不卡一区 | 韩国一级毛片视频 | 成人综合婷婷国产精品久久免费 | 国产精品一一在线观看 |