メインコンテンツへスキップ
ほとんどの Core API のレスポンスには action フィールドが含まれます。Authlete を用いた認可サーバー実装の原則はシンプルです。Core API を呼び出し、レスポンスをパースし、action の値を確認して、その値に応じた処理を行います。
resultCode の値を処理の分岐条件に使ってはいけません
アクションのセットは Core API ごとに定義されていますが、その値は 2 つのパターンに分かれます。クライアントへの HTTP レスポンスに直接対応するアクションと、2 つ目の Authlete API 呼び出しが必要なアクションです。 このページでは /auth/authorization API のアクションを例にモデルの動作を説明し、続いて他の Core API で登場する代表的なアクションを紹介します。このページに挙げるのは代表例であり網羅的なリストではないため、呼び出す API の API リファレンスを必ず確認してください。

/auth/authorization のアクション

/auth/authorization API のレスポンスの action フィールドには、次のいずれかの値が含まれます。
アクション意味サーバーが行うこと(例)
INTERACTION認可リクエストは有効で、ユーザーとの対話が必要です。2 回目の API 呼び出しに進みます。2 段階の API 呼び出しを参照してください。
NO_INTERACTIONリクエストは有効で、ユーザーとの対話は不要です(prompt=none など)。2 回目の API 呼び出しに進みます。2 段階の API 呼び出しを参照してください。
LOCATIONリダイレクトレスポンスを返すべき状態です。responseContentLocation ヘッダーとして 302 Found を返します。
FORMフォーム POST レスポンスを返すべき状態です。responseContent(HTML フォーム)をボディとして 200 OK を返します。
BAD_REQUEST認可リクエストが不正です。responseContent をボディとして 400 Bad Request を返します。
INTERNAL_SERVER_ERRORAuthlete 側でエラーが発生したか、Authlete へのリクエストが不正です。responseContent をボディとして 500 Internal Server Error を返します。
レスポンスには action のほかに、クライアントの表示情報や要求されたスコープ・クレームなど、認可サーバーが認証・同意画面を組み立てるために必要な情報も含まれます。レスポンスの完全なスキーマは API リファレンスを参照してください。

アクションと HTTP レスポンスの対応

多くのアクションは、クライアントへ返す 1 つの HTTP レスポンスに直接対応します。認可サーバーは responseContent をそのレスポンスの本体やヘッダーに使います。 たとえば、Authlete Core API からの応答の actionBAD_REQUEST の場合、認可サーバーは次のようなレスポンスをクライアントに返します。
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache

(responseContent)
actionLOCATION の場合は次のとおりです。
HTTP/1.1 302 Found
Location: (responseContent)
Cache-Control: no-store
Pragma: no-cache

追加のステップが必要なアクション

INTERACTIONNO_INTERACTION、そして PASSWORDTOKEN_EXCHANGEJWT_BEARER のようなグラント処理系のアクションは、1 つの HTTP レスポンスを返すだけでは処理を完了できません。ユーザーの認証や同意の取得などサーバー自身の処理を行ったうえで、2 つ目の Authlete API を呼び出して処理を完了する必要があります。このパターンは2 段階の API 呼び出しで説明します。

他の API の代表的なアクション

他の Core API も、それぞれ固有のアクションセットで同じ規約に従います。次に挙げるのは代表的なアクションであり、網羅的なリストではありません。
アクションAPI の例サーバーが行うこと(例)
OK/auth/introspection/auth/userinfo ほか多数リクエストの処理に成功しました。通常は responseContent200 OK で返すか、次の処理に進みます(/auth/userinfo の場合はクレーム値を収集して /auth/userinfo/issue を呼び出します)。
CREATED/client/registrationリソースが作成されました(ダイナミッククライアント登録など)。responseContent201 Created で返します。
UNAUTHORIZED/auth/userinfo/auth/introspection提示されたトークンが不正です。responseContentWWW-Authenticate ヘッダーとして 401 Unauthorized を返します。
INVALID_CLIENT/auth/token/auth/revocationクライアント認証に失敗しました。API リファレンスの記載に従い 400 または 401 を返します。
FORBIDDEN/auth/introspection/auth/userinfoアクセストークンは有効ですが、要求されたリソースに必要なスコープ(やリソース)を持っていません。403 Forbidden を返します。
NOT_FOUND/gm対象リソースが存在しません(例:Grant Management リクエストで指定された grant_id が存在しない場合)。404 Not Found を返します。
PASSWORDTOKEN_EXCHANGEJWT_BEARER/auth/tokenトークン発行の判断の前に、サーバー自身による検証(ユーザークレデンシャル、subject token、assertion)が必要です。2 段階の API 呼び出しを参照してください。
新しい世代の API(/vci/*/gm など)では、エラーの発生箇所を区別します。CALLER_ERROR は実装側のリクエスト誤りを、AUTHLETE_ERROR は Authlete 内部のエラーを意味します。