Microsoft ID プラットフォームでの構成可能なトークンの有効期間 (プレビュー)

Microsoft ID プラットフォームによって発行されるアクセス、ID、または SAML トークンの有効期間を指定できます。 組織のすべてのアプリ、マルチテナント (複数の組織) アプリケーション、または組織の特定のサービス プリンシパルに対して、トークンの有効期間を設定できます。 ただし、現時点では、マネージド ID サービス プリンシパルのトークン有効期間の構成はサポートされていません。

Azure AD では、ポリシー オブジェクトは、組織の個々のアプリケーションまたはすべてのアプリケーションに適用される規則のセットを表します。 それぞれのポリシーの種類は、割り当てられているオブジェクトに適用されるプロパティのセットを含む一意の構造体を持ちます。

組織の既定のポリシーとして、ポリシーを指定できます。 ポリシーは、優先度が高いポリシーによってオーバーライドされない限り、組織内のすべてのアプリケーションに適用されます。 ポリシーを特定のアプリケーションに割り当てることもできます。 優先順位の順序は、ポリシーの種類によって異なります。

例については、トークンの有効期間の構成方法の例をご覧ください。

注意

構成可能なトークン 有効期間 ポリシーは、SharePoint Online リソースと OneDrive for Business リソースにアクセスするモバイル クライアントとデスクトップ クライアントにのみ適用され、Web ブラウザー セッションには適用されません。 SharePoint Online と OneDrive for Business の Web ブラウザー セッションの有効期間を管理するには、条件付きアクセス セッション ライフタイム機能を使用します。 アイドル状態のセッションのタイムアウトの構成に関する詳細については、SharePoint Online のブログを参照してください。

ライセンスの要件

この機能を使用するには、Azure AD Premium P1 ライセンスが必要です。 ご自分の要件に対して適切なライセンスを探すには、一般公開されている Free および Premium エディションの機能比較に関するページをご覧ください。

Microsoft 365 Business ライセンスをお持ちのお客様も、条件付きアクセス機能にアクセスできます。

アクセス トークン、SAML トークン、および ID トークンのトークン有効期間ポリシー

アクセス トークン、SAML トークン、および ID トークンにトークン有効期間ポリシーを設定できます。

アクセス トークン

クライアントは保護されたリソースにアクセスするためにアクセス トークンを使用します。 アクセス トークンは、ユーザー、クライアント、およびリソースの特定の組み合わせに対してのみ使用できます。 アクセス トークンは取り消すことはできず、有効期限まで有効です。 悪意のあるアクターがアクセス トークンを取得した場合は、その有効期間にわたって使用される可能性があります。 アクセス トークンの有効期間の調整は、システム パフォーマンスの向上と、ユーザーのアカウントが無効になった後にクライアントがアクセスを保持する時間の増加との間で、トレードオフとなります。 システム パフォーマンスの向上は、クライアントが新しいアクセス トークンを取得しなければならない回数を減らすことで実現されます。

アクセス トークンの既定の有効期間は、変数です。 発行されると、アクセス トークンの既定の有効期間には、60 分から 90 分 (平均 75 分) の範囲のランダムな値が割り当てられます。 既定の有効期間は、トークンを要求しているクライアント アプリケーションや、テナントで条件付きアクセスが有効になっているかどうかによって異なります。 詳細については、「アクセス トークンの有効期間」を参照してください。

SAML トークン

SAML トークンは、多くのWeb ベースの SaaS アプリケーションで使用され、Azure Active Directory の SAML2 プロトコル エンドポイントを使用して取得されます。 また、WS-Federation を使用するアプリケーションでも使用されます。 トークンの既定の有効期間は 1 時間です。 アプリケーションの観点からは、トークンの有効期間は、そのトークン内の <conditions …> 要素の NotOnOrAfter 値によって指定されます。 トークンの有効期間が終了したら、クライアントは新しい認証要求を開始する必要があります。これは多くの場合、シングル サインオン (SSO) セッション トークンの結果として、対話型サインインなしで満たされます。

NotOnOrAfter の値は、TokenLifetimePolicy 内の AccessTokenLifetime パラメーターを使用して変更できます。 この値は、ポリシーで構成されている有効期間に設定され (構成されている場合)、クロック スキュー係数が 5 分になります。

<SubjectConfirmationData> 要素で指定されているサブジェクト確認 NotOnOrAfter は、トークンの有効期間の構成には影響されません。

