使用JNDI到LDAP验证域用户帐户(user01)时出现错误。尽管从技术上讲不是错误,但它显示为
Username user01 does NOT have role Domain Users
我以为及其理解,可以将AD组(用户登录到应用程序所在的位置)映射到web.xml代码中的角色名称,以允许用户登录到应用程序。
我当前的JNDI Realm配置如下:
../ tomcat7 / conf / server.xml
<Realm className="org.apache.catalina.realm.JNDIRealm"
debug="99"
connectionURL="ldap://example.com:389"
authentication="simple"
referrals="follow"
connectionName="cn=administrator,cn=users,dc=example,dc=com"
connectionPassword="xxxxxxxxxx"
userSearch="(sAMAccountName={0})"
userBase="dc=example,dc=com"
userSubtree="true"
userRoleName="memberOf"
roleSearch="(member={0})"
roleName="cn"
roleSubtree="true"
roleBase="dc=example,dc=com" />
../ tomcat7 / webapps / appdir / WEB-INF / web.xml(在此,我尝试在“角色名称”约束下指定AD域“用户组”):
<security-constraint>
<display-name>Domain User Access</display-name>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>Domain Users</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<description>Webapp Admins</description>
<role-name>Domain Admins</role-name>
</security-role>
<security-role>
<description>Webapp Users</description>
<role-name>Domain Users</role-name>
</security-role>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Entire Application</realm-name>
</login-config>
</web-app>
../ tomcat7 / logs / catalina.out(最后10行显示了问题的起因-我认为-但我不知道如何纠正此问题)
Oct 10, 2018 4:53:55 PM org.apache.catalina.authenticator.AuthenticatorBase
register
FINE: Authenticated 'leeb' with type 'BASIC'
Oct 10, 2018 4:53:55 PM org.apache.catalina.authenticator.AuthenticatorBase
invoke
FINE: Calling accessControl()
Oct 10, 2018 4:53:55 PM org.apache.catalina.realm.RealmBase
hasResourcePermission
FINE: Checking roles GenericPrincipal[user01(CN=Domain
Admins,CN=Users,DC=example,DC=com,Domain Admins,)]
Oct 10, 2018 4:53:55 PM org.apache.catalina.realm.RealmBase hasRole
FINE: Username user01 does NOT have role Domain Users
Oct 10, 2018 4:53:55 PM org.apache.catalina.realm.RealmBase
hasResourcePermission
FINE: No role found: Domain Users
Oct 10, 2018 4:53:55 PM org.apache.catalina.authenticator.AuthenticatorBase
invoke
FINE: Failed accessControl() test
谁能提供任何建议或发现明显的错误?我需要另一双眼睛来查看缺少此配置的地方。
答案 0 :(得分:0)
域用户是一个内置功能,它报告域中的所有用户都属于该组……除非通过LDAP进行查询,否则不会。如果使用LDAP浏览器查看对象,则该对象不具有“成员”属性。同样,对“(&(memberOf = CN =域用户,CN =用户,DC =域,DC = ccTLD))”的LDAP查询不会返回任何用户。
在我的域中,我创建了一个“所有用户”组,该组是在新用户创建过程中添加的-当用户创建为算法算法时还不错,但对于手动配置而言肯定不理想。我们将此实际组用于希望所有用户都具有基本访问权限的LDAP应用程序。
在没有传统组的情况下,不可能将所有帐户填充为成员,您可以使用ADAM来管理AD并创建一个代理对象,例如,该对象包含(&(primaryGroupID = 513)){组是“域用户”}或(&(objectCategory = person))。我不确定您是否可以在AD LDS(代替ADAM)中做同样的事情,因为几年前我开始使用真正的AD组。