我遇到的问题是我在PHP中做了一千次:绑定到LDAP组,然后搜索用户是否是授权成员。
在PHP中,我总是把它写成
<?
$this->root_pw = "guid_password";
$this->bind_dn = "group_guid";
$this->ldapconn = ldap_connect($this->server, $this->port);
$ldapbind = ldap_bind($this->ldapconn, $this->bind_dn, $this->root_pw);
$this->result = ldap_search($this->ldapconn,$this->base_dn, $filter);
if( ldap_count_entries($this->ldapconn,$this->result) == 1 ) {
return true;
} else {
return false;
}
}
?>
因此,如果用户不是组GUID的成员,则返回为false。
然而,在ColdFusion中做同样的事情(或者我认为是同样的事情)总是返回用户,无论他们是否在群组中。
<cfset var response=false />
<!--- setting basic attributes --->
<cfset LDAP_root = "o=someplace">
<cfset LDAP_server = "server.com">
<cfset LDAP_port = "636">
<!--- Group DN and password--->
<cfset LDAP_username = "group_guid">
<cfset LDAP_password = 'guid_password'>
<cfset userfilter =
"uid=#lcase(arguments.userName)#">
<cfldap action="query"
name="auth"
attributes="uid, cn, mail"
referral="yes"
start="#LDAP_root#"
scope="SUBTREE"
server="#LDAP_server#"
port="#LDAP_port#"
filter="#userfilter#"
username="#LDAP_username#"
password="#LDAP_password#"
secure = "CFSSL_BASIC"
>
<cfif auth.recordCount gt 0>
<cfset response = true />
</cfif>
任何帮助非常赞赏。
答案 0 :(得分:0)
您可以尝试从查询中获取变量。尝试做像
这样的事情CFSET Session.group =“#auth.Group#”
带有auth.group的是您的查询名称和ldapt属性。
我使用cfldap连接。然后使用CFSET Session.this_FName =“#Results.GivenName#”将名称存储在会话变量中(结果是我的查询的名称)。然后在使用之后如果#Session.this_FName#neq“Adam”那么......