Stisknutím tlačítka "Enter" přeskočíte na obsah

Problém s Windows Session Authentication přes PowerCLI

Nedávno jsem řešil problém, kdy jsem u jednoho zákazníka psal sadu scriptů. Bylo třeba, aby z důvodu jednoduchosti spouštění nebyl žádán o přihlašovací údaje.

Pro spoustu z Vás jednoduché zadání, které asi není potřeba rozvádět. Ale dostal jsem se do situace, kdy přihlášení přes Webového klienta fungovalo, ale přes PowerCLI nikoli.

Pojďme k popisu situace, která k tomu vedla (z jasných security důvodů nebudu psát názvy skutečných domén):

vCenter server appliance byla připojena do AD domény “vclass.local”. DNS název vCenter domény byl ale trochu jiný – “lab.vclass.local”.

Při připojování přes WebClienta po doinstalování Enhanced Authentication Plugin vše fungovalo. Ovšem při spuštění PowerCLI scriptu a připojování přes

Connect-VIserver vc.lab.vclass.local

vyskočilo okno pro zadání credentials.

Proč by mělo vyskočit okno, když jsem na Windows stroji přihlášen doménovým účtem, který má potřebná oprávnění? Ve WebClientu to přece funguje.

Nejprve pro objasnění “záhady” je třeba zapnout při připojování detailnější logování

Connect-VIserver vc.lab.vclass.local -Verbose

Výstup je pak následující:

VERBOSE: Attempting to connect using SSPI
VERBOSE: Reversely resolved 'vc.lab.vclass.local' to 'vc.lab.vclass.local'
VERBOSE: SSPI Kerberos: Acquired credentials for user 'VCLASS\Administrator'
VERBOSE: SSPI Kerberos: InitializeSecurityContext failed for target 'host/vc.lab.vclass.local'. Error code: 0x80090303
VERBOSE: Connect using SSPI was unsuccessful
Connect-VIServer : 12.10.2018 9:00:10   Connect-VIServer                Could not determine user name and/or password fo
r server vc.lab.vclass.local
At line:1 char:1
+ Connect-VIServer vc.lab.vclass.local -Verbose
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Connect-VIServer], ViServerConnectionException
    + FullyQualifiedErrorId : ViCore_Login_CredentialNotFound,VMware.VimAutomation.ViCore.Cmdlets.Commands.ConnectVISe
   rver

Důležitý je předposlední řádek začínající VERBOSE

VERBOSE: SSPI Kerberos: InitializeSecurityContext failed for target ‘host/vc.lab.vclass.local’. Error code: 0x80090303

Je to způsobeno tím, že objekt “vc.vclass.local” v AD – tak je vCenter připojen a pojmenován v AD – nemá odpovídající SPN záznam, který je zvýrazněn na řádku výše.

Aby jsme toto napravili, tak stačí velmi jednoduše na počítači, který je připojen do domény a má AD tools doinstalované, spustit jeden příkaz.

C:\> setspn -A "HOST/vc.lab.vclass.local" vc
Checking domain DC=vclass,DC=local

Registering ServicePrincipalNames for CN=VC,CN=Computers,DC=vclass,DC=local
HOST/vc.lab.vclass.local
Updated object

Je potřeba samozřejmě spouštět pod uživatelem, který má odpovídající oprávnění v AD.

Kontrola:

C:\>setspn -l VCLASS\vc
Registered ServicePrincipalNames for CN=VC,CN=Computers,DC=vclass,DC=local:
HOST/vc.lab.vclass.local
HOST/vc
HOST/vc.vclass.local

Pro jistotu je potřeba vCenter appliance restartovat.

Pak už můžete ověřit, že se podaří přihlásit na vCenter bez nutnosti zadávat credentials

PS C:\> Connect-VIServer vc.lab.vclass.local -Verbose

VERBOSE: Attempting to connect using SSPI
VERBOSE: Reversely resolved 'vc.lab.vclass.local' to 'vc.lab.vclass.local'
VERBOSE: SSPI Kerberos: Acquired credentials for user 'VCLASS\Administrator'
VERBOSE: SSPI Kerberos: Successful call to InitializeSecurityContext for target 'host/vc.lab.vclass.local'
VERBOSE: Connected successfully using SSPI

Name                           Port  User
----                           ----  ----
vc.lab.vclass.local            443   VCLASS\Administrator