黑马程序员技术交流社区

标题: 学习心得笔记 [打印本页]

作者: 晴雨    时间: 2018-12-25 10:55
标题: 学习心得笔记
resource 接口
要求类实例级访问控制的类必须实现 resource 接口。该接口的 getowner() 方法返回类实例的所有者。fulfills(subject subject, string relationship) 方法被用于处理特定关系。另外,这些类使用 com.ibm.resource.security.auth.resourcepermission 类保护敏感代码。例如,auction 类拥有下列构造函数:

public auction() {
permission permission =
new resourcepermission("com.ibm.security.sample.auction", "create");
accesscontroller.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("com.ibm.security.sample.auction", "write", this);
accesscontroller.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 setaccepted(boolean flag) {
permission permission =
new resourcepermission("com.ibm.security.sample.auction", "accept", this);
accesscontroller.checkpermission(permission);
// sensitive code
this.accepted = 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 的文件。系统属性 com.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 的更多信息,请参阅参考资料部分。
作者: 霹雳娃    时间: 2018-12-25 16:48
你真的太优秀了,全是干货
作者: 宝玉    时间: 2018-12-26 10:06
真的干货呀,专门过来感谢的
作者: SZ小可爱    时间: 2018-12-26 14:04
棒棒棒
作者: jouyeia    时间: 2018-12-26 15:37

作者: 丝瓜    时间: 2019-4-18 13:16
故天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
作者: 万年吃瓜    时间: 2019-5-10 14:05
昨天是一张作废的支票,明天是一张期票,而今天则是唯一拥有的现金。加油
作者: 卡哇伊伊    时间: 2019-6-4 17:05
能坚持学习的人都是最棒的。
作者: 夜听雨    时间: 2019-7-4 09:06
选择了,便走下去。
作者: 柠檬leung不酸    时间: 2019-7-17 13:30
只要朝着一个方向努力,一切都会变得得心应手。加油
作者: 卡哇伊伊    时间: 2019-7-30 09:49
能坚持学习的人都是最棒的。
作者: 柠檬leung不酸    时间: 2019-8-7 12:32
预测未来最好的方法就是去创造未来。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2