大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 数据库 -> N层认证

N层认证

时间: 2021-07-31 作者:daque

N层认证

作家:cameron o'rourke

安定性不许创造在隐姓埋名用户的普通上。

开拓考察数据库的web运用步调时,大普遍开拓职员要树立一个贯穿池(一批预先翻开的由中央层维持的数据库对话期)来普及贯穿速率。运用步调从贯穿池赢得贯穿,要比为每一个用户乞求创造新的贯穿快得多。

贯穿池的缺陷是每个用户要动作一个简单的、高档权力数据库账户向数据库备案。纵然web用户常常是用她们独一的身份向运用步调备案,但只有数据库仍旧被贯穿,则一切的体例用户就都是隐姓埋名的。

oracle数据库在安定性上面有很好的光荣,所以运用它的要害安定性功效来实行你的运用步调安定性策略利害常符合的。即使已知用户身份,该数据库就不妨举行审批并实行鉴于脚色的和细粒度化的考察遏制,囊括假造专用数据库(virtual private database,vpd)。

oracle起码供给两种在一切各层(tiers)维持用户身份的本领:代劳认证和运用步调左右文参数client_identifier。

代劳认证

代劳认证使中央层不妨用"普遍(generic)"或"运用步调(application)"账户对数据库的考察举行认证,而后即代办如实的用户创造简捷对话。一个代领会话不妨经过提交用户的辩别名(distinguished name (dn)),即一个x.509文凭,或全部独一用户名来创造。

比方,为了承诺用户kyle经过具备脚色admin的中央层(它动作用户webapp维持一个贯穿池)贯穿到数据库,数据库处置员开始赋予如次的权力:alter user kyle grant connect through webapp with role admin;

接着,该运用步调代码(在这边是一个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);

 

代劳认证承诺运用囊括脚色在前的一切数据库安定性功效,然而它诉求你树立如实的数据库用户(数据库或企业)。

运用client_identifier

然而,假设你有成千盈百的用户,而你不想为每个用户都创造一个oracle数据库或企业用户。那么你也不妨经过运用运用步调左右文将用户身份从中央层传播到该数据库。

 

运用步调左右文是一组可用来数据库对话的名字/值对。oracle9i有预订义的运用步调左右文名字空间userenv,它含有效户对话消息,囊括预订义的属性client_identifier。这一属性常常用作从全部运用步调左右文采用值的对话操作符,然而咱们将稍加变换,将它用来维持web用户操作符。

从servlet或enterprise javabeans (ejb)对话bean,运用步调代码将从web乞求检索用户名,而后挪用里面pl/sql进程树立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;

 

运用这种本领没有运用代劳认证那么安定。由于任何人都能树立这个左右文值,你必需借助特殊的安定性办法,如细粒度的考察遏制和安定的运用步调脚色等。你的运用步调还应在将数据库贯穿归来给贯穿池之前废除client_identifier属性。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.