Skip to main content
Version: 🚧 Canary

✅ Location validators

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

インベントリ

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

詳細

isAuthenticated()

実装

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

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

消費者: createLocationRouteupdateLocationRoute、および deleteLocationRoute

checkIdentityType(['admin'])

実装

シグネチャ: checkIdentityType(['admin']): Validator。標準の checkIdentityType のファクトリー呼び出しで、createLocationRouteupdateLocationRoute、および 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 を使用してトークンの identityIddb.identities から読み取り、次に設定された ['admin'] 許可リストに対してアイデンティティの typeIdconfiguration.identity.typeIds.admin と比較します。アイデンティティルックアップエラーは 403 Failed to fetch identity になり、欠落した typeId403 Invalid identity type ID になり、管理者でないタイプは 403 Identity is not authorized to access this resource になります。公開の getLocationRoute および findLocationsRoute はこのファクトリーをcomposeしません。

消費者: createLocationRouteupdateLocationRoute、および deleteLocationRoute