■Microsoft Graph PowerShellモジュールでMicrosoft 365の認証をWorkspace ONE Accessにフェデレーションする

耐寒マツバギク(2024/5/18撮影)
タンポポに似て、円形に細い花弁を持っていることや、その名前からキクの仲間と思ったところ、調べてみると違う植物の仲間だそうです。
マツバギクという名称なのでなんとなくアジア原産かと思っていたら、南アフリカ原産でした。

New-MgDomainFederationConfiguration コマンドというコマンドがあるそうです。
以下URLを見てみると、前回のブログエントリで使用した Set-MsolDomainAuthentication コマンドの後継コマンドだそうです。

今回は、New-MgDomainFederationConfiguration コマンドを使用してMicrosoft 365の認証をWorkspace ONE Accessに委任しました。
本ブログエントリは2024年5月18日時点で筆者が確認できた情報をもとに作成しております。本ブログエントリを参考に同様の手順を実行する場合、その時々の各製品、サービスの提供元の公式情報をご確認ください。

■目次

  1. Microsoft.Graph.Identity.DirectoryManagement モジュールのインストール
  2. Microsoft 365に接続
  3. Microsoft 365に存在するドメインのリスト表示
  4. New-MgDomainFederationConfiguration コマンドによるフェデレーション設定
  5. ログイン確認
  6. その他躓いたこと

①Microsoft.Graph.Identity.DirectoryManagement モジュールのインストール

Set-MsolDomainAuthentication コマンドは MSOnline というモジュールの中のコマンドですが、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"

※Microsoft Graph 関連のPowerShellでは、接続時に権限を指定しないといけないところが MSOnline モジュールの Connect-MsolService コマンドと異なっており、最初少し面喰いました。
※上記のコマンド例は、あくまで New-MgDomainFederationConfiguration に必要そうな権限を片っ端から追加してみたもののため、もしかしたら不要な権限がついているかもしれません。

入力すると、ポップアップが表示され、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

これで、SSOを設定できました。
ちなみに、上記コマンドでは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

このブログの人気の投稿

●久々にESXiのカスタムISOをつくってみた

■Workspace ONE UEM API Explorerについて