WSSubject.getCallerPrincipal()如何在JavaEE应用程序中提取登录的用户数据



我是Java EE应用程序的新手。我正在处理一个遗留项目迁移任务,在进行迁移的同时,我需要了解身份验证机制在应用程序中的工作原理。它使用的是IBM OpenLiberty服务器。根据文档,它将Webseal和LDAP结合使用。但我对身份验证过程还不清楚。我有一个类,它在其中调用一个方法WSSubject.getCallerPrincipal(),并将userId作为字符串获取。但我无法了解它从哪里获取这些用户详细信息,以及它如何与LDAP通信以获取这些用户细节。

任何指示都将不胜感激。

如果您的用户注册表配置正确并使用服务器基础结构,您将在server.xml文件中找到它,例如:

<feature>ldapRegistry-3.0</feature>    <== this enables ldap feature
<!-- this is sample config for TDS -->
<ldapRegistry baseDN="o=acme.com" host="ldap.acme.com"
ldapType="IBM Tivoli Directory Server" port="389" realm="AcmeLdap"
bindDN="cn=testuser,o=acme.com" bindPassword="mypassword">
<idsFilters
groupFilter="(&amp;(cn=%v)(objectclass=groupofnames))"
userFilter="(&amp;(objectclass=inetorgperson)(|(uid=%v)(mail=%v)))" />
</ldapRegistry>

在这种情况下,LDAP功能中包含的类负责管理到LDAP 的连接

您可以在这里找到更多关于使用OpenLiberty设置各种LDAP的详细信息-LDAP用户注册表3.0

如果你的应用程序使用的是自主开发的安全框架,不幸的是,你必须深入研究,并完全理解它所包含的所有库。

UPDATE
如果您正在从WebSphere迁移,并且您的应用程序正在使用JEE安全角色,则可能需要创建用户&lt-&gt;角色映射,除非它们已经在绑定文件(ibm-application-bnd.xml(中定义。

查看此处了解详细信息:为Liberty 中的应用程序配置授权

简而言之:

  • 添加<feature>appSecurity</feature>
  • 检查EAR-ibm-application-bnd.xml中是否有
  • 如果不是,在旧的WebSphereenv中,请查看";用户到角色映射";在控制台中,并重新创建类似于server.xml中的应用程序绑定:
<application type="war" id="myapp" name="myapp" location="${server.config.dir}/apps/myapp.war">
<application-bnd>
<security-role name="user">
<group name="students" />
</security-role>
<security-role name="admin">
<user name="gjones" />
<group name="administrators" />
</security-role>
<security-role name="AllAuthenticated">
<special-subject type="ALL_AUTHENTICATED_USERS" />
</security-role>
</application-bnd>
</application>

最新更新