我是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用户注册表3.0
如果你的应用程序使用的是自主开发的安全框架,不幸的是,你必须深入研究,并完全理解它所包含的所有库。
UPDATE
如果您正在从WebSphere迁移,并且您的应用程序正在使用JEE安全角色,则可能需要创建用户<->;角色映射,除非它们已经在绑定文件(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>