java语言的resource 接口
admin
2024-04-30 12:56:52
0
要求类实例级访问控制的类必须实现 resource 接口。该接口的 getowner() 方法返回类实例的所有者。fulfills(subject subject, string relationship) 方法被用于处理特定关系。另外,这些类使 用 .ibm.resource.security.auth.resourcepermission 类保护敏 感代码。例如,auction 类拥有下列构造函数: public auction() { permission permission = new resourcepermission(".ibm.security.sample.auction", "create"); aesscontroller.checkpermission(permission); } 所有者关系 resourcepermission 类的 implies(permission p) 方法是这个 框架的关键。implies() 方法就等同性比较名称和行为属性。如果定 义了一个关系,那么必须把受保护的类实例(resource)传递到 resourcepermission 构造函数中。resourcepermission 类理解所有 者关系。它将类实例的所有者与执行代码的 subject(用户)进行比 较。特定关系被委托给受保护类的 fulfills() 方法。 例如,在清单 5 中所示的 xml 策略文件中,只有 auction 类实 例的所有者可以更新(写)文件。该类的 setter 方法使用清单 6 中 显示的保护代码: 清单 6. 运行中的 implies(permission) 方法 public void setname(string newname) { permission permission = new resourcepermission(".ibm.security.sample.auction", "write", this); aesscontroller.checkpermission(permission); // sensitive code this.name = newname; } 被传递到 resourcepermission 构造函数中的 this 引用代表 auction 类实现的 resource 接口。由于策略文件中列出的关系是 owner,所以 resourcepermission 类使用这个引用检查当前 subject(用户)是否拥有与实例所有者相匹配的主体。如果指定了 另一个关系,那么 resourcepermission 类调用 auction 类的 fulfills(subject subject, string relationship) 方法。由 resource 实现类提供 fulfills() 方法中的逻辑。 xml 策略文件中列出的 bid 类拥有清单 7 中所示的方法(假设 bid 类实例有一个对相应 auction 类实例的引用 — auction)。 清单 7. 处理特定关系 public void setaepted(boolean flag) { permission permission = new resourcepermission(".ibm.security.sample.auction", "aept", this); aesscontroller.checkpermission(permission); // sensitive code this.aepted = flag; } public boolean fulfills(subject user, string relationship) { if( relationship.equalsignorecase("auctionowner") ) { string auctionowner = auction.getowner(); iterator principaliterator = user.getprincipals().iterator(); while(principaliterator.hasnext()) { principal principal = (principal) principaliterator.next(); if( principal.getname().equals(auctionowner) ) return true; } } return false; } 传递到 fulfills() 方法中的关系字符串是策略文件中列出的关 系。在这个案例中,我们使用了“auctionowner”字符串。 缺省情况下,xmlpolicyfile 类在当前工作目录中查找名为 resourcepolicy.xml 的文件。系统属 性 .ibm.resource.security.auth.policy 可以用于指定另一个不 同的文件名和位置。 websphere application server 示例 除命令行示例之外,您可能还想运行这个简单的程序,该程序为 了 ibm websphere application server,version 4.0.2 而被优化。 一个可运行的示例 综合这些信息,我们将运行一个简单的命令行示例。该示例程序 包含三个 jar 文件: resourcesecurity.jar example.jar exampleactions.jar resourcesecurity.jar 文件包含允许实例级访问控制的 jaas 扩展框架。它还包含一个 loginmoduleexample 类,这个类从 xml 文 件读取用户认证信息。用户标识和密码存储在 users.xml 文件中。 用户组存储在 groups.xml 文件中。关于 loginmoduleexample 的更 多信息,请参阅参考资料部分。 该示例包含四个附加的文件: login.conf policy resourcepolicy.xml run.bat 在试图运行这个示例程序之前,请确保更新了 run.bat、policy 和 resourcepolicy.xml 文件中的路径。缺省情况下,所有的密码都 是“passw0rd”。 示例如何工作 该示例程序提示输入用户标识和密码。它用 users.xml 文件中的 条目核对所提供的用户标识和密码。在认证了用户之后,程序设法创 建一个 userprofile 类实例,修改它并从中读取。缺省情况下,userprofile 类的所有者是 jane(jane)。当 jane 登录时,三个 操作全部成功。当 john(john)登录时,只有创建操作成功。当 jane 的经理 lou(lou)登录时,只有第一个和最后一个操作成功。当系 统管理员(admin)登录时,操作全部成功。当然,只有当提供的 resourcepolicy.xml 文件未被修改时,上述这些才都是真的。 示例安装 下面的安装指导假设您正在使用 jdk 1.3 并且已经把文件解压 缩到 d:jaasexample 目录。通过将文件解压缩到这个目录,您可以 省去一些工作;否则您就必须使用正确的路径名修改 policy 和 resourcesecurity.xml 策略文件。 下面是运行该示例需要做的工作: 下载这个示例的源文件。 把 jaas.jar 和 jaasmod.jar 复制到 jdk jrelibext 目录(即 d:jdk1.3jrelibext)。 向位于 jdk 的 jrelibsecurity 目录(即 d:jdk1.3jrelibsecurity)中的 java.security 文件的末尾添加下 面的字符串: auth.policy.provider=.ibm.resource.security.auth.xmlpolicyf ile。 执行 run.bat 文件。 结束语 类实例级授权把访问控制分离到一个通用框架(该框架使用基于 所有权和特定关系的策略)中。然后管理员可以在应用程序的生命周 期内更改这些策略。用这种方法扩展 jaas 减少了您或另一个程序员 必须在应用程序生命周期内业务规则发生更改时重写代码的可能性。 通过将关系字符串抽象为类可以进一步扩展特定关系这个概念。 不调用 resource 实现类的 fulfills(subject user, string relationship) 方法,而只要调用 relationship 实现类中定义的新 fulfills(subject user, resource resource) 方法。这样就会允许 许多 resource 实现类使用相同的关系逻辑。 6.java 的安全性 1. the security manager 是一个 application-wide object ( java.lang.securitymanager) 每个 java application 都可以有自己地 security manager,但是 默认地 java application 没有一个 security manager 可以通过下面地代码得到一个 security manager try { system.setsecuritymanager(new securitymanager(“--”)); } catch( ) {} 2. jdbc 在 jdbc 2 开发的过程中,sql99 还处在一种变化不定的情况下。 现在规范已经完成了,而且数据库厂商已经采用了部分标准。所以自 然地,jdbc 规范就跟着将自己与 sql99 功能的一部分相统一。最新 的 jdbc 规范已经采用了 sql99 标准中那些已经被广泛支持的功能, 还有那些在五年内可能会获得支持的功能。 1. datasource 在 jdbc2.0 optional package 中,提供了透明的连接池 (connection pooling)。 一旦配置了 j2ee 应用服务器后,只要用 datasource 获取连接 (connection),连接池(connection pooling)就会自动的工作。 如果用户希望建立一个数据库连接,通过查询在 jndi 服务中的 datasource,可以从 datasource 中获取相应的数据库连接。 datasource 被认为是从 jndi 中获取的网络资源。 datasource 在池中保存的对象都实现了 pooledconnection 接口。 当应用程序向 datasource 请求一个 connection 时,它会找到一 个可用的 pooledconnection 对象。 如果连接池空了,它就向 connectionpoolecdatasource 请求一个 新的 pooledconnection 对象 通过使用 datasource 接口 (jdbc 2.0) 或 drivermanager (jdbc 1.0) 接口,j2ee 组件可以获得物理数据库连接对象(connection)。要获得逻辑(合用的)连接,j2ee 组件必须使用 以下这些 jdbc 2.0 合用管理器接口: javax.sql.connectionpooldatasource 接口,该接口充当合用的 java.sql.connection 对象的资源管理器连接 factory。每家数据库 服务器供应商都提供该接口的实现 (例如,oracle 实现 oracle.jdbc.pool.oracleconnectionpooldatasource 类)。 javax.sql.pooledconnection 接口,该接口封装到数据库的物理 连接。同样,数据库供应商提供其实现。 对于那些接口和 xa 连接的每一个,都存在一个 xa(x/open 规 范)等价定义。 2. resultset 在 jdbc2.0 中,为了获得一个 uptatable result,在 query 语句 里必须包含 primarykey,并且查询的内容里必须一个 table ava.sql.resultset 接口中定义了三种类型的结果集 type_forward_only type_scroll_insensitive 这种类型的结果集支持双向滚动 type_scroll_sensitive 如果要建立一个双向滚动的 resultset,一定要在建立 statement 的时候使用如下参数 statement stmt = conn.createstatement(resultset.type_scroll_insensitive, resultset.concur_read_only); 3. jdbc 驱动程序 连通 oracle8.1.6 的 jdbc 把 oracle8.1.6/lib/jdbc/*.zip copy 到 %java_home%/jre/lib/ext/*.jar 如果光 copy 不 ren 为.jar 是没有用的。

相关内容

热门资讯

英国失业率升至近5年最高位 英国国家统计局2月17日发布的报告显示,由于经济增长乏力,2025年第四季度英国就业市场继续走软,失...
深夜全球资产大跌!纳指跌超1%... 每经编辑|陈柯名 美股开盘三大指数齐跌,道琼斯指数跌0.36%,标普500指数跌0.75%,纳斯达...
ST银江2025年预亏超17亿... 来源:经济观察网 经济观察网 基于最新公开信息,ST银江(股票代码:300020)有以下值得关注的事...
原创 特... 特朗普签令制裁古巴石油供应国,俄大使怒批“完全疯狂”:这记回马枪刺痛了谁? 背景:一纸行政令搅动加...
鹏扬基金总经理杨爱斌:2026... 岁序更新,骏马启程。值此2026马年新春佳节来临之际,谨向投资者朋友们致以诚挚的新春祝福,祝大家马年...
光大银行泰州分行被罚115万 近日,国家金融监督管理总局泰州监管分局发布了多张罚单,剑指光大银行股份有限公司泰州分行及其相关责任人...
伊朗宣布关闭霍尔木兹海峡部分区... 来源:21世纪经济报道 △伊朗伊斯兰革命卫队海军军演的主要阶段在霍尔木兹海峡展开 据伊朗方面17日...
新春守护不打烊 成都市场监管全... 春节假期开启,节日市场迎来消费高峰。近日,成都市各区(市)县市场监管局坚守监管一线,紧盯食品安全、价...
澳新银行:伦敦矿业股下跌,受价... 受金属价格下滑影响,伦敦矿业股早盘下跌。澳新 银行分析师写道,因美元走强打压了市场情绪,金价未能守住...
报告:凯德投资的私募基金业务可... 来源:滚动播报 大华继显的Adrian Loh在一份报告中称,凯德投资(CapitaLand Inv...
2025年AI落地进行时:企业... 今天分享的是:2025年AI落地进行时:企业业务、组织与人才升级实战案例集 报告共计:141页 20...
原创 中... 正当美国总统特朗普鼓吹“一日一赢”的神话时,一场美元霸权崩塌的前奏正在悄然演奏。截至今年1月份,美元...
俄罗斯石油神话正在崩塌:1.5... 王爷说财经讯:你敢信吗?2026年2月17日最新消息,足足1.5亿桶原油正漂在全球各大洋的油轮上,核...
景顺长城基金总经理康乐:主动有... 日月其迈,时盛岁新。农历马年来临,谨代表景顺长城基金,向广大投资者及所有支持和信任我们的朋友,致以最...
石家庄斜视怎么治疗?专业眼科医... 斜视带来的困扰 斜视不仅影响外观,还可能导致视力下降、立体视觉缺失等问题。比如孩子在学校看黑板、读书...
五天被三次约谈,高德地图怎么了... 来源:市场资讯 (来源:财闻) 借贷业务、火车票销售业务及网约车业务是高德被约谈的主要业务。 当前正...
金银价格大跳水 当地时间17日,全球多个主要市场因传统节日休市,贵金属市场交投清淡。 在美联储降息预期有所降温的背景...
消息称月之暗面新一轮超7亿美元... 2 月 17 日消息,据“科创板日报”报道,在完成上一轮 5 亿美元(现汇率约合 34.58 亿元人...
原创 春... 2026年春晚的钟声还未敲响,一场由机器人引发的消费飓风已提前登陆。当晚八点零七分,当《机械霓裳》节...
金价、银价,突然大跌! 继昨日下跌后,2月17日早上,现货金银再次双双急跌,现货黄金一度失守4980美元/盎司,日内跌超0....