本記事の作成に際し、内容の正確性を確保するため社内検証を実施いたしましたが、その完全性について保証するものではありません。ご利用の環境や設定によっては、挙動が本手順とは異なる場合もあります。その場合は、弊社サポートおよびMicrosoftサポートへお問い合わせください。
本記事では、Windows PowerShellを用いてMicrosoft Graphに接続し、ドメインに対してフェデレーション設定を手動で行う方法をご案内します。何らかの原因で OneLogin Office 365 V2 コネクタの Auto Configuration が正常に動作しなかった際のワークアラウンドとしてご利用いただけます。
目次
2. Windows PowerShellを用いたMicrosoft 365ドメイン フェデレーション設定
前提条件
- Windows PowerShellのバージョンが5.1以上であること
- .NET フレームワークのバージョンが4.7.2以上であること
- PowerShellGet モジュールのバージョンが最新であること
- Windows PowerShellにて署名済みスクリプトの実行が許可されていること*1
- Microsoft 365のグローバル管理者権限をお持ちであること
- OneLoginとMicrosoft 365の間でImmutable IDの連携が済んでいること*2
*1 PowerShellにて署名済みスクリプトの実行が許可されているか不明な場合は、Windowsのローカル管理者権限を持つアカウントで下記操作をご実施ください。
-
管理者権限でWindows PowerShellを起動し、
Set-ExecutionPolicy RemoteSignedを実行します
-
Yと入力し、署名済みスクリプトの実行を許可します
-
Get-ExecutionPolicyを実行し、RemoteSignedと表示されることを確認します
*2 OneLoginからMicrosoft 365へのシングルサインオンには、OneLoginユーザーとMicrosoftアカウントの間でImmutable IDの連携が必要となります。Immutable IDの連携がお済みでない場合は、下記のドキュメントを参考に、OneLoginとImmutable IDの連携設定をお願いいたします。
- OneLoginのライセンスが Unlimited または Professional(新料金体系)の場合
- OneLoginのライセンスが Enterprise または Advanced(新料金体系)の場合
Microsoft Graphモジュールのインストール
- Windows PowerShellを 管理者として実行 します
-
Install-Module Microsoft.Graph -Scope CurrentUser -Repository PSGallery -Forceを実行しモジュールのインストールを開始します
- インストールが始まると、下記画像のように青いバナーが表示されます。インストールが完了するまで他の操作を行わないようお願いいたします
- インストールが完了したのち、
Get-InstalledModule Microsoft.Graphを実行してMicrosoft Graphの最新版がインストールされていることを確認します
Microsoft Graphへの接続
- Windows PowerShellを 管理者として実行 します
-
Connect-MgGraph -Scopes "Directory.Read.All", "Domain.ReadWrite.All", "Directory.AccessAsUser.All"を実行します
Microsoft Graph 接続時の Directory.AccessAsUser.All スコープについて
Directory.AccessAsUser.All スコープは、通常の WS-Federation 認証の設定には本来必要ありません。しかし、Microsoft Graph には以下のような既知の不具合が存在しており、一部の操作が正常に動作しないことがあります。安定した接続のために Directory.AccessAsUser.All スコープも含めて Microsoft Graph に接続ください。
このメソッドには 既知のアクセス許可の問題 があり、委任されたシナリオの Directory.AccessAsUser.All アクセス許可への同意が必要になる場合があります。
- Microsoft 365のログイン画面が表示されるため、グローバル管理者権限をもつアカウントでログインします
- 正常にMicrosoft Graphに接続ができましたら、下記のメッセージが表示されます
WS-Fed フェデレーションの設定
1. OneLogin側の操作
- OneLoginに管理者でログインし、[管理]をクリックします
-
Applications メニューから[Applications]を選択します
- お使いのMicrosoft 365コネクタを検索し、選択します
- アドレスバーから、コネクタの設定画面URLの Application ID を取得します
例)https://jp.onelogin.com/apps/3847795/editの場合、3847795
-
SSO タブに移動し、Manual configuration を選択します
-
Issuer URL をクリップボードへコピーします
-
WS-Federation Web SSO Endpoint をクリップボードへコピーします
- X.509 Certificate > View Details をクリックします
- X.509 Certificate のプルダウンを[X.509 DER]に変更します
- [Download]をクリックし、証明書ファイルをダウンロードします
2. Windows PowerShellを用いたMicrosoft 365ドメイン フェデレーション設定
-
Microsoft Graphへの接続 にそって、Windows PowerShellからMicrosoft Graphへ接続します
-
Get-MgDomain -DomainId {お使いのMicrosoftドメイン}を実行し、フェデレーション設定を行いたいMicrosoftドメインのAuthenticationType が Managedであることを確認します
上記のコマンド実行時、下記画像のようにログインするグローバル管理者の選択画面が表示された場合は、Microsoft Graphへの接続 で使用したグローバル管理者をご選択ください
- エクスプローラーを開き、1. OneLoginからWS-Federation認証設定値の取得 の手順10でダウンロードした証明書を右クリックします
- [パスのコピー]を選択します
- Windows PowerShellに戻り、コピーした証明書の絶対パスを使用した
$certPath = {手順4でコピーした証明書のパス}を実行します。このコマンドにより、Windows PowerShell内の変数「certPath」にOneLoginからダウンロードしたX.509 DER証明書を格納します
-
$certBytes = [System.IO.File]::ReadAllBytes($certPath)を実行し、OneLoginからダウンロードしたX.509 DER証明書をバイナリで読み込みます
-
$base64Cert = [Convert]::ToBase64String($certBytes)を実行し、OneLoginからダウンロードしたX.509 DER証明書をBase64形式の文字列にエンコードします
-
$MSDomain = "{お使いのMicrosoftドメイン}"を実行し、WS-Federation認証設定を行う Microsoftドメイン を保存します
-
$IssuerURL = "{OneLoginのMicrosoft 365コネクタから取得したIssuer URL}"を実行し、1. OneLoginからWS-Federation認証設定値の取得 手順7で取得した Issuer URL を保存します
-
$WSEndpoint = "{OneLoginのMicrosoft 365コネクタから取得したWS-Federation Web SSO Endpoint}"を実行し、1. OneLoginからWS-Federation認証設定値の取得 手順8で取得した WS-Federation Web SSO Endpoint を保存します
-
$PortalURL = "https://{お使いのOneLoginのサブドメイン}.onelogin.com"を実行し、お使いの OneLoginのポータルURL を保存します
-
$ActiveSignInUri = "https://{お使いのOneLoginサブドメイン}.onelogin.com/trust/ws-fed2007-06/active/{Application ID}"を実行し、1. OneLoginからWS-Federation認証設定値の取得 手順4で取得したApplication IDをもとに、Microsoft 365のリッチクライアントアプリなどで使用するActiveSignInUriを保存します
-
$MetadataExchangeUri = $ActiveSignInUriを実行し、MetadataExchangeUriの設定値をActiveSignInUriと同じ値にします
-
New-MgDomainFederationConfiguration -DomainId $MSDomain -FederatedIdpMfaBehavior acceptIfMfaDoneByFederatedIdp -DisplayName $MSDomain -IssuerUri $IssuerURL -ActiveSignInUri $ActiveSignInUri -MetadataExchangeUri $MetadataExchangeUri -SigningCertificate $base64cert -PassiveSignInUri $WSEndpoint -SignOutUri $PortalURL -PreferredAuthenticationProtocol wsFedを実行し、Microsoftドメインに対してフェデレーション設定を行います。設定に成功すると、下記画面のようにドメインと設定内容が表示されます
-
Get-MgDomain -DomainId {お使いのMicrosoftドメイン}を実行し、MicrosoftドメインのAuthenticationTypeが Federated になったことを確認します
Windows PowerShellによるWS-Fed フェデレーションの設定は以上です。
WS-Federation認証の動作確認
1. Webアプリケーションの場合
- OneLoginからMicrosoft 365へのログインセッションがないシークレットブラウザなどを開きます
- Microsoft 365のログイン画面(https://login.microsoftonline.com/)を開きます
- フェデレーション設定を行ったドメインを持ち、Immutable IDの連携済みのユーザーのメールアドレスを入力し[次へ]をクリックします
- OneLoginにリダイレクトするため、ログインします
- OneLoginへのログイン後、連携済みのユーザーでMicrosoft 365にログインできることを確認します
2. リッチクライアントアプリの場合
- Wordなどのリッチクライアントアプリを起動し、サインインを始めます
- フェデレーション設定を行ったドメインを持ち、Immutable IDの連携済みのユーザーのメールアドレスを入力し[次へ]をクリックします
- 連携しているOneLoginのユーザーでログインします
- ご利用のMicrosoft 365アプリケーションのすべてに同じアカウントでログインする場合は[はい、すべてのアプリ]を、Wordのみログインする場合は[いいえ、このアプリのみ]を選択します
- 連携済みのユーザーでWordにログインできることを確認します
WS-Federation認証の動作確認は以上です。
Microsoft Graphからの切断
最後に使用したWindows PowerShellのMicrosoft Graph接続を終了します。
-
Disconnect-MgGraphを実行し、Microsoft Graphから切断します
Windows PowerShell及びMicrosoft Graphを利用したMicrosoft 365のWS-Federation連携設定は以上です。
WS-Fed フェデレーションの解除(切り戻し)
もしご設定された内容に誤りがあるなどしてシングルサインオンに失敗し、一時的にWS-Federationの認証を無効化、通常のID・パスワードによる認証に戻したい場合は、Microsoft 365 - Microsoft Graph PowerShellによるWS-Fed フェデレーションの解除 をご参照いただき、Microsoft 365側で対象ドメインの認証方式を Federated から Managed にご変更ください。