Смена ключа расшифровки Azure AD Kerberos; new-azureADSSOAuthenticationContext; использование токена вместо pscredential

Смена ключа расшифровки Azure AD Kerberos; new-azureADSSOAuthenticationContext; использование токена вместо pscredential

Мы автоматизируем 30-дневный процесс обновления ключа расшифровки Kerberos, используя «зашифрованный» пароль, хранящийся в текстовом файле, для создания необходимого объекта PSCredential для команды Powershell new-azureADSSOAuthenticationContext.

Это работает, но я хочу повысить общую безопасность и поэтому хочу исключить объект PSCredential для глобального администратора нашего клиента в Azure.

Я видел, что команда new-azureADSSOAuthenticationContext также может быть скармливаема с токеном доступа (через параметр -token). Токен доступа я могу получить, используя сертификат, хранящийся в гораздо более безопасном машинном хранилище сертификатов, используя "Get-MsalToken"

На данный момент я создал приложение Azure, назначил его SecurityPrincipal роль глобального администратора (в разделе «Корпоративные приложения»), создал самозаверяющий сертификат (хранится в личном хранилище компьютера) и загрузил этот сертификат в приложение Azure.

Я получаю токен с помощью: $Token = Get-MsalToken -ClientId $ClientId -TenantId $TenantId -ClientCertificate $Certificate -RedirectUri "http://bla.com"

Это работает, и я также могу использовать токен в new-azureADSSOAuthenticationContext.

Но когда я затем вызываю Update-AzureADSSOForest -OnPremCredentials $OnpremCred, я получаю следующую ошибку:

  • При запуске в «новом» PowerShell 7: Строка | 133 | Update-AzureADSSOForest -OnPremCredentials $OnpremCred | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Не удалось загрузить тип 'System.ServiceModel.Web.WebChannelFactory`1' из сборки 'System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, | PublicKeyToken=31bf3856ad364e35'.

  • При запуске под "старым" Powershell 5.1: Update-AzureADSSOForest : Не удалось загрузить информацию об учетной записи компьютера. Сообщение об ошибке: Запрос DesktopSsoNumOfDomains был сделан с недопустимым authenticatedToken. Значение:'' В C:\Scripts\DEV-MIHA\KerberosKeyRollover\M365_Kerberos_Key_Rollover.ps1:133 символ:1

  • Обновление-AzureADSSOForest -OnPremCredentials $OnpremCred
  •   + CategoryInfo          : NotSpecified: (:) [Update-AzureADSSOForest], Exception
      + FullyQualifiedErrorId : System.Exception,Microsoft.KerberosAuth.Powershell.PowershellCommands.UpdateAzureADSSOForestCommand
    
    

Подсказка: Я прочитал довольно много часов относительно общей проблемы - и пока не нашел никакого решения для этой проблемы. За исключением того, что некоторые утверждают, что это в настоящее время невозможно.

Но, возможно, кто-то уже добился того, чего хочу я.

Предложения приветствуются. :-)

решение1

Это не ответ, но, возможно, прогресс в этом направлении. Вот что я пока нашел:

Во-первых,Новый AzureADSSOAuthenticationContextне проверяет токен, который вы предоставляете через -Tokenпараметр, пока вы фактически не запустите команду, которая на него полагается (например, Get-AzureADSSOStatusили Update-AzureADSSOForest) — например, следующая команда будет выполнена без ошибок:

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

Во-вторых, основанный на некоторых исследованиях того, как New-AzureADSSOAuthenticationContextработает использованиеСкрипач, мне удалось заставить его работать сПолучить-MsalTokenсгенерированный токен с использованием интерактивного входа следующим образом:

$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

Вышеуказанное позволит Get-AzureADSSOStatusправильно возвращать, что должно быть хорошим началом. Следующая часть проблемы, вероятно, заключается в том, чтобы заставить приложение-прокси Azure AD Connect принятьпредоставление клиентских учетных данныхтокен вместо пользователяпредоставление кода авторизациитокен.

Связанный контент