Table of Contents
本記事では、Authlete が提供する 2 種類のイントロスペクション API と、それらの使い分けについて説明します。
トークンのイントロスペクション機能として、Authlete は次の 2 種類の API を提供しています。
以下に概要を示します。
/auth/introspection API は Authlete 独自の API です。リソースサーバー (RS) の「protected resource endpoint (いわゆる Web API)」の実装の中から呼び出されることを想定しています。
RS はリクエストパラメーターとして、アクセストークンに加え、そのトークンにひもづいていることが期待される scope や subject、クライアント証明書、DPoP Proof JWT などを指定し、Authlete にその検証を依頼できます。これにより、RS での実装の手間が低減されます。
/auth/introspection/standard API は認可サーバー (AS) の「RFC 7662 準拠の introspection endpoint」の実装の中から呼び出されることを想定しています。
RS からイントロスペクションリクエストを受信した AS は、その内容をリクエストパラメーターとして Authlete に送信します。Authlete は RFC 7662 に従って処理を行い、イントロスペクションレスポンスの内容を生成し、AS に返却します。
2 種類のイントロスペクション API のどちらを用いるかは、AS / RS / Authlete の各サービスの間をどの程度密結合・疎結合にするかによります。主なユースケースと、各ケースに適した API を、以下に例示します。
RS が Authlete のサービスアクセストークンを保有できる場合には、それを用いて RS 自身が Authlete の /auth/introspection API を呼び出すのが最もシンプルです。なお Authlete バージョン 3.0.31 以降では、カスタムサービストークン機能を利用し、RS が保有するサービスアクセストークンの権限をイントロスペクションのみに限定できます。
API ゲートウェイが、AS のエンドポイントの一部(トークンエンドポイントなど)とRS の API エンドポイントの両方を扱う場合には、その API ゲートウェイは必然的に Authlete のサービスアクセストークンを保有することになります。
よって前述のケースと同様に、/auth/introspection API を用いるのが最もシンプルな構成となります。
RS から Authlete への通信をしない・避けたい、あるいは AS と RS とを完全に分離したい場合には、AS が RFC 7662 準拠のイントロスペクション API を RS に提供し、AS が Authlete の /auth/introspection/standard API を呼び出すようにすると良いでしょう。