メインコンテンツまでスキップ
バージョン: 0.14.0 (以前)

✅ Location validators

Location ミューテーションルートは2つの共有認証バリデーターファクトリーを順にcomposeします;公開の読み取りリストルートはどちらもcomposeしません。それらの完全な呼び出しは各保護されたLocation ルートソースにあります。

インベントリ​

バリデーター読む値成功条件失敗/エラー消費者
isAuthenticated()context.authenticate (デフォルト getBearerTokenInfo)選択されたアダプターがアクセストークンを解決する。Location サービスアダプターは 401 で失敗します;カスタムアダプターは独自のエラーをスローする可能性があります。createLocationRoute、updateLocationRoute、deleteLocationRoute
checkIdentityType(['admin'])context.authenticate、context.db.identities、context.configuration?.identity?.typeIds有効なユーザーアクセストークンのアイデンティティ typeId が設定された admin と一致する。500 セットアップ、401 トークン、403 アイデンティティ/タイプ/アクセス。createLocationRoute、updateLocationRoute、deleteLocationRoute

詳細​

isAuthenticated()​

実装

シグネチャ: isAuthenticated(): Validator。返されたバリデーターは createLocationRoute、updateLocationRoute、および deleteLocationRoute によって最初に呼び出されます。返されたバリデーターは payload.context.authenticate を読み、デフォルトで getBearerTokenInfo にフォールバックし、完全なペイロードでそれを呼び出します。直接データベースまたはアイデンティティタイプのチェックはありません;標準の共有バリデーター契約を参照してください。

locationService は authMode が省略されているか 'bearer' の場合 getBearerTokenInfo を提供し、'cookie' の場合のみ getCookieTokenInfo を提供します。Bearer アダプターはリクエストの Authorization ヘッダーを読み取ります;cookie モードは request.cookies.accessToken を読み取り、ホストミドルウェアが cookies を埋めることを要求します。両方のアダプターは設定された認証シークレットに対してアクセストークンを検証し、ユーザーアクセストークンではフィンガープリントの一致を常に確認します。既定の IP チェックは、IP が一致せずユーザーエージェントも異なる場合にのみ拒否します。リクエストのホストは読み取りますが比較しません。無効なトークンパスは 401 をスローします;カスタムの context.authenticate 実装はその独自のエラーを表示する可能性があります。公開の getLocationRoute および findLocationsRoute はこのファクトリーをcomposeしません。

消費者: createLocationRoute、updateLocationRoute、および deleteLocationRoute。

checkIdentityType(['admin'])​

実装

シグネチャ: checkIdentityType(['admin']): Validator。標準の checkIdentityType のファクトリー呼び出しで、createLocationRoute、updateLocationRoute、および deleteLocationRoute で2番目に呼び出されます。返されたバリデーターはまず payload.context.db.identities を読み取ります;欠落している場合、NodeblocksError(500, 'db.identities is not set') をスローします。次に payload.context.configuration?.identity?.typeIds を読み取ります;欠落している場合、NodeblocksError(500, 'configuration.identity.typeIds is not set') をスローします。これらのセットアップチェックはトークン認証の前に発生します。

セットアップ後、isAuthenticated() がすでに実行したにもかかわらず、トークンを2回目に再度呼び出します。トークンは isValidUserAccessToken を満たす必要があります;最初のバリデーターを通過したアプリアクセストークンはここで 401 Invalid token で拒否されます。getIdentityById を使用してトークンの identityId を db.identities から読み取り、次に設定された ['admin'] 許可リストに対してアイデンティティの typeId を configuration.identity.typeIds.admin と比較します。アイデンティティルックアップエラーは 403 Failed to fetch identity になり、欠落した typeId は 403 Invalid identity type ID になり、管理者でないタイプは 403 Identity is not authorized to access this resource になります。公開の getLocationRoute および findLocationsRoute はこのファクトリーをcomposeしません。

消費者: createLocationRoute、updateLocationRoute、および deleteLocationRoute。