【図解】PRT(Primary Refresh Token)とは?Entra参加端末のSSOを支えるしくみとTPMの役割を初心者向けに解説

Entra 参加の PC にサインインすると、Outlook や Teams、ブラウザの Microsoft 365 を開いても、もう一度パスワードを聞かれることはほとんどありません。このシングルサインオン(SSO)を支えているのが、PRT(Primary Refresh Token)です。

この記事では、PRT がどんなものか、いつだれが発行するのか、端末の鍵と TPM でどのように守られているのか、そしてアプリやブラウザの SSO でどう使われるのかを、図とシーケンスで説明します。Entra 参加・ハイブリッド参加の違いは「ドメイン参加・Entra参加・ハイブリッド参加の違い」の記事で説明しているので、あわせて読むと流れがつかみやすくなります。

この記事でわかること
  1. PRT とは何か。Kerberos の TGT と比べてどこが似ていて、どこが違うか
  2. PRT の発行の流れと、端末の鍵・セッションキー・TPM の役割
  3. アプリやブラウザが PRT でサインインを省けるしくみ
  4. PRT の期限・更新・無効になるときと、dsregcmd での確かめ方

PRT とは

PRT は、Windows にサインインしたときに Microsoft Entra ID が発行する、アプリごとのトークンをもらうための「親の通行証」です。アプリは、PRT を使ってそれぞれのトークン(アクセストークン)をもらうので、利用者はパスワードを入れ直さずにすみます。

PC01Entra 参加サインインPRTサインインで1回もらう端末に結び付いた「親の通行証」OutlookトークンTeamsトークンSharePointトークンブラウザトークンPRT を見せて、アプリごとのトークンをもらう。だから何度もサインインしなくてよい(SSO)
図1 PRT の役割

この関係は、オンプレの Kerberos の TGT とよく似ています。TGT を見せてサービスごとのチケットをもらうように、PRT を見せてアプリごとのトークンをもらいます。違いは次のとおりです。

項目Kerberos の TGTPRT
発行する人オンプレの DC(KDC)Microsoft Entra ID
使う先ファイルサーバなど、オンプレのサービスMicrosoft 365 など、Entra ID につながるクラウドのアプリ
中身KDC の鍵で暗号化。PC は読めないEntra ID が暗号化。PC は読めない
期限既定で10時間(7日まで更新できる)90日(使っているあいだは更新され続ける)
端末との結び付きセッションキーを持つ人が使えるTPM が守るセッションキーで、その端末に結び付ける

Kerberos のしくみは「Kerberos(ケルベロス)認証とは?」の記事で説明しています。PRT の中身は Entra ID だけが読める形になっていて、PC の側から中を見ることはできません。

PRT がもらえる端末

端末の状態PRT をもらうタイミング
Entra 参加Windows へのサインインのとき。サインインする前に PRT の発行が終わる
ハイブリッド参加Windows へのサインインのとき。オンプレの AD でサインインが済んだあと、裏で PRT をもらう
Entra 登録仕事のアカウントを追加したとき(設定 ›› アカウント ›› 職場または学校にアクセスする など)

このほか、デバイスを登録していない個人の端末でも、ブラウザなどで「登録されていない端末の PRT」が使われることがあります。ただし、端末の状態を条件にした条件付きアクセスを満たせるのは、登録された端末の PRT だけです。

PRT にかかわる部品

Windows の中では、次の部品が PRT を扱います。

PC01(Windows 10 以降)サインイン画面パスワード・Hello などCloudAPEntra の CloudAP プラグインPRT を受け取って持つWAMEntra の WAM プラグインPRT でアプリのトークンをもらうOutlook・Teams などEdge・Chrome・FirefoxTPM端末の鍵(秘密鍵)トランスポートの鍵(秘密鍵)セッションキー取り出せない形で守る
図2 PRT にかかわる Windows の部品
部品役割
CloudAP と Entra の CloudAP プラグインWindows のサインインで資格情報を Entra ID に確かめてもらい、PRT を受け取って持つ。Entra 参加・ハイブリッド参加では、ここが PRT の持ち主
WAM と Entra の WAM プラグインアプリからのトークンの要求を受け、PRT を使ってアクセストークンをもらう。ブラウザの SSO も助ける
TPM端末の鍵、トランスポートの鍵、セッションキーを、取り出せない形で守るハードウェア

