Войти

Показать полную графическую версию : [решено] Доменная авторизация на запуск операции в сценарии


rudimko
20-08-2014, 12:46
Коллеги, реально ли реализовать процедуру доменной авторизации в скрипте и что бы без модуля AD Powershell? Если да, то как?

Kazun
20-08-2014, 12:58
PowerShell - Using ADSI with alternate Credentials - http://www.lazywinadmin.com/2013/10/powershell-using-adsi-with-alternate.html

rudimko
20-08-2014, 13:44
На этом примере работает, но не понял как его адаптировать в свой скрипт... Можете помочь?

к примеру есть допотопное условие аля 1 пароль для всех:

$pass = "111"
$passReplay = Read-Host -assecurestring "Введите пароль"
$passReplay = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($passReplay))
if ($pass -eq $passReplay){"Доступ разрешен"}
else {"Отказано"}


Как вместо этого условия использовать доменную авторизацию (и было бы неплохо сразу привязаться к определенной группе безопасности)...

Kazun
20-08-2014, 14:11
http://poshcode.org/1393 - Test-ADCredentials by Mike Pfeiffer

Function Test-ADCredentials {
Param($username, $password, $domain)
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
$ct = [System.DirectoryServices.AccountManagement.ContextType]::Domain
$pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext($ct, $domain)
New-Object PSObject -Property @{
UserName = $username;
IsValid = $pc.ValidateCredentials($username, $password).ToString()
}
}

PS > Test-ADCredentials TestUser 'P@$$w0rd1' 'contoso.ru'

IsValid UserName
------- --------
True TestUser

Или опишите задачу подробней, т.к. не очень понятно, что требуется в конечном итоге.

rudimko
20-08-2014, 15:11
Вот это интересная ф-ция, попробую ее адаптировать. Спасибо.

Нужно чтобы при запуске скрипта был запрос на доменную авторизацию, если авторизация проходит, то идет запуск дальнейших инструкций, если не проходит, тогда "до свидания".

rudimko
20-08-2014, 15:39
Возник вопрос, как безопасно передать пароль из System.Security.SecureString в вышеприведенную ф-цию?

например

$domainName = [Environment]::UserDomainName
$userName = [Environment]::UserName
$cred = Get-Credential -Message "введите имя пользователя и пароль" -User $domainName\$userName


$cred.Password как System.Security.SecureString, а как ее правильно, и главное безопасно передать в ф-цию? > Аля... Test-ADCredentials $userName $cred.Password $domainName

Kazun
20-08-2014, 15:48
$cred.GetNetworkCredential().Password

rudimko
20-08-2014, 15:54
Спасибо.




© OSzone.net 2001-2012