WebEntity: verify()
クライアントから送信されたリクエストを検証します。
この関数は非同期関数です。
構文
webEntity.verify({ method, path, body, headers, query }) => Promise<object>
引数
-
request:objectクライアントから送信されたリクエストの内容を表すオブジェクトです。
-
method:"GET"|"HEAD"|"POST"|"PUT"|"DELETE"|"OPTIONS"|"PATCH"リクエストされた HTTP メソッド名です。
-
path:stringリクエストされたパスです。
-
body:string|Buffer|{ [key: string]: string | Uint8Array }リクエストのボディです。
-
headers:{ [header_name: string]: object }リクエストのヘッダをまとめたオブジェクトです。各プロパティは次のようになっています:
-
headers[header_name: string]:{ value: string, params: ({ [param_name: string]: string })? }[]リクエストのあるヘッダ名
header_nameのヘッダ情報を表すオブジェクトです。ヘッダの構文はヘッダ毎に異なりますが、同名のヘッダ行を複数行定義したり、単一のヘッダ行で複数の値を持つことがあります。そのため、各ヘッダ名に対してそのヘッダの値を表すオブジェクトの配列が対応付けられています。
ヘッダに副次的なパラメタがあれば
paramsに設定されます。なければparamsはnullです。
-
-
query:{ [param_name: string]: any }リクエストのクエリパラメタです。
-
返値: Promise<object>
リクエストの検証結果を表すオブジェクトです。
オブジェクトの内容は認証結果および認証スキームに依存し、それぞれ異なる型のオブジェクトが返却される可能性があります。Promise が内包する値は以下のいずれかのプロパティを持ちます:
Promise<({ ok })>Promise<({ ok, scheme, status, reason })>
各プロパティは次の意味を持ちます:
-
ok:booleanWeb 認証に成功したかどうかです。
trueなら Web 認証に成功したことを表し、falseは認証に失敗したことを表します。 -
scheme:stringWeb 認証に「失敗した」プロトコルのスキーム名です。
-
status:number?Web 認証に「失敗した」ことを通知する HTTP ステータスコードです。通常は以下のいずれかが設定されます:
400 Bad Request401 Unauthorized403 Forbidden
-
reason:({ [param_name: string]: string | number | boolean | null })?「失敗した」Web 認証の詳細を記述したオブジェクトです。
詳細は認証スキームによって異なるが、例えば Bearer スキームであれば
reasonは以下のプロパティを持ちます:-
error:stringエラーコードを表す文字列です。
IETF RFC 6750, 3.1 によれば、以下のいずれかの値が設定されます:
"invalid_request"400 Bad Request に相当する。"invalid_token"401 Unauthorized に相当する。"insufficient_scope"403 Forbidden に相当する。
-
error_description:string人間可読な認証エラーの説明。
-
scheme、status、reason は認証失敗時のみ設定されるプロパティです。ok が false であっても必ずしも scheme などの他のプロパティが設定されるとは限りません。
例えばリクエストが Authorization ヘッダを持たなかった場合や Authorization ヘッダが指定するスキームを、対象の WebEntity が提供していなかった場合などでは scheme は設定されません。
また status と reason は特定のスキームの検証失敗に対して与えられるプロパティであり、これらのプロパティが設定されている際には常に scheme プロパティも設定されているはずです。
解説
リクエストの Authorization ヘッダの値を検証し、対応するスキームの認証プロトコルが提供されていれば、そのプロトコルが実装する AbstractAuthProtocol::verify() を呼び出します。
返値には対象の AbstractAuthProtocol::verify() の返値が使用されます。
もし対象の WebEntity が認証プロトコルを要求しない場合、この関数は常に Promise<({ ok: true })> を返します。
もしリクエストが Authorization ヘッダを持たなかった場合、この関数は常に Promise<({ ok: false })> を返します。
もしリクエストの Authorization ヘッダが指示する認証スキームを対象の WebEntity が提供していなかった場合、この関数は常に Promise<({ ok: false })> を返します。