cfldap绑定和搜索

时间:2014-04-17 19:50:12

标签: php coldfusion ldap

我遇到的问题是我在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>

任何帮助非常赞赏。

1 个答案:

答案 0 :(得分:0)

您可以尝试从查询中获取变量。尝试做像

这样的事情

CFSET Session.group =“#auth.Group#”

带有auth.group的

是您的查询名称和ldapt属性。

我使用cfldap连接。然后使用CFSET Session.this_FName =“#Results.GivenName#”将名称存储在会话变量中(结果是我的查询的名称)。然后在使用之后如果#Session.this_FName#neq“Adam”那么......