ID トークン

ID トークンは、Web サイトとネイティブ クライアントに渡されます。 ID トークンは、ユーザーに関するプロファイル情報を格納します。 ID トークンは、ユーザーとクライアントの特定の組み合わせにバインドされます。 ID トークンは、それらの有効期限まで有効とみなされます。 通常、Web アプリケーションは、アプリケーションにおけるユーザーのセッションの有効期間と、ユーザーに対して発行された ID トークンの有効期間を照合します。 ID トークンの有効期間を調整して、Web アプリケーションでアプリケーション セッションが期限切れになる頻度、および Microsoft ID プラットフォームでユーザーの再認証 (自動または対話形式) が要求される頻度を制御できます。

更新トークンとセッション トークンのトークン有効期間ポリシー

更新トークンとセッション トークンに対してトークン有効期間ポリシーを設定することはできません。 更新トークンの有効期間、タイムアウト、および失効情報については、「Refresh tokens (更新トークン)」を参照してください。

重要

2021 年 1 月 30 日の時点で、更新およびセッション トークンの有効期間は構成できません。 Azure Active Directory では、既存のポリシーの更新およびセッション トークンの構成が考慮されなくなくなりました。 既存のトークンの有効期限が切れた後に発行される新しいトークンは、既定の構成に設定されるようになりました。 更新およびセッション トークンの構成の廃止後も、アクセス、SAML、ID の各トークンの有効期間を構成することはできます。

既存のトークンの有効期間は変更されません。 有効期限が切れると、既定値に基づいて新しいトークンが発行されます。

ユーザーが再度サインインするように求められるまでの時間を定義し続ける必要がある場合は、条件付きアクセスでサインインの頻度を構成します。 条件付きアクセスの詳細については、「条件付きアクセスを使用して認証セッション管理を構成する」をお読みください。

構成可能なトークンの有効期間のプロパティ

トークンの有効期間ポリシーとは、トークンの有効期間の規則が含まれる一種のポリシー オブジェクトです。 このポリシーは、このリソースのアクセス トークン、SAML トークン、および ID トークンが有効とみなされる期間を制御します。 更新トークンとセッション トークンに対して有効期間ポリシーを設定することはできません。 ポリシーが設定されていない場合は、既定の有効期間の値が適用されます。

アクセス、ID、および SAML2 トークンの有効期間ポリシーのプロパティ

Access Token Lifetime プロパティを減らすと、悪意のあるアクターによって、長時間にわたってアクセス トークンや ID トークンが使用されるリスクが軽減します (これらのトークンは取り消しできません)。このトレードオフは、トークンを頻繁に交換する必要があるため、パフォーマンスが影響を受けることです。

例については、「Web サインインのポリシーを作成する」を参照してください。

アクセス、ID、SAML2 トークンの構成は、次のプロパティとそれぞれの設定値の影響を受けます。

  • プロパティ: アクセス トークンの有効期間
  • ポリシーのプロパティ文字列: AccessTokenLifetime
  • 影響: アクセス トークン、ID トークン、SAML2 トークン
  • 既定:
    • アクセス トークン: トークンを要求するクライアント アプリケーションによって異なります。 たとえば、継続的アクセス評価 (CAE) 対応のセッションをネゴシエートする CAE 対応クライアントには、有効期間が長いトークン (最大 28 時間) が表示されます。
    • ID トークン、SAML2 トークン: 1 時間
  • 最小: 10 分
  • 最大: 1 日

更新トークンとセッション トークンの有効期間ポリシーのプロパティ

更新とセッション トークンの構成は、次のプロパティとそれぞれの設定値の影響を受けます。 2021 年 1 月 30 日に更新トークンとセッション トークンの構成が廃止された後、Azure AD では、以下に説明する既定値のみを受け入れます。 廃止後に、サインイン頻度を管理するための条件付きアクセスを使用しない場合、更新トークンとセッション トークンは廃止日の既定の構成に設定され、有効期間を変更することはできなくなります。

