API リソース
API リソース、別名 リソースインジケーター は、リクエストされるターゲットサービスまたはリソースを示します。通常、リソースのアイデンティティを表す URI 形式の変数です。これは Logto の認可 (Authorization) システムにおける重要な概念であり、認可ポリシーが保護するために設計されたエンドポイントを定義します。
リソースインジケーター
- リソース値は、アクセスが要求されているターゲットサービスまたはリソースを示します。
- その値は絶対 URI でなければなりません。
- URI はフラグメントコンポーネントを含んではなりません。
- クエリコンポーネントを含むべきではありません。
- アクセスしようとする完全な API またはリソースセットに対して、可能な限り具体的な URI を提供するべきです。
実際には、クライアントは対話するアプリケーションまたはリソースのベース URI を知っているかもしれません。それをリソースパラメーターの値として使用するのが適切です。
例:Logto Management API のベース URI。
https://tenantId.logto.app/api
デフォルトでは、この API リソースは Logto サービスに事前登録されています。この URI の下にあるすべての Management API は Logto によって保護されています。
Logto API リソーススキーマ
プロパティ名 | プロパティの説明 | 必須 |
---|---|---|
API 名 | API リソースを識別するのに役立つユーザーフレンドリーな名前。 | true |
API 識別子 | 上記の制限付きの一意の API リソースインジケーター 値。 | |
Logto はこれを使用して要求された API リソースを識別し、認可トークンを適切に付与します。 | true | |
トークンの有効期限(秒単位) | アクセス トークン の有効期限を設定します。デフォルトの有効期限は 3600 です。 | false |
デフォルト API | テナントごとにゼロまたは 1 つのデフォルト API のみを設定できます。 | |
デフォルト API が指定されると、認証リクエストでリソースパラメーターを省略できます。後続のトークン交換では、その API がデフォルトでオーディエンスとして使用され、JWT が発行されます。 | false |
期限切れの アクセス トークン
を持つリクエストは制限されるべきです。これは、乱用されたトークンから API を保護するために実装されています。設定された値が大きいほど、発行された アクセス トークン
は長く生存し、API はより脆弱になります。
デフォルト API
この機能は、主に OIDC リソースインジケーターをサポートしていないアプリケーション、例:ChatGPT プラグイン向けに意図されています。
Logto は RFC 8707: OAuth 2.0 のリソースインジケーター を活用してロールベースのアクセス制御 (RBAC) を実装しています。これは OAuth 2.0 の機能の一つですが、まだ広くサポートされていません。
Logto の実装では、ユーザー定義の権限 (スコープ) はすべて API リソースに関連付けられている必要があります。そうでない場合、OpenID Connect (または OAuth) 権限として扱われます。一般的に、これは認可プロセスに影響を与えません。しかし、RFC 8707 をサポートしていないサードパーティアプリと統合する際には、初期の認可リクエストに resource
パラメーターが含まれていないため、問題が生じる可能性があります。その結果、Logto は常に不透明なアクセス トークンを発行します。
この問題に対処するために、API リソースをテナントレベルのデフォルトリソースとして指定できます。一度設定されると:
- Logto は、認証リクエスト に
resource
パラメーターが存在しない場合、デフォルトの API リソースを使用します。 openid
スコープが含まれている場合、後続の トークンリクエスト にresource
パラメーターが存在しない場合、ユーザー情報エンドポイント のための不透明なアクセス トークンが発行されます。openid
スコープが含まれていない場合、後続の トークンリクエスト にresource
パラメーターが存在しない場合、デフォルトの API リソースのための JWT アクセス トークンが発行されます。
デフォルトの API リソースを指定することで、RFC 8707 サポートが欠けているアプリとのスムーズな統合を確保しながら、適切なアクセス制御を維持できます。
Logto に API リソースを登録する
Logto からオーディエンス制限付き アクセス トークン
を取得するには、まずバックエンド API を登録して Logto のオーディエンス制限付きアクセス トークンを有効にします。認可リクエストが受信されると、Logto は登録された API リソースを識別し、適切にアクセスを許可します。
API を登録するには、Console > API リソース に移動します。API 識別子が https://[your-tenant-id].logto.app/api
と表示されている組み込みリソースが表示されます。このリソースは Logto のすべての Management API を包含し、Logto の認可されたユーザーのみがアクセスできるように保護されています。
Create API resource ボタンをクリックし、インタラクティブなフォームに従って独自の API リソースを作成します:
- このエンティティを識別するのに役立つ人間が読みやすい API 名。
- URI 形式の一意の API 識別子。これは API リソースのアイデンティティを表します。
新しい API は作成されるとリストに表示されます。エンティティをクリックして API 詳細ページで管理または削除できます。