CloudAP は、LSA(LSASS)の中で動く、クラウド向けのサインインの部品です。LSA と認証の部品の関係は「LSASS・SSPI・Negotiateとは?」の記事で説明しています。

前提:デバイスの登録で作る2つの鍵

PRT を端末に結び付けるために、Entra 参加やハイブリッド参加でデバイスを登録するとき、PC は2組の鍵を作ります。

PC01Entra IDデバイスの登録(Entra 参加・ハイブリッド参加)のときに作る端末の鍵(デバイスキー)秘密鍵:TPM の中公開鍵だけ送る公開鍵を保存PRT を頼むとき、要求に署名するトランスポートの鍵秘密鍵:TPM の中公開鍵だけ送る公開鍵を保存Entra ID がセッションキーを暗号化して届ける秘密鍵は TPM から出ないので、PC01 の外ではこの鍵を使った署名や復号ができない
図3 デバイスの登録のときに作る2つの鍵

どちらの鍵も、秘密鍵は TPM の中に置かれ、公開鍵だけが Entra ID に送られます。Entra ID は、端末の鍵の公開鍵で「この要求は本当に PC01 が署名したものか」を確かめ、トランスポートの鍵の公開鍵で、PC01 だけが開けられる形にしてセッションキーを届けます。公開鍵と秘密鍵のしくみは「暗号の基礎」の記事で説明しています。

PRT の発行(最初のサインイン)

Entra 参加の PC に、パスワードで初めてサインインするときの流れです。

① サインインの準備② 端末の鍵で署名して、PRT を頼むuser01PC01CloudAPEntra IDパスワード(または Hello)を入力このユーザーの認証先は?Entra ID(マネージド)+ noncenonce:1回だけ使う乱数資格情報 + nonce端末の鍵(TPM)で署名確かめる資格情報が正しいか・nonce・端末の署名・端末が有効か払い出すPRT + セッションキー(トランスポートの鍵で暗号化)PRT + 暗号化したセッションキーTPM がセッションキーを開け、TPM の鍵で包み直して保存
図4 PRT の発行の流れ
  1. 利用者がパスワードを入力すると、CloudAP のプラグインは、このユーザーの認証先(Entra ID か、AD FS などのフェデレーションか)を Entra ID に問い合わせます
  2. Entra ID から、1回だけ使う乱数(nonce)をもらいます
  3. 資格情報と nonce をまとめ、端末の鍵で署名して Entra ID に送ります
  4. Entra ID は、資格情報、nonce、端末の署名、そしてその端末がテナントで有効かを確かめ、PRT とセッションキーを払い出します。セッションキーは、トランスポートの鍵の公開鍵で暗号化して送ります
  5. PC01 の TPM がトランスポートの鍵でセッションキーを開け、TPM の鍵で包み直して、PRT と一緒に保存します

端末の署名が確かめられないと、PRT は発行されません。また、PRT を発行するときや更新するときには、条件付きアクセスは評価されません。条件付きアクセスが評価されるのは、PRT を使ってアプリのトークンをもらうときです。

ハイブリッド参加では「あとから」もらう

Entra 参加の PC では、PRT の発行が終わってから Windows にサインインできます。いっぽうハイブリッド参加の PC では、オンプレの AD が主役なので、DC から TGT をもらえればサインインでき、PRT はその裏で(非同期で)もらいます。そのため、AD FS などのフェデレーションに問題があると、Windows にはサインインできるのにクラウドのアプリで SSO できない、ということが起きます。

セッションキー:PRT を「この端末だけのもの」にする

PRT といっしょに届くセッションキーは、PRT を使うたびに「この PRT の正しい持ち主は自分だ」と示すための鍵です(Proof-of-Possession、所持の証明)。

PC01 が持つものPRT(中身は見えない)セッションキーTPM が守る。外に出ない要求に PRT を付け、セッションキーで署名Entra ID が確かめることPRT の中に、発行したときのセッションキーが入っている要求の署名が、その鍵で作られているかを比べる一致すれば、PC01 からの要求セッションキーで署名できるのは PC01 の TPM だけ。PRT は PC01 の中でしか働かない
図5 セッションキーの役割

