Authlete 以外のシステムが発行したアクセストークンの移行

概要


既存の認可サーバーシステム(旧システム)を Authlete に移行する場合、旧システムが過去に発行したアクセストークンをどのように取り扱うかを検討する必要があります。

もしリソースサーバーが、旧システムが発行したか、Authlete が発行したかによらず、クライアントから受け取ったアクセストークンの検証(イントロスペクション)を全て Authlete に依頼するのであれば、Authlete は旧システムのアクセストークンの情報も管理しなくてはなりません。

本記事では、Authlete 以外が発行したアクセストークン情報を Authlete に移行する方法を紹介します。

移行方法


Authlete のトークン管理 API のひとつである /auth/token/create API を用います。この API によって認可サーバーは、クライアントからの認可リクエストやトークンリクエストなしに、任意のトークンを Authlete に生成・格納させることが可能となります。API の引数は以下をご参照ください。


この引数の中でも、オプショナルパラメーターのひとつである accessToken にご注目ください。このパラメーターに文字列が指定されている場合、Authlete はそれをアクセストークンの値として用います(Authlete の内部的には、この値のハッシュ値をデータベースに保存します)。

つまり、この API を用いてトークンを生成する際に、旧システムの発行したアクセストークンの値を accessToken の引数とすることにより、トークンの移行が行えることになります。

大量のアクセストークンを移行する場合


大量に存在するアクセストークンの移行に際しては、旧システムからダンプしたアクセストークン情報を Authlete のトークン形式に変換し、Authlete のトークンデータベースに投入する方法が適している場合があります。詳細は弊社サポートにお問い合わせください。

参考情報


  • OAuth 2.0 / OIDC 実装の新アーキテクチャー
    • 7.2.1. /api/auth/token/create API
      • パラメーター名: accessToken
        要否: 任意
        説明: 通常、アクセストークンの値は Authlete が自動生成するが(256 ビットのランダム値を base64url で表現したもので 43 文字)、他のシステムで過去に発行されたアクセストークンをそのまま利用したい場合等、アクセストークンの値を指定したい場合にこのリクエストパラメーターを用いる。 Authlete のデータベースはアクセストークンの値そのものは保存せず、ハッシュ値を保存しているので、アクセストークンの値がなんであれ、データベース上は固定長となる。 そのため、このリクエストパラメーターに指定するアクセストークンの値の自由度は高いが、そのかわりに、アクセストークンの値が重複しないよう API 呼び出し側で配慮する必要がある(同じアクセストークンの値が来た場合は Authlete 側で拒否はする)。
How did we do with this article?