使用 F5 中的 iv-user 进行 Websphere Liberty 身份验证

Websphere Liberty authentication with iv-user from F5

实际情况:

我有一个 Liberty 服务器,我的 JEE - 应用程序是 运行。如果你进入应用程序,liberty 会运行一个登录表单,你可以在其中输入你的用户名和密码,这将由 Ldap-Registry 检查,最终你将通过身份验证,liberty 会使用你的凭据创建一个会话。现在您可以看到该应用程序,该应用程序可以使用 SessionContext 并知道您是谁...

由于我的公司现在改变了其安全理念,我们必须使用 F5 APM。 迄今为止: 在进入应用程序时,您将被重定向到 F5 APM,它将重定向到您可以登录的 IDP。之后它在 Http-Header 中使用 IV-User 重定向回应用程序。好消息是,我仍然可以从这里使用 Lioberty Formlogin - 但这有点愚蠢,因为你必须登录两次...

现在我的问题是,我如何使用这个 IV-User 自由创建 UserSession 或者检查 LdapRegistry?

如果您不想查询注册表,则需要创建完整主题。所以不是这个:

return TAIResult.create(HttpServletResponse.SC_OK, userid);

您需要在 TAI 中执行此操作:

// stash in hashtable
Hashtable hashtable = new Hashtable();
hashtable.put(AttributeNameConstants.WSCREDENTIAL_UNIQUEID,uniqueid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_SECURITYNAME,userid);
hashtable.put(AttributeNameConstants.WSCREDENTIAL_GROUPS, groupList); 
hashtable.put(AttributeNameConstants.WSCREDENTIAL_CACHE_KEY, "myCustomAttribute" + uniqueid);    
Subject subject = new Subject();
subject. getPublicCredentials().add(hashtable);
return TAIResult.create(HTTPServletResponse.SC_OK, "userid", subject);

有关更多信息,请查看这些页面:

成功的身份验证应该会创建 LTPA cookie,而不需要额外的身份验证,因此如果您没有看到此类行为,则仍然存在配置错误。

我快速查看了 F5 APM,它看起来支持 OIDC,因此您至少也应该考虑该选项。