今回はMicrosoft Entra ID(旧Azure AD)のPrimary Refresh Token(以降PRT)を解説します。
PRTは、Edgeブラウザと連携してID・パスワード入力なしでのログインを実現するだけでなく、SAMLベースのシングルサインオン(以降SSO)でも重要な役割を持ちます。さらに、Microsoft Entra ID P1ライセンスの重要な機能である条件付きアクセスでも基盤となる技術です。これらを設計するうえで、今回の記事を理解しておくと、PRTへの理解がさらに深まります。
この記事はハンズオン形式で、以下の内容を実機ベースで検証します。
- Entra ID Joinし、PRTを取得する
- PC上でPRTの有効性・更新時刻を確認する
- PRTあり・なしのSSOの動作を確認する
- Microsoft Entra管理センターでSSOログおよびPRT更新時のログを確認する
なお、Salesforce – Microsoft Entra IDのSAMLベースのSSO設定については、以下の記事で解説しております。先にこちらを読んで設定(無料で構築可能)していただくと、証明書やSP Initiatedの流れが整理でき、PRTがID/パスワード入力を省略できるのかが、より深く理解できます。
第1章:はじめに — SSOとPRTの概要
ここではPRTなし(Entra ID Join未実施)、PRTあり(Entra ID Join済み)のケースで、SSOの処理がどう異なるかを解説します。前提として、SalesforceとEntra ID間でSAML SSO設定が完了しているものとします。
PRTなしのケース(Entra ID Joinなし)
PRTがない場合、SAML SSOのフローは以下のようになり、ユーザーによる認証情報の入力が必須となります。

- ユーザーがSalesforcenoのサインオンURLにアクセスし、SalesforceはSP Initiated SSOのフローを開始
- SalesforceはブラウザをEntra IDへリダイレクトし、SAML要求を提示
- Entra IDはブラウザ上に認証画面を表示させ、ID・パスワード入力をユーザーに求める
- ユーザーはID・パスワード情報を入力し、Entra IDにサインイン
- Entra IDはトークン署名証明書の秘密鍵で署名したSAMLレスポンスを返送
- SalesforceはSAMLレスポンスを受信し、事前登録済み公開鍵で検証
- 検証成功後、認証が完了しSalesforceにログイン
これが最もベーシックな認証処理です。SSO設定済みでも、ステップ3でパスワード入力が求められます。
PRTありのケース(Entra ID Joinあり)
Entra ID JoinしたPCにサインインすると、OSはEntra IDと認証を行い、PRTを取得します。 Edgeブラウザ(職場または学校プロファイル設定済み)は、Web Account Manager (WAM) と統合されており、このPRTを利用して上述のステップ3、4を自動処理します。その結果、認証画面が表示されることなく、シームレスにログインが完了します。
第2章:検証端末の準備 ー Entra ID JoinとPRTの取得確認
以降は実機を用いてのハンズオン検証となります。まずは、Entra ID Joinを行い、実際にPRTが取得されているかを確認します。なお、Entra ID Joinをせずに、つまりPRT取得せずにSSOを実施した場合の検証は、SalesforceとEntra IDのSSO連携手順を参照ください。
以降はSalesforceとMicrosoft Entra IDのSSO連携が完了していること、Entra IDに管理者でログインできること、Windows 11 proあるいはenterpriseがあることが検証の前提条件です
【事前準備】検証用ユーザーの作成およびEntra ID Join(実施済みの場合スキップ)
ここではMicrosoft 365管理センターで検証用ユーザー(user01@xxx.onmicrosoft.com)を作成し、次いでそのユーザーでWindows 11 PCをEntra ID Joinさせます。実施済みの方は適宜スキップ可能です。
- Microsoft 365管理センターに管理者でログインし、画面左の[ユーザー] > [アクティブなユーザー] > [ユーザーの追加]をクリックし、user01を作成します

- 製品ライセンスでは、”製品ライセンスなしでユーザーを作成する”をクリックします。残りはデフォルトのままで進めると検証用ユーザーが作成できます
- Windows 11 ProあるいはEnterpriseでローカルログイン、Windowsキー + iで設定を呼び出します。画面左[アカウント] > [職場または学校にアクセスする] > [接続]をクリックします

- 画面下部の[このデバイスをMicrosoft Entra IDに参加させる]をクリックします。間違えやすいので注意します。その後は、作成済みのuser01@xxx.onmicrosoft.comとパスワードを入力します。続く確認画面では、[参加する] > [完了]をクリックします。

- 画面指示通り、Windowsメニューから、Switch userでログインユーザーを切り替えます。ログイン画面で、ほかのユーザーを選んで、user01でサインインします

- Windows Hello for Businessのセットアップ画面が表示されますが、今回はPRT確認が目的なので×マークでキャンセルして進めます

