Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过SSL查询AD域_C#_.net_Ssl_Active Directory_Ldap - Fatal编程技术网

C# 通过SSL查询AD域

C# 通过SSL查询AD域,c#,.net,ssl,active-directory,ldap,C#,.net,Ssl,Active Directory,Ldap,我有一个域和端口号636以及用户名和密码 我正试图找到一种方法,通过安全LDAP连接到这个广告,并获得用户的“givenname”、“sn”、“mail”和一些自定义属性 然而,我不知道如何在C中做到这一点 我认为微软可能已经有了解决这个问题的方法,但我会听从你们的 最后的用户体验将是:查看登录屏幕,输入用户名和密码,这些凭证通过LDAP发送,用户信息返回到我的web应用程序,然后我登录,如果一切顺利。。。虽然我也不知道失败的尝试会是什么样子,所以我可以否认。有什么想法吗 请包括代码示例,以便我

我有一个域和端口号636以及用户名和密码

我正试图找到一种方法,通过安全LDAP连接到这个广告,并获得用户的“givenname”、“sn”、“mail”和一些自定义属性

然而,我不知道如何在C中做到这一点

我认为微软可能已经有了解决这个问题的方法,但我会听从你们的

最后的用户体验将是:查看登录屏幕,输入用户名和密码,这些凭证通过LDAP发送,用户信息返回到我的web应用程序,然后我登录,如果一切顺利。。。虽然我也不知道失败的尝试会是什么样子,所以我可以否认。有什么想法吗

请包括代码示例,以便我能够理解实现,谢谢

你试过了吗

编辑

对不起,我的胡言乱语和尖刻的回答。我认为你遇到的问题是你没有完全正确地提出这个问题——无论是在这里还是在谷歌上。无论如何,这里不需要一点C代码。您只需将web应用配置为使用AD作为会员资格提供商。您需要一个连接字符串[最难的部分是正确使用它]:

<connectionStrings>
    <add name="MyAd"
         connectionString="LDAP://adserver/OU=Users"
         />
</connectionStrings>
以及会员资格提供者:

<membership defaultProvider="AdProvider">
        <providers>
            <add 
                name="AdProvider"
                type="System.Web.Security.ActiveDirectoryMembershipProvider, 
                    System.Web, Version=2.0.0.0, 
                    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
                connectionStringName="MyAd"
                applicationName="ItRemoteHelpdesk"
                enablePasswordReset="false"
                 />
        </providers>
    </membership>
然后,用户可以使用其正常登录username@domain和密码

你试过了吗

编辑

对不起,我的胡言乱语和尖刻的回答。我认为你遇到的问题是你没有完全正确地提出这个问题——无论是在这里还是在谷歌上。无论如何,这里不需要一点C代码。您只需将web应用配置为使用AD作为会员资格提供商。您需要一个连接字符串[最难的部分是正确使用它]:

<connectionStrings>
    <add name="MyAd"
         connectionString="LDAP://adserver/OU=Users"
         />
</connectionStrings>
以及会员资格提供者:

<membership defaultProvider="AdProvider">
        <providers>
            <add 
                name="AdProvider"
                type="System.Web.Security.ActiveDirectoryMembershipProvider, 
                    System.Web, Version=2.0.0.0, 
                    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
                connectionStringName="MyAd"
                applicationName="ItRemoteHelpdesk"
                enablePasswordReset="false"
                 />
        </providers>
    </membership>
然后,用户可以使用其正常登录username@domain和密码

System.DirectoryServices.AccountManagement是用于较新的非LDAP AD身份验证的.NET dll

请尝试此网站,从代码示例中获得一个良好的起点:

System.DirectoryServices.AccountManagement是用于较新的非LDAP AD身份验证的.NET dll

请尝试此网站,从代码示例中获得一个良好的起点:


您应该按照Brad的建议,查看.NET 3.5 System.DirectoryServices.AccountManagement命名空间

要在如何使用它方面取得良好的开端,请阅读MSDN杂志的以下文章:

本文确实多次谈到如何安全地使用SSL连接到您的AD域,以及如何创建用户或检索用户信息。我认为仔细阅读这篇文章并尝试代码示例应该会让您对如何完成所需的工作有一个很好的了解

更新:很明显,S.DS.AM中的所有这些方法都要求针对AD进行身份验证。新类还提供了非常简单的用户凭据验证,如我链接到的那篇文章所示:

// establish context 
PrincipalContext domain = new PrincipalContext(ContextType.Domain);

// determine whether a user can validate to the directory
bool validated = domain.ValidateCredentials("user1", "Password1");

您应该按照Brad的建议,查看.NET 3.5 System.DirectoryServices.AccountManagement命名空间

要在如何使用它方面取得良好的开端,请阅读MSDN杂志的以下文章:

本文确实多次谈到如何安全地使用SSL连接到您的AD域,以及如何创建用户或检索用户信息。我认为仔细阅读这篇文章并尝试代码示例应该会让您对如何完成所需的工作有一个很好的了解

更新:很明显,S.DS.AM中的所有这些方法都要求针对AD进行身份验证。新类还提供了非常简单的用户凭据验证,如我链接到的那篇文章所示:

// establish context 
PrincipalContext domain = new PrincipalContext(ContextType.Domain);

// determine whether a user can validate to the directory
bool validated = domain.ValidateCredentials("user1", "Password1");

