可创建您自己的单点登录令牌实现。 单点登录令牌实现是在登录主题中设置的,并且将作为
HTTP Cookie 添加到 HTTP 响应。
有关此任务
Cookie 名称是 SingleSignonToken.getName 应用程序编程接口 (API) 和
SingleSignonToken.getVersion API 的并置。 不存在定界符。 当您将单点登录令牌添加到主题时,它会进行水平传播,并且会向下游传播以防将主题用于其他 Web 请求。 从传播登录接收定制单点登录令牌时,必须将该令牌反序列化。 如果您要实现以下某个任务,考虑写您自己的实现:
- 将属性隔离在您自己的实现内。
- 使用定制序列化对信息进行序列化。 应对信息进行加密,因为它在 HTTP 响应之外,并且在因特网上可用。 您必须反序列化或解密目标中的字节,并将此信息添加回主题。
- 使用 getUniqueID API 会影响主题的整体唯一性。
要实现定制单点登录令牌,请完成以下步骤:
过程
- 编写 SingleSignonToken 接口的定制实现。
有许多不同的方法可用于实现 SingleSignonToken 接口。 但是,应确保完全实现 SingleSignonToken
接口和令牌接口所需的方法。
![[z/OS]](../images/ngzos.svg)
实现此接口后,可以将其放在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 接口的抽象类。 所有令牌实现(包括单点登录令牌 )都可能扩展抽象类,并且会完成大部分工作。
要查看单点登录令牌的实现,请参阅 示例: com.ibm.wsspi.security.token.SingleSignonToken 实现
- 在 WebSphere Application Server 登录期间添加和接收定制单点登录令牌。
本任务的实现通常是通过将定制登录模块添加到各种应用程序和系统登录配置。 但是,要反序列化信息,您必须插入定制登录模块,这将在后续步骤中讨论。 在登录模块中对该对象实例化后,那么可以在落实方法期间将其添加到主题。
示例: 定制单点登录令牌登录模块中的代码样本显示了如何确定登录是初始登录还是传播登录。 不同之处在于 WSTokenHolderCallback
回调是否包含传播数据。 如果回调不包含传播数据,那么初始化新的定制单点登录令牌实现,并将它设置到主题中。 而且,如果 HTTP 请求对象在回调上可用,那么从 HTTP 请求查找 HTTP Cookie。 可从水平传播登录和 HTTP 请求获取定制单点登录令牌。 但是,建议您使令牌在两个位置都可用,这样即使此服务器不支持传播,此信息还是会达到任何前端应用程序服务器。
可在登录模块的落实阶段使单点登录令牌成为只读的。 如果您使令牌为只读,那么其他属性不能添加到应用程序中。
限制:
- HTTP Cookie 具有大小限制。 应该在适用于特定浏览器的文档中包括大小限制。
- WebSphere Application Server 运行时不会处理未生成的 cookie ,因此此 cookie 不会由运行时使用。
- 如果在 getUniqueID 方法中返回某些内容,那么 SingleSignonToken 对象在主题中时会影响主题的高速缓存查询。
- 在登录期间从 HTTP 请求对象获取 HTTP Cookie 或从应用程序获取。
在
示例: HTTP cookie 检索 中找到的样本代码显示了如何从 HTTP 请求中检索 HTTP cookie ,对 cookie 进行解码以使其返回到原始字节,并根据字节创建定制 SingleSignonToken 对象。
- 将定制登录模块添加到已包含用于接收序列化版本的定制传播令牌的 com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule 的 WebSphere Application Server 系统登录配置。
因为此登录模块依赖于 sharedState 状态下由 com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule
登录模块添加的信息,所以在添加 com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule
登录模块后添加此登录模块。
有关将定制登录模块添加至现有登录配置的信息,请参阅“为 JAAS 的系统登录配置开发定制登录模块”。