はじめに
WebサービスなどのITに携わっている方であれば、「アクセストークン」という言葉を聞いたことがある方も少なくないかと思います。
また、「アクセストークンって何?」という方もいるかと思います。
そこで、今回は、「アクセストークン」について色々と説明したいと思います。
「アクセストークン」とは?
「アクセストークン(Access Token)」は、一言でいうと、
Webサービスを利用するために、認証局がユーザーを認証するために払い出した認証情報
です。
ここで言う認証局とはユーザーを認証する情報を保持しており、ユーザーを認証することができるWebサーバーで、Webサービスを提供しているWebサーバー、または、ユーザーを認証することができる第三者のWebサーバーなどを示します。
「アクセストークン」の払い出しと認証の概要!
通常、ユーザー認証が必要なWebサービスを利用する場合、メールアドレスなどのログインIDとパスワードを入力し、Webサービスを利用します。
この際、一度入力したメールアドレスなどのログインIDやパスワードを各認証ページに引き継ぐこと、つまり、アクセスの度にログインIDやパスワードを通信させ使用することは、セキュリティの観点からは危険なため、認証局は初回ログイン以降にユーザーを認証するための、「アクセストークン」を払い出し、初回ログイン以降は、払い出した「アクセストークン」でユーザーを認証することになります。
これが、「アクセストークン認証」です。
「アクセストークン」は認証局(Webサービス)により様々ですが、通常は、ユニークなランダムな英数字をそれなりの長さ(16桁、32桁、64桁など)で払い出すのが一般的です。
例えば
zf14dffq3fg46ghg7dip1ash74ioisud
のようなユニークなランダムな英数字が「アクセストークン」として払い出され、ユーザーと関連付けられます。
また、払いだされた「アクセストークン」は、初回ログイン以降のアクセスにおいて、Webサーバーでアクセス毎に認証する必要があるため、Cookie(クッキー)やセション、html内のhidden項目などに保持しておく必要があります。
「アクセストークン」の有効期限!
Webサーバーで「アクセストークン」を認証する際に、「アクセストークン」には有効期限を設定することが一般的です。
よく、会員ページなどにログインした後に、数時間操作しないでいると、勝手にログアウトされるようなケースがあると思いますが、簡単に言うと、「アクセストークン」の有効期限が過ぎていることにより、再ログインを求められることが多々あるのはそのためです。
具体的な「アクセストークン」の払い出しと認証の流れ!
以下に、具体的な「アクセストークン」の払い出しと認証の流れの例を説明します。
※この例では、会員(ユーザー)が認証が必要な会員ページにログインし、会員情報変更ページなどにアクセスする際の例です。
1.Webサービスのログインページ(ユーザー認証ページ)にユーザーがアクセスする。(ユーザー)
↓
2.Webサービス側(Webサーバー)は、ログインページ(ユーザー認証ページ)をユーザーに返却(表示)する。(認証局)
↓
3.ユーザーは、メールアドレスなどのログインIDやパスワードをログインページ(ユーザー認証ページ)に入力する。(ユーザー)
↓
4.ユーザーは、ログインページ(ユーザー認証ページ)のログインボタンを押下し、Webサービス側(Webサーバー)に認証を依頼する。(ユーザー)
↓
5.Webサービス側(Webサーバー)は、送られてきたログインIDやパスワードを認証し、認証OKの場合は「アクセストークン」を発行およびCookie(クッキー)やセション、html内のhidden項目などに保持し、結果(会員メニューやマイページなど)をユーザーに返却する。(認証局)
※認証NGの場合は、ユーザーにエラー画面返却を(表示)する。(認証局)
↓
6.ユーザー認証後、ユーザーは、認証が必要なページ(会員情報変更ページなど)にアクセスする。(ユーザー)
↓
7.ユーザーが認証が必要なページにアクセスした際に、「アクセストークン」がWebサービス側(Webサーバー)に送信され、Webサービス側(Webサーバー)は送られてきた「アクセストークン」を認証する。また、必要に応じて「アクセストークン」の有効期限を更新する。(認証局)
※Webサービス側(Webサーバー)は送られてきた「アクセストークン」が不正(有効期限切れ、改ざんなど)の場合は、ユーザーにエラー画面返却を(表示)する。(認証局)
以上のように、初回ログイン以降のユーザー認証が必要なアクセスは、全て「アクセストークン」で認証する流れとなります。
ご参考!
補足ですが、先で、ユーザーを認証することができる第三者のWebサーバーによる認証もある旨を述べていますが、例えば、Webサービス側の認証情報ではなく、全く違う第三者の認証情報でユーザーを認証するということを言っています。
具体的には、最近多いのは、第三者であるGoogle、Twitter、Facebookなどのアカウント情報でユーザーを認証するWebサービスです。
よく、Google、Twitter、Facebookなどのサービスではないのに、Google、Twitter、Facebookなどのアカウント情報で認証すると使用できるWebサービスは多々あり、最近、日に日に増えてきています。
※ポケモンGOなどがいい例で、ポケモンGOはNianticがサービスを提供していますが、ユーザー認証はGoogleアカウントでの認証となっていますよね!
最後に
今回、「アクセストークン」について色々と説明しましたが、世の中にある様々なWebサービスにおいて「アクセストークン」は、我々の目には見えないところで使用されています。