实现定制授权令牌以进行安全性属性传播
本任务说明如何创建您自己的 AuthorizationToken 实现,它是在登录主题中设置的,并且在下游传播。
关于此任务
- 将属性隔离在您自己的实现内。
- 使用定制序列化对信息进行序列化。您必须反序列化目标中的字节,并将信息添加回线程。本任务还可能包含加密和解密。
- 使用 getUniqueID() 应用程序编程接口 (API) 影响主题的整体唯一性。
要实现定制授权令牌,您必须完成以下步骤:
过程
- 编写 AuthorizationToken 接口的定制实现。 存在多个不同的方法,用于实现 AuthorizationToken 接口。但是,确保 AuthorizationToken 接口和令牌接口需要的方法都完全实现。
在实现此接口后,可以将它放入 app_server_root/classes 目录中。或者,可将类放入任何专用目录。但是,要确保 WebSphere Application Server 类装入器可找到此类,并且该类被授予了相应的许可权。可以将 Java™ 归档 (JAR) 文件和包含此类的目录添加到 server.policy 文件中,以便它具有服务器代码所需的必需许可权。
在实现此接口后,将它放入 profile_root/classes 目录中。有关类的更多信息,请参阅在概要文件中为定制类创建 classes 子目录。
提示: 传播框架定义的所有令牌类型都具有类似的接口。基本上,令牌类型是实现 com.ibm.wsspi.security.token.Token 接口的标记接口。此接口定义大多数方法。如果您计划实现多个令牌类型,请考虑创建实现 com.ibm.wsspi.security.token.Token 接口的抽象类。所有令牌实现(包括 AuthorizationToken)可能扩展抽象类,然后完成大多数作业。要了解 AuthorizationToken 的实现,请参阅示例:com.ibm.wsspi.security.token.AuthorizationToken 实现
- 在 WebSphere Application Server 登录期间添加和接收定制 AuthorizationToken。 本任务的实现通常是通过将定制登录模块添加到各种应用程序和系统登录配置。但是,为了反序列化信息,您必须插入定制登录模块,这在传播定制 Java 可序列化对象以进行安全性属性传播中有所讨论。在登录模块中对该对象实例化后,就可在 commit()
方法中将它添加到主题。
如果要将信息添加到传播的主题,请参阅传播定制 Java 可序列化对象以进行安全性属性传播。如果您要确保传播此信息、要执行自己的定制序列化,或者要为主题高速缓存指定唯一性,那么考虑写您自己的 AuthorizationToken 实现。
示例:定制 AuthorizationToken 登录模块中的代码样本说明如何确定登录是初始登录还是传播登录。这些登录类型之间的不同在于 WSTokenHolderCallback 是否包含传播数据。如果回调不包含传播数据,那么初始化新的定制 AuthorizationToken 实现,并将它设置到主题中。如果回调包含传播数据,那么查找您特定的定制 AuthorizationToken TokenHolder 实例、将 byte[] 转换回您的定制 AuthorizationToken 对象,并将它设置回主题中。代码样本显示两个实例。
可使 AuthorizationToken 在登录模块的落实阶段为只读。如果您没有使令牌为只读,那么属性可添加到应用程序中。
- 将定制登录模块添加到已包含 com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule 的 WebSphere Application Server 系统登录配置,用于接收定制授权令牌的序列化版本。
因为此登录模块依赖于 com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule 所添加 sharedState 中的信息,所以将此登录模块添加在 com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule 后。有关如何将定制登录模块添加到现有登录配置的信息,请参阅“为 JAAS 的系统登录配置开发定制登录模块”。
结果
子主题
示例:com.ibm.wsspi.security.token.AuthorizationToken 实现
使用此文件查看 AuthorizationToken 实现的示例。以下样本代码不会扩展抽象类,而宁可直接实现 com.ibm.wsspi.security.token.AuthorizationToken 接口。您可以直接实现接口,但它可能会导致写入重复的代码。然而,如果在处理各种令牌实现的方式之间有着相当大的差别,那么可以选择直接实现接口。示例:定制 AuthorizationToken 登录模块
此文件显示了如何确定登录是初始登录还是传播登录。


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_custauthimpl
文件名:tsec_custauthimpl.html