@幕府将军,说真的!!您只是要求我们为您构建解决方案,而不是回答任何问题。如果您只想回答一个问题,那么是的,这是可能的。@Brad,我没有,我只是要求提供代码示例和关于使用哪个C库的信息。。。询问SO的目的是帮助添加到站点并从用户那里获得建议,例如,人们可能遇到的一些陷阱,实时建议。。。哇,只是。。哇..@Shogun,你的问题太宽泛了。我为自定义wrap.NET的广告认证编写了一个完整的Dll。那适合邮寄吗?可能不会。谢谢怀亚特,你知道有没有可能在正常登录时使用这个?web应用程序中的大多数帐户将使用数据库中的普通用户名/密码查找直接登录到web应用程序,但一些特殊帐户将被标记为通过其广告登录。从未尝试过,但您在这里的注意事项与任何其他多成员提供商应用程序相同。@Shogun,说真的!!您只是要求我们为您构建解决方案,而不是回答任何问题。如果您只想回答一个问题,那么是的,这是可能的。@Brad,我没有,我只是要求提供代码示例和关于使用哪个C库的信息。。。询问SO的目的是帮助添加到站点,并从用户那里获得建议,例如SO

告诉我人们可能遇到的陷阱,实时建议。。。哇,只是。。哇..@Shogun,你的问题太宽泛了。我为自定义wrap.NET的广告认证编写了一个完整的Dll。那适合邮寄吗?可能不会。谢谢怀亚特,你知道有没有可能在正常登录时使用这个?web应用程序中的大多数帐户将使用数据库中的普通用户名/密码查找直接登录到web应用程序,但一些特殊帐户将被标记为通过其广告登录。从未尝试过,但是你在这里有着与其他多成员提供者应用程序相同的考虑因素。很明显,你甚至没有尝试自己寻找这个。我知道,我甚至在一个月前就为这个构建了一个类库。请询问具体问题的答案,而不是完整的解决方案。谷歌上的第一个链接本身应该会提供您所需要的所有信息@Shogun,您在链接@Inase posted?@Inase中发现了什么新的信息吗?Inase这看起来像是使用SQL我不明白这与LDAP有什么关系,我真的很困惑…@Shogun-一定要通过GetADSILogin方法。在此方法中,示例仅使用DB表获取要登录AD的参数。您可以很好地对这些参数进行硬编码或使用其他技术来存储值。它如何使用System.DirectoryServices和DirectoryEntry等的逻辑是您需要检查的。很明显,您甚至没有尝试自己查找它。我知道,我甚至在一个月前就为此构建了一个类库。请询问具体问题的答案,而不是完整的解决方案。谷歌上的第一个链接本身应该会提供您所需要的所有信息@Shogun,您在链接@Inase posted?@Inase中发现了什么新的信息吗?Inase这看起来像是使用SQL我不明白这与LDAP有什么关系,我真的很困惑…@Shogun-一定要通过GetADSILogin方法。在此方法中,示例仅使用DB表获取要登录AD的参数。您可以很好地对这些参数进行硬编码或使用其他技术来存储值。它如何使用System.DirectoryServices和DirectoryEntry等的逻辑是您需要签出的。它必须是安全的LDAP。。所以我猜“非LDAP”没有使用安全LDAP,对吗?@Shogun,您可以在创建上下文时使用ContextOptions枚举(指向DC的链接)来指定您希望SSL一切正常,并且结局良好:@Brad,还有一个关于此链接的问题,这是否实际使用了安全LDAP协议?我们的合作伙伴只允许从我们这边的特定IP地址使用此协议。@Shogoun,在这方面我帮不了你。我的实现中不需要它。它必须是安全的LDAP。。所以我猜“非LDAP”没有使用安全LDAP,对吗?@Shogun,您可以在创建上下文时使用ContextOptions枚举(指向DC的链接)来指定您希望SSL一切正常,并且结局良好:@Brad,还有一个关于此链接的问题,这是否实际使用了安全LDAP协议?我们的合作伙伴只允许从我们这边的特定IP地址使用此协议。@Shogoun,在这方面我帮不了你。这在我的实现中不是必需的。我很困惑。我正在尝试让广告用户通过我的web应用程序使用用户名和密码登录到客户端广告。这看起来我可以在没有密码的情况下查找任何用户。。。那么我如何认证某人?我如何获得访问权限,一些管理员密码?更多的阅读我必须做。。。这似乎是。。。太复杂了@幕府将军:当然,只有在你已经通过认证的情况下,你才能去找某人。阅读我链接到的那篇文章!!它还向您展示了如何根据AD轻松验证凭据,以及如何登录给定用户。当然,只有登录后,他才能做所有其他事情!!哦客户给了我一个测试用户,但没有管理员帐户或类似的东西,我想我需要回去要求一个?或者我可以认证一个普通用户吗?请澄清,我在这里很困惑。@Shogun:这取决于Active Directory配置,但默认情况下,任何域用户至少可以从广告中看到itI的至少部分内容。我很困惑。我正在尝试让广告用户通过我的web应用程序使用用户名和密码登录到客户端广告。这看起来我可以在没有密码的情况下查找任何用户。。。那么我如何认证某人?我如何获得访问权限,一些管理员密码?更多的阅读我必须做。。。这似乎是。。。太复杂了@幕府将军:当然,只有在你已经通过认证的情况下,你才能去找某人。阅读我链接到的那篇文章!!它还向您展示了如何根据AD轻松验证凭据,以及如何登录给定用户。当然,只有登录后,他才能做所有其他事情!!哦客户给了我一个测试用户,但没有管理员帐户或类似的东西,我想我需要回去要求一个?或者我可以认证一个普通用户吗?请澄清,我在这里很困惑。@Shogun:这取决于活动的D 目录配置,但默认情况下,任何域用户至少可以从AD中删除至少部分内容