- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在安装过程中使用 Windows PowerShell 查询和验证用户的 Windows 凭据。直到昨天,它都运行良好。现在我公司的 IT 部门更改了域 Controller 的一些配置,现在我得到以下异常。
Exception calling "ValidateCredentials" with "2" argument(s): "The server cannothandle directory requests."At line:32 char:5+ if ($pc.ValidateCredentials($username, $credential.GetNetworkCredenti ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DirectoryOperationException
From my research I already found out that it has to do with the missing SSL connection. I have to add ContextOptions.SecureSocketLayer
somewhere in the code. The question is: Where is the right place to put this parameter? I cannot find any examples for PowerShell.
Here's the script I used to check the credentials:
$credential = $Host.UI.PromptForCredential("Need credentials.", "For using Windows Integrated Authentication please provide the login information for the user that has access to the Microsoft SQL Server database.", "", "")
if (!$credential) {
Write-Output "No credentials provided"
return
}
[System.Reflection.Assembly]::LoadWithPartialName('System.DirectoryServices.AccountManagement')
$system = Get-WmiObject -Class Win32_ComputerSystem
if ($credential.GetNetworkCredential().Domain) {
Write-Output "Credentials contain domain"
if ($credential.GetNetworkCredential().Domain -eq $system.Name) {
Write-Output "Domain is local system"
$pc = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext 'Machine', $system.Name
} else {
Write-Output "Domain is network domain"
$pc = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext 'Domain', $credential.GetNetworkCredential().Domain
}
$username = $credential.UserName
} elseif (0, 2 -contains $system.DomainRole) {
$pc = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext 'Machine', $system.Name
$username = $system.Name + '\' + $credential.GetNetworkCredential().UserName
} else {
$pc = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext 'Domain', $system.Domain
$username = $system.Domain + '\' + $credential.GetNetworkCredential().UserName
}
if ($pc.ValidateCredentials($username, $credential.GetNetworkCredential().Password)) {
Write-Output "Validation successfull"
} else {
Write-Output "Validation failed"
}
最佳答案
作为mentioned by Kiran in the comments ,您可以将 ContextOptions
值传递给 PrincipalContext
构造函数:
$DefaultNC = "DC=$($system.Domain -replace '\.',',DC=')"
# ...
$pc = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext 'Domain', $system.Domain, $DefaultNC, ([System.DirectoryServices.AccountManagement.ContextOptions]'SecureSocketLayer,Negotiate')
必须指定身份验证选项(Negotiate
或 SimpleBind
),因此 'SecureSocketLayer,Negotiate'
值
关于powershell - 异常在 "ValidateCredentials" "The server cannot handle directory requests.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46170531/
首先,我查看了关于 SO 的大多数问题,但似乎都不是完全相同的问题。 Here是一个类似的问题,但并不完全相同。在我的情况下,我正在创建一个 PrincipalContext : Dim pctx A
我在使用 PrincipalContext.ValidateCredentials 时看到一些奇怪的行为。该设置是父/子设置中的两个 Active Directory 域(因此我们有主域 compan
我必须实现一个安全解决方案,根据 ldap/AD 服务器验证用户凭据。 代码是这样的…… using (PrincipalContext context = new PrincipalContext(
我有一个包含 Login 的 WCF 服务根据本地计算机凭据验证用户名和密码的方法,在看似随机的一段时间后,它将停止对某些用户起作用。 实际的登录命令是这样的: public UserModel Lo
我有一个 MVC 应用程序需要根据 Active Directory 登录和验证用户。我正在使用 PrincipalContext.ValidateCredentials 方法,但始终获得 false
我们的应用程序有一个登录框,要求用户输入他们的 AD 凭据。我们获取这些凭据,然后调用 using (PrincipalContext pc = new PrincipalContext(Co
我正在处理两个域 - 一个是可信域。一个域上可能有一个 JohnSmith,另一个域上可能有另一个 JohnSmith。这两个人都需要登录我的应用程序。 我的问题:无论我传入哪个域都没有关系 - 此代
我在安装过程中使用 Windows PowerShell 查询和验证用户的 Windows 凭据。直到昨天,它都运行良好。现在我公司的 IT 部门更改了域 Controller 的一些配置,现在我得到
我已经通过覆盖各种类/方法设法更改了代码中的密码字段。但是我在尝试覆盖 EloquentUserProvider 和它的 validateCredentials() 方法后,我不断收到错误 - Err
我创建了一项服务,该服务使用 System.DirectoryServices.AccountManagement 根据 Active Directory 验证凭据。我需要针对本地域和受信任的域验证凭
我正在尝试在我的 MVC 应用程序中使用 AD LDS 进行用户身份验证。我已经设法编写了一些允许我创建/编辑/删除用户和组的代码,但我似乎无法对它们进行身份验证。这是我的示例代码: using( v
我有以下代码片段来针对 AD 测试纯文本用户名/密码,如果我在 visual studio 中按 F5 并通过 WCFTestClient 尝试它,它工作正常,但是一旦我部署到 IIS 并尝试相同的功
我有一个应用程序,其中用户对我们的 Active Directory 进行身份验证: private bool Authenticate() { using (var context = n
我有一个现有项目使用以下内容在开发机器上进行本地身份验证 principalContext.ValidateCredentials("bondjames", "drno", ContextOption
我正在使用 IIS 6.0 托管 WCF Web 服务。我的应用程序池在本地管理员帐户下运行,并且我定义了其他本地用户来访问 Web 服务。我编写了以下代码来验证用户: //Any public st
我正在使用 PrinciaplContext.ValidateCredentials 来针对本地计算机验证一组凭据: string account = Context.ReadLine(); stri
最初问题始于 .NET\C# 和 ValidateCredentials方法 - 没有 SSL 它工作,使用 SSL 它返回“服务器无法处理目录请求”。但我缩小了范围并简化为下面发布的 C++ 代码。
在我的 LoginController 中的 Auth 下,我使用了以下代码: namespace App\Http\Controllers\Auth; use App\Model\Admin; us
我是一名优秀的程序员,十分优秀!