首页 > 解决方案 > 来自 F5 的 iv-user 的 Websphere Liberty 身份验证

问题描述

实际情况:

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

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

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

标签: authenticationjakarta-eewebsphere-libertyf5

解决方案


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

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,因此您至少也应该考虑该选项。


推荐阅读