我是 Java EE 应用程序的新手。我正在处理一项遗留项目迁移任务,同时我需要了解身份验证机制在应用程序中是如何工作的。它使用 IBM OpenLiberty 服务器。根据文档,它结合使用 Webseal 和 LDAP。但我对身份验证过程没有清楚的了解。我有一个类,它调用一个方法WSSubject.getCallerPrincipal()并将 userId 作为字符串获取。但是我无法从它获取这些用户详细信息的位置以及它如何与 LDAP 通信以获取这些用户详细信息。
任何方向将不胜感激。
我是 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="(&(cn=%v)(objectclass=groupofnames))"
userFilter="(&(objectclass=inetorgperson)(|(uid=%v)(mail=%v)))" />
</ldapRegistry>
在这种情况下,LDAP 功能中包含的类负责管理与您的 LDAP 的连接
您可以在此处找到有关使用 OpenLiberty 设置各种 LDAP 的更多详细信息 - LDAP User Registry 3.0
如果您的应用程序使用的是本地安全框架,那么不幸的是,您必须深入研究并完全理解它包含的所有库。
更新
如果您从 WebSphere 迁移并且您的应用程序使用 JEE 安全角色,您可能需要创建用户<->角色映射,除非它们已经在绑定文件 ( ibm-application-bnd.xml) 中定义。
在此处查看详细信息:在 Liberty 中为应用程序配置授权
简而言之:
<feature>appSecurity</feature>ibm-application-bnd.xmlserver.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>