我們透過使用儲存在文字檔案中的「加密」密碼來自動執行 30 天的 kerberos 解密金鑰翻轉過程,為 Powershell 命令 new-azureADSSOAuthenticationContext 建立必要的 PSCredential 物件。
這可行 - 但我想提高整體安全性,因此希望消除 Azure 上租用戶的全域管理員的 PSCredential 物件。
我發現 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 | 133更新-AzureADSSOForest -OnPremCredentials ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ ~~~ |無法從組件“System.ServiceModel.Web,版本=4.0.0.0,文化=中性,”載入類型“System.ServiceModel.Web.WebChannelFactory`1” PublicKeyToken=31bf3856ad364e35'。
在「舊」Powershell 5.1 下執行時:Update-AzureADSSOForest:上傳電腦帳戶資訊失敗。錯誤訊息:使用無效的authentiatedToken 發出DesktopSsoNumOfDomains 請求。值:''位於 C:\Scripts\DEV-MIHA\KerberosKeyRollover\M365_Kerberos_Key_Rollover.ps1:133 char: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 代理應用程式接受應用程式的客戶憑證授予令牌而不是使用者的授權碼授予令牌。