1

我已经根据这篇文章https://www.ibm.com/developerworks/library/mw-1612-lansche-trs/index.html实现了 com.ibm.ws.security.web.saml.ACSTrustAssociationInterceptor 。它似乎工作。任何人都有从 TAIResult 填充主题的示例代码?

4

1 回答 1

1

IBM SAML TAI (是 IBM 提供的com.ibm.ws.security.web.saml.ACSTrustAssociationInterceptorJava 类。它是 WebSphere Trust Association Interceptor 框架的实现,并使用 SAML 规范来建立信任,而无需编写自定义 Java 代码。

根据您问题的措辞,您似乎可能已经按照该文章中的链接访问了一篇关于底层 TAI 框架的更早(但仍然有效)的技术文章。com.ibm.wsspi.security.tai.TrustAssociationInterceptor本指南绝对描述了使用您自己的信任逻辑编写实现 IBM Java 接口 ( ) 的自定义代码,并涵盖了public TAIResult negotiateValidateandEstablishTrust()您必须实现的方法。

TAI 文章中稍低一点的是对 TAIResult 类中的三个静态方法的概述,以帮助您填充标识:

TAIResult 类具有三个用于创建 TAIResult 的静态方法,所有这些方法都始终将 int 作为第一个参数。此参数应为有效的 HTTP 请求返回码...

您可以通过两种方式构建一个Subject:通过提供用户标识字符串(并允许 WebSphere 查询用户存储库)让 WebSphere 自动创建一个,或者通过编程方式手动创建一个。手动方法是最强大的——你可以做任何事情,从动态创建一个“临时”用户,包括组成员资格——或者你可以使用其他 WAS API 创建一个完全填充的Subject然后修改它——例如添加组成员资格即时(而不是在底层用户存储库中)。

在WAS 身份验证和 TAI 实现Subject的权威指南中的“TAI 使用”部分中提供了每种方法的代码示例。

如果您确实构建自己的Subject或添加自定义凭证对象,请确保这些类是可序列化的 - 请参阅文章的传播部分。

只是为了提供一些示例代码,下面是文章中的一个示例,该示例描述了Subject在您的negotiateValidateandEstablishTrust()方法中完全动态地构建一个:

String userid = "the_user_id"; //get from request, etc
InitialContext ctx = new InitialContext();
UserRegistry reg  =(UserRegistry)ctx.lookup("UserRegistry");
String uniqueid = reg.getUniqueUserID(userid);

//define groups
ArrayList groups = new ArrayList();
// add admin group 
groups.add(reg.getUniqueGroupId("Administrators"));

// stash in hashtable
Hashtable hashtable = new Hashtable();
hashtable.put(AttributeNameConstants.WSCREDENTIAL_UNIQUEID,uniqueid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_SECURITYNAME,userid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_GROUPS,groups);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_CACHE_KEY,uniqueid+"MyCustom");

Subject subject = new Subject();
subject. getPublicCredentials().add(hashtable);
return TAIResult.create(HTTPServletResponse.SC_OK, "ignored", subject);

在您提到的 IBM 的 SAML TAI 中,他们自己实现上述内容以从中读取各种风格的 SAML XML 文档HttpServletRequest并对其进行处理,根据配置构建临时或注册用户身份。

关键文件:

于 2017-02-16T03:33:04.620 回答