Azure AD Kerberos-Entschlüsselungsschlüssel-Rollover; new-azureADSSOAuthenticationContext; Verwendung eines Tokens anstelle von pscredential

Azure AD Kerberos-Entschlüsselungsschlüssel-Rollover; new-azureADSSOAuthenticationContext; Verwendung eines Tokens anstelle von pscredential

Wir führen den 30-tägigen Kerberos-Entschlüsselungsschlüssel-Rollover-Prozess automatisiert durch, indem wir ein in einer Textdatei gespeichertes „verschlüsseltes“ Passwort verwenden, um das erforderliche PSCredential-Objekt für den Powershell-Befehl „new-azureADSSOAuthenticationContext“ zu erstellen.

Das funktioniert – aber ich möchte die allgemeine Sicherheit verbessern und daher das PSCredential-Objekt für den globalen Administrator unseres Tenants auf Azure entfernen.

Ich habe gesehen, dass der Befehl new-azureADSSOAuthenticationContext auch mit einem Zugriffstoken gefüttert werden kann (über den Parameter -token). Ein Zugriffstoken kann ich mithilfe eines Zertifikats abrufen, das im viel sichereren Zertifikatspeicher des Computers gespeichert ist, indem ich „Get-MsalToken“ verwende.

Bisher habe ich eine Azure-App erstellt, ihrem SecurityPrincipal die Rolle des globalen Administrators zugewiesen (unter Enterprise-Apps), ein selbstsigniertes Zertifikat erstellt (gespeichert im persönlichen Speicher des Computers) und dieses Zertifikat in die Azure-App hochgeladen.

Ich erhalte das Token mit: $Token = Get-MsalToken -ClientId $ClientId -TenantId $TenantId -ClientCertificate $Certificate -RedirectUri "http://bla.com"

Dies funktioniert und ich kann das Token auch innerhalb des neuen AzureADSSOAuthenticationContext verwenden.

Aber wenn ich dann Update-AzureADSSOForest -OnPremCredentials $OnpremCred aufrufe, erhalte ich den folgenden Fehler:

  • Beim Ausführen unter der „neuen“ Powershell 7: Zeile | 133 | Update-AzureADSSOForest -OnPremCredentials $OnpremCred | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Typ „System.ServiceModel.Web.WebChannelFactory`1“ konnte nicht aus Assembly „System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, | PublicKeyToken=31bf3856ad364e35“ geladen werden.

  • Beim Ausführen unter der „alten“ Powershell 5.1: Update-AzureADSSOForest: Das Hochladen der Computerkontoinformationen ist fehlgeschlagen. Fehlermeldung: DesktopSsoNumOfDomains-Anforderung wurde mit ungültigem Authentifizierungstoken gestellt. Wert: '' Unter C:\Scripts\DEV-MIHA\KerberosKeyRollover\M365_Kerberos_Key_Rollover.ps1:133 char:1

  • Update-AzureADSSOForest -OnPremCredentials $OnpremCred
  •   + CategoryInfo          : NotSpecified: (:) [Update-AzureADSSOForest], Exception
      + FullyQualifiedErrorId : System.Exception,Microsoft.KerberosAuth.Powershell.PowershellCommands.UpdateAzureADSSOForestCommand
    
    

Hinweis: Ich habe mich schon einige Stunden mit dem Thema beschäftigt - und bisher keine Lösung für dieses Problem gefunden. Außer dass einige behaupten, dass dies derzeit nicht möglich sei.

Aber vielleicht hat jemand da draußen schon geschafft, was ich erreichen möchte

Vorschläge sind willkommen. :-)

Antwort1

Das ist zwar nicht die Antwort, aber vielleicht ein Fortschritt in diese Richtung. Das habe ich bisher herausgefunden:

zuerst,Neu – AzureADSSOAuthenticationContextüberprüft das Token, das Sie über den -TokenParameter angeben, erst, wenn Sie tatsächlich einen Befehl ausführen, der darauf angewiesen ist (wie Get-AzureADSSOStatusoder Update-AzureADSSOForest) – Folgendes wird beispielsweise ohne Fehler abgeschlossen:

New-AzureADSSOAuthenticationContext -Token "12345" -Tenantid <YourTenantId>

Zweitens, basierend auf einigen Untersuchungen darüber, wie New-AzureADSSOAuthenticationContextfunktioniert mitGeiger, ich habe es geschafft, es zum Laufen zu bringen mit einemMsalToken abrufenGeneriertes Token mithilfe der interaktiven Anmeldung wie folgt:

$TenantId = '<Your Tenant ID>'
Import-Module 'C:\Program Files\Microsoft Azure Active Directory Connect\AzureADSSO.psd1'

$Token = Get-MsalToken -ClientId '55747057-9b5d-4bd4-b387-abf52a8bd489' -TenantId $TenantId -Interactive -Scopes 'https://proxy.cloudwebappproxy.net/registerapp/.default'
New-AzureADSSOAuthenticationContext -Token $Token.AccessToken -TenantId $TenantId

Get-AzureADSSOStatus | ConvertFrom-Json

Das Obige ermöglicht Get-AzureADSSOStatuseine korrekte Rückgabe, was ein guter Anfang sein muss. Der nächste Teil des Problems besteht wahrscheinlich darin, die Azure AD Connect-Proxyanwendung dazu zu bringen, dieGewährung von ClientanmeldeinformationenToken anstelle eines BenutzersGewährung des AutorisierungscodesZeichen.

verwandte Informationen