Fazemos o processo de substituição da chave de descriptografia Kerberos de 30 dias automatizado usando uma senha "criptografada" armazenada em um arquivo de texto para criar o objeto PSCredential necessário para o comando Powershell new-azureADSSOAuthenticationContext.
Isso funciona - mas quero melhorar a segurança geral e, portanto, eliminar o objeto PSCredential para o Administrador Global do nosso Locatário no Azure.
Vi que o comando new-azureADSSOAuthenticationContext também pode ser alimentado com um token de acesso (por meio do parâmetro -token). Um token de acesso que posso recuperar usando um certificado armazenado no armazenamento de certificados de máquina muito mais seguro usando "Get-MsalToken"
Até agora, criei um aplicativo do Azure, atribuí ao SecurityPrincipal a função de Administrador Global (em Aplicativos Corporativos) e criei um certificado autoassinado (armazenado no armazenamento pessoal da máquina) e carreguei esse certificado no aplicativo do Azure.
Estou recebendo o token com: $Token = Get-MsalToken -ClientId $ClientId -TenantId $TenantId -ClientCertificate $Certificate -RedirectUri "http://bla.com"
Isso funciona e também posso usar o token no new-azureADSSOAuthenticationContext.
Mas quando chamo Update-AzureADSSOForest -OnPremCredentials $OnpremCred, recebo o seguinte erro:
Quando executado no "novo" Powershell 7: Line | 133 | Update-AzureADSSOForest -OnPremCredentials $OnpremCred | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ | Não foi possível carregar o tipo 'System.ServiceModel.Web.WebChannelFactory`1' do assembly 'System.ServiceModel.Web, Versão=4.0.0.0, Culture=neutral, | PublicKeyToken=31bf3856ad364e35'.
Quando executado no "antigo" Powershell 5.1: Update-AzureADSSOForest: falha no upload das informações da conta do computador. Mensagem de erro: a solicitação DesktopSsoNumOfDomains foi feita com authenticatedToken inválido. Valor:'' Em C:\Scripts\DEV-MIHA\KerberosKeyRollover\M365_Kerberos_Key_Rollover.ps1:133 char:1
- Atualização-AzureADSSOForest -OnPremCredentials $OnpremCred
-
+ CategoryInfo : NotSpecified: (:) [Update-AzureADSSOForest], Exception + FullyQualifiedErrorId : System.Exception,Microsoft.KerberosAuth.Powershell.PowershellCommands.UpdateAzureADSSOForestCommand
Dica: li algumas horas sobre o problema geral - e até agora não encontrei nenhuma solução para esse problema. Exceto que alguns afirmam que isso não é possível atualmente.
Mas talvez alguém já tenha conseguido o que eu quero alcançar
Sugestões são bem-vindas. :-)
Responder1
Esta não é a resposta - mas talvez haja progresso nesse sentido. Aqui está o que descobri até agora:
Primeiramente,Novo AzureADSSOAuthenticationContextnão verifica o token fornecido por meio do -Token
parâmetro até que você realmente execute um comando que dependa dele (como Get-AzureADSSOStatus
ou Update-AzureADSSOForest
) - por exemplo, o seguinte será concluído sem erro:
New-AzureADSSOAuthenticationContext -Token "12345" -Tenantid <YourTenantId>
Em segundo lugar, com base em alguma investigação sobre como New-AzureADSSOAuthenticationContext
funciona usandoViolinista, consegui fazê-lo funcionar com umObter-MsalTokentoken gerado usando login interativo da seguinte forma:
$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
O que foi dito acima permitirá Get-AzureADSSOStatus
retornar corretamente, o que deve ser um bom começo. A próxima parte do problema é provavelmente fazer com que o aplicativo proxy do Azure AD Connect aceite o pedido de um aplicativo.concessão de credenciais do clientetoken em vez do de um usuárioconcessão de código de autorizaçãosímbolo.