プロパティ ポリシーのプロパティ文字列 影響 既定値
更新トークンの最大非アクティブ時間 MaxInactiveTime 更新トークン 90 日間
単一要素更新トークンの最長有効期間 MaxAgeSingleFactor 更新トークン (すべてのユーザー向け) Until-revoked
多要素更新トークンの最長有効期間 MaxAgeMultiFactor 更新トークン (すべてのユーザー向け) Until-revoked
単一要素セッション トークンの最長有効期間 MaxAgeSessionSingleFactor セッション トークン (永続的および非永続的) Until-revoked
多要素セッション トークンの最長有効期間 MaxAgeSessionMultiFactor セッション トークン (永続的および非永続的) Until-revoked

非永続的なセッション トークンの最大非アクティブ時間は 24 時間です。それに対し、永続的なセッション トークンの最大非アクティブ時間は 90 日です。 有効期間内に SSO セッション トークンを使用した時点で、有効期間はさらに 24 時間または 90 日間延長されます。 SSO セッション トークンがその最大非アクティブ時間の期間内に使用されない場合は、期限切れとみなされ、受け入れられなくなります。 この既定の期間に対する変更は、条件付きアクセスを使用して行う必要があります。

PowerShell を使用すると、廃止の影響を受けるポリシーを特定できます。 PowerShell コマンドレットを使用すると、組織で作成されたすべてのポリシーを確認したり、特定のポリシーにリンクされているアプリとサービス プリンシパルを検索したりできます。

ポリシーの評価と優先順位付け

トークン有効期間ポリシーを作成して、特定のアプリケーション、組織、およびサービス プリンシパルに割り当てることができます。 複数のポリシーを、特定のアプリケーションに適用できます。 有効なトークン有効期間ポリシーは、次の規則に従います。

  • ポリシーが明示的にサービス プリンシパルに割り当てられている場合は、そのポリシーが適用されます。
  • 明示的にサービス プリンシパルに割り当てられているポリシーがない場合は、サービス プリンシパルの親組織に明示的に割り当てられているポリシーが適用されます。
  • サービス プリンシパルまたは組織に明示的に割り当てられているポリシーがない場合、アプリケーションに割り当てられているポリシーが適用されます。
  • サービス プリンシパル、組織、またはアプリケーション オブジェクトに割り当てられているポリシーがない場合は、既定値が適用されます。 (構成可能なトークンの有効期間のプロパティの表を参照してください)。

アプリケーション オブジェクトとサービス プリンシパル オブジェクトの関係の詳細については、「Azure Active Directory のアプリケーション オブジェクトとサービス プリンシパル オブジェクト」を参照してください。

トークンの有効性は、トークンの使用時に評価されます。 アクセスされているアプリケーションに対して、最も優先度が高いポリシーが有効になります。

ここで使用されるすべての時間帯は、C# TimeSpan オブジェクト (D.HH:MM:SS) 形式に従って書式設定されます。 つまり、80 日と 30 分は 80.00:30:00 になります。 0 の場合、先頭の D を削除することができますので 90 分は 00:90:00 になります。

コマンドレット リファレンス

これらは、Azure Active Directory PowerShell for Graph Preview モジュールのコマンドレットです。

ポリシーの管理

次のコマンドレットを使用して、ポリシーを管理することができます。

コマンドレット 説明
New-AzureADPolicy 新しいポリシーを作成します。
Get-AzureADPolicy すべての AzureAD ポリシーまたは指定されたポリシーを取得します。
Get AzureADPolicyAppliedObject ポリシーにリンクされたすべてのアプリとサービス プリンシパルを取得します。
Set-AzureADPolicy 既存のポリシーを更新します。
Remove-AzureADPolicy 指定したポリシーを削除します。

アプリケーション ポリシー

アプリケーション ポリシーには次のコマンドレットを使用できます。

コマンドレット 説明
Add-AzureADApplicationPolicy 指定したポリシーをアプリケーションにリンクします。
Get-AzureADApplicationPolicy アプリケーションに割り当てられているポリシーを取得します。
Remove-AzureADApplicationPolicy アプリケーションからポリシーを削除します。

サービス プリンシパル ポリシー

サービス プリンシパル ポリシーには次のコマンドレットを使用できます。

コマンドレット 説明
Add-AzureADServicePrincipalPolicy 指定したポリシーをサービス プリンシパルにリンクします。
Get-AzureADServicePrincipalPolicy 指定したサービス プリンシパルにリンクされている任意のポリシーを取得します。
Remove-AzureADServicePrincipalPolicy 指定したサービス プリンシパルからポリシーを削除します。

次のステップ

詳細については、トークンの有効期間の構成方法の例をご覧ください。