これでuser01@xxx.onmicrosoft.comでサインインできました
PRTの確認
現在、Entra ID Join済みのデバイスで、Entra IDユーザーuser01でWindowsにサインインしましたので、PRTを取得していることを確認します。
コマンドプロンプトを読み出し、whoami /upnコマンドを入力し、以下の通りログイン名 = user01@xxx.onmicrosoft.comでログインできております。
whoami /upn

PRTの確認として、dsregcmd /statusを入力します。Device Stateセクションで、AzureAdJoinedがYESとなっていることを確認します。
dsregcmd /status

続いて下にスクロールして、SSO StateセクションがPRTの核心部分で、AzureAdPrt = YESとなっており、PRTを保持していることが分かります。また、PRTを更新時刻(AzureAdPrtUpdateTime)と満了時刻(AzureAdPrtExpiryTime)も確認します。

上記の通り、PRTを確認できればOKです。
第3章 : SSOの検証 ー PRTあり・なしでの違い
PRTを保持していることを確認できましたので、ここではパスワード入力なしのSSOができることを確認します。また、その後はEntra IDでログを確認しますので、SalesforceにSSOした時刻をメモしておきます。
以下の通り、Edgeを立ち上げて、[画面右上のプロファイルアイコン] > [歯車]と進み、user01@xxx.onmicrosoft.comが設定されていることを確認します。「同期していません」という赤文字が表示されておりますが、これはお気に入りなどが同期していないことを意味しており、SSOの動作には影響しません。

ここで、EdgeはEntra IDユーザーでサインインしているため、そのユーザーでSSOを仕掛けること、また、EdgeはWeb Account Managerと連携してPRTを使い、パスワード入力なしでのSSOを試みます
まずはSalesforceにパスワードを手動入力するログインを試します。EdgeでCtrl+Shift+Nを押し、Privateブラウザを起動、URLはSalesforce管理画面に記載のある「私のドメイン」を入力します。PRTが利用されないため、Entra IDのユーザー名とPassword入力を要求されます。ログイン後はサインアウトして、ブラウザを閉じます。また、SSOした時刻をメモしておきます。

続いて標準のEdgeブラウザを起動して、同じく「私のドメイン」URLに接続すると、アカウントを選択した後、パスワードなしSSOでログインできます。こちらもSSOした時刻をメモしておきます。

上記の違いにより、PRTを保持したEdgeブラウザがWeb Account Managerと連携し、パスワード入力なしでSSOできていることが分かります。
第4章:トークンの確認 — Entra管理センターでのサインインログ
ここでは、Entra IDのサインインログを確認し、上のSSOで実際にPRTが使われていたかを確認します。
まずは、Microsoft Entra管理センターに管理者でログイン、画面左[監視と正常性] > [サインインログ]をクリック、フィルターの追加でユーザープリンシパル名 = user01とセットします。成功したレコードの一番目(Edge PrivateブラウザでのSSO)をクリックします。

Edge PrivateブラウザのSSOはPrimary Refresh Tokenは使っていないため、受信トークンの種類はなしと表示されます。

引き続き二番目のレコード(Edge標準ブラウザ)をクリックします。

スクロールすると、受信トークンの種類は「プライマリ更新トークン」と書かれていることが分かります。

上述の通り、Entra管理センターで、PRTを使ったアクセスが発生していること確認できました。
第5章:PRTの更新間隔 ー Entra管理センターでの確認
PRTには上で見た通り有効期限がありますので、ここでは、更新させた際のEntra管理センターのログも確認します。
PRTは以下のMicrosoft公式記載の通り、Windowsデバイスであれば、4時間ごとに更新します。
デバイスのロックとロック解除、または Windows への再サインインのプロセスの一環として、PRT を更新するために 4 時間ごとに 1 回、バックグラウンド ネットワーク認証が試行されます
ですので、dsregcmd /statusのAzureAdPrtUpdateTimeから4時間以上経過してから、サインアウト・再サインインを行います。すると、以下の通り、AzureAdPrtUpdateTimeが更新されていることが分かります。

Microsoft Entra管理センターにログインし、同じように今回のサインインログを確認します。以下の通り、アプリケーションはWindows Sign Inであることが分かります。

サマリー
今回は以下の内容を確認、動作検証しました
- SAMLベースSSOとPRTなし・ありのベーシックなフロー
- Entra ID Join
- dsregcmd /statusコマンドでのPRTを保持、更新時刻の確認
- Edgeブラウザでのパスワード入力あり・なしのSAMLベースSSOの検証
- Microsoft Entra管理センターでのサインインログ、PRT確認
PRTを使うことによって、エンドユーザーにパスワードを入力させないことによる利便性の向上、また、フィッシング詐欺に合いにくくなる、パスワード忘れを防ぐことができるなど、大きなメリットがあります。
次回はEntra ID P1, P2を用いた条件付きアクセス、MFAなども検証してまいります。


コメント