Azure AD のアクセストークンとリフレッシュトークンの解説

Microsoft Azure Active Directory(Azure AD)は、クラウドベースのアイデンティティおよびアクセス管理サービスです。企業や組織は、Azure ADを利用して、ユーザーやアプリケーションの認証と認可を管理します。その中で、アクセストークリフレッシュトークは、セキュアな認証を行うために重要な役割を果たします。これらのトークンは、アプリケーションやサービスがリソースにアクセスする際に必要です。

この記事では、Azure ADにおけるアクセストークンとリフレッシュトークンについて、仕組みや使い方を詳しく解説します。


アクセストークンとは?

アクセストークン(Access Token)は、ユーザーやアプリケーションがリソースにアクセスするために必要なトークンで、特定のリソースに対する認可情報が含まれています。アクセストークンは、認証が成功した後、Azure ADから発行され、一定期間(通常は短期間)有効です。

アクセストークンの特徴

  • 認証後に発行される: アクセストークンは、Azure ADにユーザーやアプリケーションの認証が成功すると発行されます。
  • 短期間の有効期限: アクセストークンには有効期限があります。通常、有効期限は1時間程度で、期限が切れると再認証やリフレッシュが必要になります。
  • JWT(JSON Web Token)形式: Azure ADが発行するアクセストークンは、JWT形式(JSON Web Token)で構成され、リソースサーバーがトークンを検証できます。

アクセストークンの構造

アクセストークンは、以下の3つの部分で構成されています:

  1. ヘッダー: トークンのタイプ(通常はJWT)や署名アルゴリズムを記載。
  2. ペイロード: ユーザー情報や、アクセスするリソース、権限などが含まれています。
  3. 署名: トークンが改ざんされていないことを証明するための署名です。

アクセストークンの使用例

アクセストークンは、リソースにアクセスする際にHTTPリクエストのAuthorizationヘッダーに含めて送信されます。例えば、Microsoft Graph APIにアクセスする際には、以下のようにリクエストヘッダーにアクセストークンを含めます。

http
GET https://graph.microsoft.com/v1.0/me Authorization: Bearer <Access_Token>

リフレッシュトークンとは?

リフレッシュトークン(Refresh Token)は、アクセストークンの有効期限が切れたときに、新しいアクセストークンを取得するために使用されるトークンです。リフレッシュトークンは、長期間有効であることが一般的です。

リフレッシュトークンの特徴

  • アクセストークンの再取得: アクセストークンが期限切れになった場合、リフレッシュトークンを使用して新しいアクセストークンを取得できます。
  • 長期間有効: 通常、リフレッシュトークンはアクセストークンよりも長期間有効です。これにより、ユーザーが再認証せずに継続的にアプリケーションを使用できるようになります。
  • サーバーに保管: リフレッシュトークンは、アクセストークンと異なり、サーバー側で安全に保管されるべきです。アプリケーションがリフレッシュトークンを持つことで、バックグラウンドでのトークン更新が可能になります。

リフレッシュトークンの使用方法

リフレッシュトークンを使用して新しいアクセストークンを取得するためには、Azure ADのトークンエンドポイントにリフレッシュトークンを送信します。リフレッシュリクエストは、次のように行われます:

http
POST https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token Content-Type: application/x-www-form-urlencoded grant_type=refresh_token&refresh_token=<Refresh_Token>&client_id=<Client_ID>&client_secret=<Client_Secret>&scope=<Scopes>

このリクエストを送信すると、新しいアクセストークンとリフレッシュトークンが返されます。


アクセストークンとリフレッシュトークンの違い

特徴 アクセストーク リフレッシュトーク
用途 リソースにアクセスするための認証情報 アクセストークンを再取得するための認証情報
有効期限 短期間(通常1時間程度) 長期間(数週間~数ヶ月)
発行タイミング ユーザーやアプリケーションの認証後 アクセストークンを再取得する際
保存方法 クライアント側で保存されることが多い サーバー側で安全に保存されるべき
送信方法 HTTPリクエストのヘッダーに含めて送信 サーバーからアクセストークンを再取得するために送信

アクセストークンとリフレッシュトークンを使う場面

アクセストークンとリフレッシュトークンは、主に次のようなケースで利用されます:

1. シングルサインオン(SSO)

シングルサインオンのシナリオでは、一度の認証で複数のサービスにアクセスできるようになります。この際、アクセストークンが各サービスへのアクセスに使われ、リフレッシュトークンはその後の再認証を簡素化する役割を果たします。

2. モバイルアプリケーション

モバイルアプリでは、ユーザーが一度ログインすれば、リフレッシュトークンを使用して長期間アプリにアクセスできるようになります。これにより、ユーザーは頻繁に再認証することなく、アプリを利用し続けることができます。

3. バックエンドでのAPIアクセス

サーバー間でのAPI呼び出しでは、アクセストークンを使ってリソースにアクセスし、アクセストークンが期限切れになると、リフレッシュトークンを使って新しいアクセストークンを取得します。


まとめ

Azure ADのアクセストークリフレッシュトークは、アプリケーションやサービスがリソースにアクセスする際の認証と認可を管理するために重要な役割を果たします。アクセストークンは短期間有効であり、リソースへのアクセスに使用されます。一方、リフレッシュトークンはアクセストークンの再取得を可能にし、ユーザーやアプリケーションの継続的なアクセスをサポートします。

これらを適切に使うことで、セキュアで効率的な認証フローを実現することができ、システムの安全性を保ちながら、ユーザーエクスペリエンスを向上させることができます。