PC01 は、PRT を使う要求(トークンの要求や PRT の更新)に、必ずセッションキーで署名を付けます。Entra ID は、発行したときに PRT の中に入れておいたセッションキーで、その署名を確かめます。セッションキーは TPM に守られていて、ほかの OS の部品も取り出せません。そのため、PRT は PC01 の中でしか働かず、セッションキーの署名がない要求を Entra ID は受け付けません。

Microsoft は、デバイスの登録には TPM 2.0 を推奨しています。dsregcmd /status の TpmProtected が YES なら、端末の鍵が TPM で守られています。

アプリのトークンをもらう(WAM)

Outlook や Teams などのアプリは、自分で PRT を扱いません。Windows の WAM にトークンを頼み、WAM が PRT を使ってトークンをもらってきます。

アプリがトークンを頼むOutlookアプリWAMPC01Entra IDOutlook 用のトークンをくださいPRT + 要求セッションキーで署名確かめるセッションキーの署名・端末が有効か・条件付きアクセス払い出すアクセストークン + リフレッシュトークン(+新しい PRT)トークン(セッションキーで暗号化)アクセストークンだけリフレッシュトークンは WAM が持つ次からは、そのアプリのリフレッシュトークンで更新する
図6 アプリのトークンをもらう流れ

WAM は、もらったトークンのうち、アクセストークンだけをアプリに渡します。リフレッシュトークン(アクセストークンを更新するためのトークン)は WAM が自分で持ち、次からはそれを使って更新します。アプリにパスワードもリフレッシュトークンも渡らないので、アプリごとにサインインし直す必要がなく、トークンの扱いも Windows の中で守られます。

このとき、アプリに求められている条件付きアクセス(多要素認証や準拠したデバイスなど)が評価されます。条件を満たしていなければ、WAM がサインインの画面を出して、追加の確認を求めます。

ブラウザの SSO

ブラウザで Microsoft 365 のサイトを開いたときも、PRT で自動的にサインインできます。Microsoft Edge は標準で対応しています。Google Chrome は「Microsoft Single Sign On」拡張機能、または Chrome 自体の対応で使えます。Firefox はバージョン 91 以降で、Windows の SSO の設定を有効にすると使えます。

ブラウザで Microsoft 365 を開くブラウザEdge などCloudAPPC01Entra IDサインインのページを開くnonce 付きのページPRT を使ったクッキーをくださいMicrosoft のサインイン URL のときだけPRT クッキーセッションキーで署名PRT クッキー付きの要求確かめるセッションキーの署名・nonce・端末が有効か払い出すID トークン + セッションのクッキー
図7 ブラウザの SSO

ブラウザが PRT そのものを受け取るわけではありません。ブラウザは、開こうとしているのが Microsoft のサインインの URL であることを確かめてから、CloudAP に「PRT を使ったクッキー」を頼みます。このクッキーはセッションキーで署名されていて、ページから受け取った nonce も入っています。Entra ID はそれを確かめて、ブラウザ用のトークンとセッションのクッキーを発行します。なお、InPrivate などのプライベートなウィンドウでは、この SSO は働きません。

期限と更新

発行90日使っているあいだは、4時間ごとなどに更新される更新されるたびに、期限はまた先に延びるCloudAPサインインしているあいだ、4時間ごとに更新WAMアプリのトークンを頼むときに、新しい PRT をもらうことがある期限使われないまま90日たつと切れる再認証条件付きアクセスの「サインインの頻度」で、定期的な再認証を求められる
図8 PRT の期限と更新

PRT は発行から90日有効で、使っているあいだは更新され続けます。CloudAP は、サインインしているあいだ4時間ごとに PRT を更新します。インターネットにつながっていなければ、つながってから次にサインインしたときに更新します。WAM も、アプリのトークンを頼むときに新しい PRT を受け取ることがあり、そのときは CloudAP が Entra ID に確かめてから新しい PRT に置き換えます。

「PC をずっと使っていれば、ずっとサインインし直さなくてよい」のは、このためです。組織として定期的な再認証を求めたいときは、条件付きアクセスの「サインインの頻度」のセッション制御を使います。

PRT と多要素認証・条件付きアクセス

PRT には、ユーザーと端末についての情報(クレーム)が入っていて、Entra ID は条件付きアクセスの判断にそれを使います。たとえば「準拠したデバイス」や「ハイブリッド参加したデバイス」を条件にするポリシーは、PRT が示す端末の情報で判断されます。

