Azure AD Kerberos 復号化キーのロールオーバー、new-azureADSSOAuthenticationContext、pscredential の代わりにトークンを使用する

Azure AD Kerberos 復号化キーのロールオーバー、new-azureADSSOAuthenticationContext、pscredential の代わりにトークンを使用する

テキスト ファイル内に保存された「暗号化された」パスワードを使用して 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 | Update-AzureADSSOForest -OnPremCredentials $OnpremCred | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | アセンブリ 'System.ServiceModel.Web、バージョン = 4.0.0.0、カルチャ = ニュートラル、| PublicKeyToken = 31bf3856ad364e35' から型 'System.ServiceModel.Web.WebChannelFactory`1' を読み込めませんでした。

  • 「古い」Powershell 5.1 で実行する場合: Update-AzureADSSOForest: コンピューター アカウント情報のアップロードに失敗しました。エラー メッセージ: DesktopSsoNumOfDomains 要求が無効な authenticatedToken で行われました。値:'' 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

これは答えではありませんが、答えに向かって進んでいるのかもしれません。これまでに私が見つけたものは次のとおりです。

まず新しい AzureADSSO 認証コンテキスト-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プロキシアプリケーションがアプリケーションのクライアント資格情報の付与ユーザーの認証コード付与トークン。

関連情報