实现定制授权令牌以进行安全性属性传播

本任务说明如何创建您自己的 AuthorizationToken 实现,它是在登录主题中设置的,并且在下游传播。

有关此任务

缺省 AuthorizationToken 通常足够传播特定于用户的属性。 如果您要实现以下某个任务,考虑写您自己的实现:
  • 将属性隔离在您自己的实现内。
  • 使用定制序列化对信息进行序列化。 您必须反序列化目标中的字节,并将信息添加回线程。 本任务还可能包含加密和解密。
  • 使用 getUniqueID() 应用程序编程接口 (API) 影响主题的整体唯一性。

要实现定制授权令牌,您必须完成以下步骤:

过程

  1. 编写 AuthorizationToken 接口的定制实现。
    存在多个不同的方法,用于实现 AuthorizationToken 接口。 但是,确保 AuthorizationToken 接口和令牌接口需要的方法都完全实现。

    [AIX Solaris HP-UX Linux Windows][z/OS]实现此接口后,您可以将其放置在app_server_root/classes目录。 或者,可将类放入任何专用目录。 然而,确保WebSphere Application Server类加载器可以定位该类,并且它被授予适当的权限。 您可以将包含此类的 Java™ 档案 (JAR) 文件或目录添加到server.policy文件,以使其具有服务器代码所需的必要权限。

    [IBM i]实现此接口后,将其放置在profile_root/classes目录。 有关课程的更多信息,请参阅在您的配置文件中为自定义类创建一个类子目录

    提示:传播框架定义的所有令牌类型都具有类似的接口。 基本上,令牌类型是实现 com.ibm.wsspi.security.token.Token 接口的标记接口。 此接口定义大多数方法。 如果您计划实现多个令牌类型,请考虑创建实现 com.ibm.wsspi.security.token.Token 接口的抽象类。 所有令牌实现(包括 AuthorizationToken)可能扩展抽象类,然后完成大多数作业。

    要查看实现AuthorizationToken,看例子:com.ibm.wsspi.security.token.AuthorizationToken执行

  2. 添加并接收定制AuthorizationToken期间WebSphere Application Server登录。
    本任务的实现通常是通过将定制登录模块添加到各种应用程序和系统登录配置。 但是,为了反序列化信息,您必须插入自定义登录模块,这将在传播自定义 Java 可序列化对象以进行安全属性传播。 在登录模块中对该对象实例化后,就可在 commit() 方法中将它添加到主题。

    如果要向主题添加信息以进行传播,请参阅传播自定义 Java 可序列化对象以进行安全属性传播。 如果您要确保传播此信息、要执行自己的定制序列化,或者要为主题高速缓存指定唯一性,那么考虑写您自己的 AuthorizationToken 实现。

    代码示例示例:自定义AuthorizationToken登录模块显示如何确定登录是初始登录还是传播登录。 这些登录类型之间的不同在于 WSTokenHolderCallback 是否包含传播数据。 如果回调不包含传播数据,那么初始化新的定制 AuthorizationToken 实现,并将它设置到主题中。 如果回调包含传播数据,那么查找您特定的定制 AuthorizationToken TokenHolder 实例、将 byte[] 转换回您的定制 AuthorizationToken 对象,并将它设置回主题中。 代码样本显示两个实例。

    可使 AuthorizationToken 在登录模块的落实阶段为只读。 如果您没有使令牌为只读,那么属性可添加到应用程序中。

  3. 添加您的自定义登录模块到WebSphere Application Server系统登录配置已经包含com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule用于接收自定义授权令牌的序列化版本。

    因为此登录模块依赖于 com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule 所添加 sharedState 中的信息,所以将此登录模块添加在 com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule 后。 有关如何将定制登录模块添加到现有登录配置的信息,请参阅“为 JAAS 的系统登录配置开发定制登录模块”。

结果

在完成这些步骤后,您已实现定制 AuthorizationToken。