您的位置: 首页 >> 新闻中心 >> 计算机 >> IT认证 >> 厂商认证 >> Oracle认证
关于Oracle中的N层认证具体介绍
■ 最新课程推荐更多课程>>
学校培训课程开课时间上课地点精英价报名
中软培训 ORACLE9i数据库电话预约海淀学院南路¥8624
东方瑞通 Oracle 9i DBA电话预约海淀区知春路¥6566
东方瑞通 Oracle 9i DBA-1 SQL与PL/SQL电话预约海淀区知春路¥1470
东方瑞通 Oracle 9i DBA-2 管理基础一电话预约海淀区知春路¥1960
东方瑞通 Oracle 9i DBA-2 管理基础二电话预约海淀区知春路¥2156

 

  开发访问数据库的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属性。

下一篇:Oracle:巧取指定记录与外关联查询

 


 1 取得表中第6到第10条记录的值

  1.1 第一种方法,使用minus语句

  假设ddl语句如下:

  CREATE TABLE T(ID VARCHAR2(4) PRIMARY KEY, VALUE INT)

  那么第一种方法就是取出前5条,再取出前10条,然后采用集合运算的方法把前10条减去前5条就OK了,SQL语句如下

以下是引用片段:
  SELECT * FROM T WHERE ROWNUM <= 10
  MINUS
  SELECT * FROM T WHERE ROWNUM <= 5;


  1.2 另外一种方法,采用子查询

  子查询...[查看详情]

  影视动画培训   北大BEC培训官方报名网站   2008美国夏令营启航官方指定报名网站   2008留学第一站!  
  北师大 火星时代
共举影视动画培训之鼎
  北大BEC培训官方报名网站
现在报名独享95折!
  2008年国家职业资格考试
一次过关完全备考手册
  2008留学第一站
留学资讯尽在精英留学站!
 
上一篇:通过Oracle认证的一些心得技巧
下一篇:Oracle:巧取指定记录与外关联查询
 相关新闻
·可预见的Oracle应用程序的性能优化·针对Oracle数据库的优化器详细介绍
·恢复只有完好数据文件的oracle数据库·如何修改ORACLE的DATAFILE文件名
·Oracle中的LOB类型处理·Oracle热备期间的过量Redo生成控制
·Oracle9i基于视图(view)的约束声明·Oracle10g中SCN与TimeStamp的相互转换
·Oracle诊断工具-RDA使用概述·如何杀死oracle令人头疼的死锁进程
·为什么要成为Oracle认证专家?·冷眼看Oracle认证 到底该不该入行?
·Oracle 数据库优化的R方法(Method R)·操作实务:Oracle数据库业务优化心得
·Oracle认证:巧取指定记录与外关联查询·Oracle:巧取指定记录与外关联查询
 
◇ 重点栏目导航
◇ 精英服务承诺
教育顾问:010-51660910
QQ交流:138660910
相关资料
·如何在Oracle10g中通过网络连接导入数据
·如何使用Oracle10gR2InstantClientLight
·实例讲解Oracle里抽取随机数的多种方法
·Oracle10g新特性之虚拟专用数据库
·Oracle建立二进制文件索引的方法
·Oracle8i中字符集乱码问题析及其解决办法
·为什么有时Oracle数据库不用索引来查找数
·Oracle10g第2版新特性之SQL和PLSQL
·Oracle10g第2版新特性之可管理性特性
·Oracle数据库删除重复记录的方法
相关试题
·2007年全国CPA考试试卷及答案解析之《会
·2007年CPA试卷及答案解析之《财务成本管
·2008年注会考前模拟试题之《财务成本管理
·2007年全国CPA《税法》考试试卷及答案解
·2008年中级会计职称《经济法》试题及答案
·2008年注册会计师考前模拟试题参考答案之
·2008年注册会计师考前模拟试题之《会计》
·2008年注册会计师考前模拟试题之《税法》
·2008年高校招生全国统考理数试题(四川延
·2008年全国高考物理科试题参考答案(上海
相关热贴
·微软资格论证模拟题:70-210试题
·SUN认证简介
·三大计算机认证考试侧重不同 需理智选择
·Adobe认证简介
·Microsoft认证考试特点与价值
·IBM认证介绍
·为什么要获得认证
·给版块加点资料吧——CCIE考试介绍
·排除舆论误导 走出IT考证的五大误区
·全国计算机等级考试评卷、成绩处理和证书