如果我在IIS中使用集成身份验证,如何使用ColdFusion确定当前用户是否属于特定活动目录角色。
这类似于在.net中使用User对象的IsInRole()方法 - 如何在ColdFusion中完成
答案 0 :(得分:6)
执行此操作的唯一方法是使用cflap并查询活动目录服务器以获取组列表。在您获得列表后,您将需要解析它以查看该用户是否属于相关组。下面是我写的一些代码,其中包含对工作人员的一些评论。价值观已经改变,以保护无辜者。
<!--- getting the user login id --->
<cfset variables.thisuser = ListLast(cgi.AUTH_USER, "\")>
<!--- this is the group they must be a memberof --->
<cfset variables.groupname = "CN=<the group to search for>">
<!--- list of all groups that the user belongs to, will be populated later --->
<cfset variables.grouplist = "">
<cftry>
<cfldap action="query"
name="myldap"
attributes="memberOf"
start="OU=<your ou>,DC=<your dc>,DC=<your dc>"
scope="subtree"
filter="(sAMAccountName=#variables.thisuser#)"
server="<your AD server ip>"
port="<your AD server port>"
username="<network login if required>"
password="<network password if required>">
<cfset variables.grouplist = myldap.memberOf>
<cfcatch>
</cfcatch>
</cftry>
<cfif FindNoCase(variables.groupname, variables.grouplist)>
<cfcookie name="SecurityCookieName" value="">
</cfif>
答案 1 :(得分:1)
在coldfusion中检查用户角色,您将使用IsUserInRole()
http://cfquickdocs.com/#IsUserInRole
编辑 - 实际上我希望我理解正确,我对IIS或活动目录一无所知。正如我所理解的那样,您想要检查Coldfusion中的用户角色。
我认为你可能正在寻找更像这样的东西:http://vincentcollins.wordpress.com/2008/08/20/active-directory-ldap-authentication/或者:http://coldfusion.sys-con.com/node/154225
答案 2 :(得分:1)
作为后续工作,SQL服务器具有ADSI提供程序,允许您为LDAP服务器创建链接服务器。
从那里你可以对你的AD做ldap查询,它会像任何其他记录集一样返回。
我发现通过CF执行复杂的ldap查询要容易一些。