PRT は、次の場合に「多要素認証が済んでいる」というクレームを持ちます。このクレームは、PRT でもらうアプリのトークンにも引き継がれるので、アプリごとに多要素認証を求められずにすみます。

場面動き
Windows Hello for Business でサインインしたHello 自体が多要素認証なので、PRT に多要素認証のクレームが付く。PRT を更新するたびに、そのクレームも更新される
アプリのサインインで多要素認証をしたWAM のサインイン画面で多要素認証をすると、そのとき更新された PRT にクレームが付く。期限はディレクトリの設定に従う

Windows は、サインインに使った資格情報(パスワード、Hello、スマートカード)ごとに PRT を分けて持ちます。そのため、パスワードでサインインしたときの PRT に、Hello でサインインしたときの多要素認証のクレームが混ざることはありません。

PRT が無効になるとき

きっかけ何が起きるか
ユーザーを無効化・削除したPRT でアプリのトークンをもらえなくなる。すでにその PC にサインインしたことがあれば、CloudAP が無効だと気づくまではキャッシュでサインインできる
デバイスを無効化・削除したその端末の PRT が無効になり、すべてのトークンも使えなくなる。サインインはできても SSO はできない
パスワードを変えたパスワードでもらった PRT は無効になる。新しいパスワードでサインインし直すと、新しい PRT をもらう
TPM が故障した鍵を使えないので PRT も使えなくなる。Windows がデバイスの登録をやり直す。ハイブリッド参加は自動、Entra 参加・Entra 登録は端末の管理者の操作が必要

確かめ方:dsregcmd /status

PRT があるかどうかは、dsregcmd /status の「SSO State」で確かめられます。SSO State は、サインインしているユーザーの状態を表示するので、管理者に昇格せず、そのユーザーのままで実行します。

項目意味
AzureAdPrtサインインしているユーザーの PRT があれば YES
AzureAdPrtUpdateTimePRT が最後に更新された時刻(UTC)
AzureAdPrtExpiryTime更新されなかった場合に PRT が切れる時刻(UTC)
EnterprisePrtAD FS から PRT をもらっていれば YES(ハイブリッド参加で AD FS を使う環境)
TpmProtected(Device Details)端末の秘密鍵が TPM で守られていれば YES

AzureAdPrt が NO のときは、まず「Device State」で Entra 参加かハイブリッド参加になっているか、「Device Details」の DeviceAuthStatus が SUCCESS か(デバイスが無効化・削除されていないか)を確かめます。PRT の取得に失敗したときは、SSO State に診断の情報が表示されることがあります。

確認に使うコマンド

PC01(コマンドプロンプト・サインインしたユーザー):参加の状態・PRT・端末の情報を表示する

dsregcmd /status

PC01(コマンドプロンプト・サインインしたユーザー):PRT と TPM に関係する行だけを表示する

dsregcmd /status | findstr /i "AzureAdJoined DomainJoined AzureAdPrt TpmProtected DeviceAuthStatus"

PC01(PowerShell・管理者):TPM があり、使える状態かを表示する

Get-Tpm

まとめ

項目ひとことで
PRTサインインで Entra ID からもらう「親の通行証」。アプリごとのトークンをもらうのに使う
発行資格情報と nonce を端末の鍵で署名して頼む。Entra ID は資格情報・署名・端末を確かめる
セッションキーPRT と一緒に届く鍵。TPM が守り、PRT を使う要求に署名する。PRT をその端末に結び付ける
アプリ・ブラウザWAM が PRT でトークンをもらい、アクセストークンだけをアプリに渡す。ブラウザは署名付きの PRT クッキーを使う
期限90日。使っているあいだは4時間ごとなどに更新され続ける
無効になるときユーザーやデバイスの無効化・削除、パスワードの変更、TPM の故障
確かめ方dsregcmd /status の AzureAdPrt・TpmProtected

PRT は、利用者からはまったく見えませんが、Entra 参加の端末で「サインインし直さなくてよい」体験と、端末を条件にした条件付きアクセスの両方を支えています。そして、その安全性は、端末の鍵とセッションキーを TPM が守ることで成り立っています。

コメント