Google WorkspaceのアカウントでMicrosoft365へSAML認証する

概要

Microsoft EntraID(旧AzureAD)のExternal Identitiesの設定をすることで、Google Workspace(のCloudIdentity)をIdPとして、Microsoft365へSAML認証でログインできます。

背景

元々設定してあったのですが、次のエラーでログインできなくなったので消して設定し直しました。

AADSTS5000811: Unable to verify token signature. The signing key identifier does not match any valid registered keys.

やりかた

CloudIdentityの設定

Googeの管理コンソールにログインし、[アプリ]-[ウェブアプリとモバイルアプリ]を開きます。

[アプリを追加]-[カスタムSAMLアプリの追加]をクリックします。

適当に名前をつけたりメタデータをダウンロードしたりしてください。
次のような設定になればよいはずです。

カスタムドメインの登録 (既に登録してある場合はスキップ)

AzurePortalにログインします。

[EntraID]-[カスタム ドメイン名]を開き、[カスタム ドメインの追加]からドメインを追加します。

既存のフェデレーション設定の削除 (既存のフェデレーション設定がない場合はスキップ)

既存のフェデレーション設定があるかないかわからない時は次のコマンドで確認できます。

Get-MgDomain

PowerShellを起動して次のコマンドを実行します。

 Get-MgDomainFederationConfiguration -DomainId <既存フェデレーションドメイン名> | fl

次のコマンドを実行してフェデレーション設定を削除します。

Remove-MgDomainFederationConfiguration -DomainId <既存フェデレーションドメイン名>

フェデレーションの再設定

次のコマンドを順番に実行します。Connect-MGGraphで認証リダイレクトがくるのでMicrosoft EntraIDの管理者アカウントを準備しておいてください。

$domainId = "<既存フェデレーションドメイン名>"

$xml = [Xml](Get-Content <Google Workspaceから落としてきたメタデータのパス>)

$cert = -join $xml.EntityDescriptor.IDPSSODescriptor.KeyDescriptor.KeyInfo.X509Data.X509Certificate.Split()
$issuerUri = $xml.EntityDescriptor.entityID
$signinUri = $xml.EntityDescriptor.IDPSSODescriptor.SingleSignOnService | ? { $_.Binding.Contains('Redirect') } | % { $_.Location }
$signoutUri = "https://accounts.google.com/logout"
$displayName = "Google Workspace Identity"
Connect-MGGraph -Scopes "Domain.ReadWrite.All", "Directory.AccessAsUser.All"

$domainAuthParams = @{
  DomainId = $domainId
  IssuerUri = $issuerUri
  DisplayName = $displayName
  ActiveSignInUri = $signinUri
  PassiveSignInUri = $signinUri
  SignOutUri = $signoutUri
  SigningCertificate = $cert
  PreferredAuthenticationProtocol = "saml"
  federatedIdpMfaBehavior = "acceptIfMfaDoneByFederatedIdp"
}

New-MgDomainFederationConfiguration @domainAuthParams

コマンドが正常に終了すれば完了です。portal.office.comとかで試してみましょう。

おまけ

参考

Google ワークスペースとMicrosoft Entra ID間のフェデレーションを構成するhttps://learn.microsoft.com/ja-jp/education/windows/configure-aad-google-trust

(筆者環境ではうまくいかなかったが)証明書だけアップデートする方法
AD FS のトークン署名証明書を手動でアップデートする方法
https://jpazureid.github.io/blog/active-directory-federation-service/migrate-msol-update-federation-domain

External Identities

調べている中でこんがらがったのがExternal Identitiesです。

Google Workspaceのメタデータを入れれたり、フェデレーションと似通った部分が多いのですが、こいつは外部ユーザーの認証のためのものです。自社のユーザーの、認証は他IdP(今回だとGoogle Workspace)に飛ばすが、Office365は自社テナントで使う、ような場合はこちらは使えません。

コメント