2014-03-05 64 views
0

我的应用程序需要用户通过Active Directory进行验证。我们正在考虑使用System.DirectoryServices.DirectoryEntry来执行一个PowerShell脚本,我们会传递一个用户名和密码。如何在Powershell中安全验证AD用户(加密凭证)

我看到它在不同的答案中提到了System.DirectoryServices.DirectoryEntry使用LDAP来读取AD信息的事实。 LDAP协议本身不加密。您可以使用LDAPS,但需要设置CA.我想知道这个命令生成的网络流量是否默认安全 - 即是否有可能通过网络嗅探密码?

编辑 我发现您可以将其他选项传递给DirectoryEntry实例。这是示例代码:

$username = $args[0] 
$password = $args[1] 

Function Test-ADAuthentication { 
    param($username,$password) 
    (new-object directoryservices.directoryentry "",$username,$password,Secure -bor Sealing).psbase.name -ne $null 
} 

Test-ADAuthentication $username $password 

第四个参数是一个枚举AuthenticationTypes http://msdn.microsoft.com/en-us/library/system.directoryservices.authenticationtypes(v=vs.90).aspx

,似乎令人感兴趣的是值:安全&密封它们组合起来将加密凭据

许多感谢读。

回答

1

这是我发现的PowerShell脚本用户AD认证的最佳解决方案。根据MS文档,协商和密封标志一起将加密数据:http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.contextoptions(v=vs.110).aspx

$username = $args[0] 
$password = $args[1] 

$pc = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext 'Domain', $system.Domain 

return $pc.ValidateCredentials($username, $password, [DirectoryServices.AccountManagement.ContextOptions]::Negotiate -bor [DirectoryServices.AccountManagement.ContextOptions]::Sealing) 
0

如果我没有记错,则无法以未加密的方式向Active Directory进行身份验证。每个域控制器在接受凭证之前都会与客户端建立某种加密连接。

Powershell使用其他客户端使用的相同方法向DC进行身份验证。也就是说,无论您是在Windows 8登录屏幕,Sharepoint页面,自定义程序还是Powershell提示符下输入凭据,DC都将以相同方式进行身份验证。您可以通过组策略修改AD的身份验证机制,但每种机制都会加密数据。

我在几分钟内没有在Google上找到很多文档,但华盛顿大学的这篇文章总的来说很好地概述了LDAP以及与AD有关的LDAP。跳转到“活动目录支持四种SASL认证机制”行读取

http://www.netid.washington.edu/documentation/ldapAuth.aspx

而且,GPO的有关两个链接登录的安全性。 Tangientially关系到你的问题,但他们可能会派上用场: http://technet.microsoft.com/en-us/library/dn169021%28v=ws.10%29.aspx http://technet.microsoft.com/en-us/library/jj852258%28v=ws.10%29.aspx

+0

嗨迈克尔。感谢您的时间。就LDAP而言 - 除非你使用LDAPS协议,否则它不会被默认加密,我已经知道了。我不相信你的第二段 - Powershell只是使用.NET库,如上面的代码示例 - 除非所有的PowerShell流量都是加密的?不过,我现在已经发现如何启用安全+密封认证,根据文档将提供使用Kerberos的安全认证... –