■Microsoft Graph PowerShellモジュールでMicrosoft 365の認証をWorkspace ONE Accessにフェデレーションする
耐寒マツバギク(2024/5/18撮影) タンポポに似て、円形に細い花弁を持っていることや、その名前からキクの仲間と思ったところ、調べてみると違う植物の仲間だそうです。 マツバギクという名称なのでなんとなくアジア原産かと思っていたら、南アフリカ原産でした。 |
New-MgDomainFederationConfiguration コマンドというコマンドがあるそうです。
以下URLを見てみると、前回のブログエントリで使用した Set-MsolDomainAuthentication コマンドの後継コマンドだそうです。
■目次
- Microsoft.Graph.Identity.DirectoryManagement モジュールのインストール
- Microsoft 365に接続
- Microsoft 365に存在するドメインのリスト表示
- New-MgDomainFederationConfiguration コマンドによるフェデレーション設定
- ログイン確認
- その他躓いたこと
①Microsoft.Graph.Identity.DirectoryManagement モジュールのインストール
以下のコマンドでモジュールをインストールしました。
Install-Module -Name Microsoft.Graph.Identity.DirectoryManagement
②Microsoft 365に接続
モジュールのインストールが完了したら、以下のコマンドを使用して接続します。
Connect-MgGraph -Scopes "User.ReadWrite.All", "Group.ReadWrite.All", "Domain.ReadWrite.All", "Directory.ReadWrite.All", "Directory.AccessAsUser.All"
入力すると、ポップアップが表示され、ID/Passを入力など入力してユーザー認証後、コマンドで入力した権限を使用するか否かチェックボックスにチェックをつけます。
よく見たら、このスクリーンショットの中でも同じ権限を重複して入力していますが、おなじものは一つでよいはずです。 |
認証が終わったら認可?のような形で実行可能な機能へのアクセス許可を得ます。 |
③Microsoft 365に存在するドメインのリスト表示
そのドメインの認証がEntra IDで行われているか、ほかのサードパーティIDPで行われているかが、ManagedかFederatedで表示されます。
Get-MgDomain
今回は上から4番目のドメインの認証をWorkspace ONE Accessにフェデレーションします。 |
④New-MgDomainFederationConfiguration コマンドによるフェデレーション設定
以下のようなコマンドで、対象のドメインをフェデレーションします。
New-MgDomainFederationConfiguration `
-DomainId "my.custom.domain" `
-DisplayName "Omnissa" `
-IssuerUri "https://Omnissa2024.0515" `
-PreferredAuthenticationProtocol "saml" `
-ActiveSignInUri "https://fqdn.of.my.workspaceoneaccess/SAAS/auth/wsfed/active/logon" `
-PassiveSignInUri "https://fqdn.of.my.workspaceoneaccess/SAAS/API/1.0/POST/sso" `
-SignOutUri "https://login.microsoftonline.com/logout.srf" `
-federatedIdpMfaBehavior "acceptIfMfaDoneByFederatedIdp" `
-MetadataExchangeUri "https://fqdn.of.my.workspaceoneaccess/SAAS/auth/wsfed/active/mex" `
-SigningCertificate "MII....==" | Format-List
設定後に設定内容のみを表示したい場合は以下のコマンドを実行します。
Get-MgDomainFederationConfiguration -DomainId "my.custom.domain" | Format-List
⑤ログイン確認
ログイン確認時の画面遷移は以下の通りです。
Microsoft 365のログイン画面で、ユーザーIDを入力します。 (今回はメールアドレスとしています) |
Workspace ONE Accessの画面にリダイレクトされます。 ユーザー名を入力し、そのあとに続く認証ポリシーで定められたユーザー認証操作を行います (詳細のスクリーンショットは割愛していますが、今回はユーザー名/パスワードの単一要素で認証しています)。 |
Workspace ONE AccessからMicrosoft 365にリダイレクトされ、戻ってきます。 |
ログインが完了しました! |
⑥その他躓いたこと
・federatedIdpMfaBehaviorオプションについて
federatedIdpMfaBehaviorオプションを使用しない場合、「New-MgDomainFederationConfiguration : FederatedIdpMfaBehavior cannot be empty」というエラーが表示されました。
エラーが表示されたので、フェデレーションされていないのかと思いきや、Get-MgDomainコマンドではfederatedと表示されます。
しかし Get-MgDomainFederationConfiguration コマンドでも詳細を表示することができません。
なんだかおかしいので、一度 Remove-MgDomainFederationConfiguration コマンドでManagedの設定に戻そうと思ったのですが、このコマンドは Get-MgDomainFederationConfiguration で確認できるフェデレーション設定ごとのIDが必要です。そのため Remove-MgDomainFederationConfiguration コマンドは使えず、結局以下のように Set-MsolDomainAuthentication コマンドを使用してもとに戻しました。
Set-MsolDomainAuthentication -DomainName "my.custom.domain" -Authentication Managed
本ブログエントリ作成時点では幸いなことにまだ使えたので、Set-MsolDomainAuthenticationでもとに戻しました。 ※正しい戻し方がもっと他にあるのかもしれませんが。。 |
・WS-Federation?SAML?どっちなんだい?
前回のブログでMicrosoft 365の認証をWorkspace ONE Accessにフェデレーションした際は、WS-Federationというプロトコルを選択してフェデレーションしています。
実際、前回のブログで設定したドメインに対してSet-MsolDomainAuthenticationコマンドを実行してみたら、wsFedと表示されました。
Get-MgDomainFederationConfiguration -DomainId my.custom.domain | Format-List
New-MgDomainFederationConfigurationコマンドも、実行するとデフォルトでWS-FederationでWorkspace ONE Accessに認証を委任してくれます。
ただ、2024年5月18日時点では、New-MgDomainFederationConfigurationコマンドを使用してWS-FederationでWorkspace ONE Accessに認証を委任しても、SP Initiated SSOを実施すると、Workspace ONE Access側にリダイレクトされたときに以下のような画面になり、正常にユーザー認証が行えない状況となりました(IdP Initiated SSOであれば成功しました)。
PowerShell内で認証プロトコルとしてsamlを指定したところ、上記の画面は解消し、ユーザー認証を行ってログインが行えるようになりました。
※なお、Workspace ONE Access側は、前回のブログポストと同じWebアプリケーションのエントリを使用しており、WS-Federationで設定されています。
・実行したいコマンドに必要な権限について
例としてGet-MgDomainに必要な権限を調べるときは、以下のコマンドが便利でした。
(Find-MgGraphCommand -Command Get-MgDomain).permissions
今ログイン中のアカウントがどんな権限を持っているかは、以下で確認できました。
(Get-MgContext).scopes