Ressources API
Les ressources API, également appelées Indicateurs de Ressource, indiquent les services ou ressources cibles à demander, généralement une variable au format URI représentant l'identité de la ressource. C'est un concept clé dans le système d'Autorisation (Authorization) de Logto, car il définit le point de terminaison que la politique d'Autorisation (Authorization) est conçue pour protéger.
Indicateur de ressource
- Une valeur de ressource indique le service ou la ressource cible auquel l'accès est demandé.
- Sa valeur DOIT être une URI absolue.
- L'URI NE DOIT PAS inclure un composant de fragment.
- Elle NE DEVRAIT PAS inclure un composant de requête.
- Vous DEVRIEZ fournir l'URI la plus spécifique possible pour l'API complète ou l'ensemble de ressources qu'elle a l'intention d'accéder.
En pratique, un client peut connaître une URI de base ou l'application ou la ressource avec laquelle interagir. Il serait approprié de l'utiliser comme valeur du paramètre de ressource.
Par exemple, l'URI de base de la Management API de Logto.
https://tenantId.logto.app/api
Par défaut, cette ressource API est préenregistrée dans votre service Logto. Toutes les Management APIs sous cette URI sont protégées par Logto.
Schéma de ressource API de Logto
Nom de la propriété | Description de la propriété | Requis |
---|---|---|
Nom de l'API | Un nom convivial qui peut vous aider à identifier la ressource API. | true |
Identifiant de l'API | La valeur unique de l'Indicateur de Ressource de l'API, avec les restrictions listées ci-dessus. | |
Logto l'utilisera pour identifier la ressource API demandée et accorder les jetons d’Autorisation (Authorization) en conséquence. | true | |
Temps d'expiration du jeton (en secondes) | Le temps d'expiration défini pour le jeton d’accès . La valeur d'expiration par défaut est 3600. | false |
API par défaut | Une seule API par défaut peut être définie par locataire. | |
Lorsqu'une API par défaut est désignée, le paramètre de ressource peut être omis dans la requête d'auth. Les échanges de jetons suivants utiliseront cette API comme audience par défaut, entraînant l'émission de JWTs. | false |
Les requêtes avec un jeton d’accès
expiré devraient être restreintes. Cela est mis en œuvre pour protéger votre API contre un jeton abusé. Plus la valeur est grande, plus un jeton d’accès
émis survivra longtemps, et plus votre API sera vulnérable.
API par défaut
Cette fonctionnalité est principalement destinée aux applications qui ne prennent PAS en charge les indicateurs de ressource OIDC, par exemple, les plugins ChatGPT.
Logto utilise RFC 8707: Indicateurs de Ressource pour OAuth 2.0 pour mettre en œuvre le contrôle d’accès basé sur les rôles (RBAC). Bien que ce soit l'une des fonctionnalités d'OAuth 2.0, elle n'est pas encore largement prise en charge.
Dans l'implémentation de Logto, chaque Permission définie par l'utilisateur (Portée) doit être associée à une Ressource API. Sinon, elle sera traitée comme une Permission OpenID Connect (ou OAuth). En général, cela n'affecte pas votre processus d'Autorisation (Authorization). Cependant, lors de l'intégration avec des applications tierces qui ne prennent pas en charge RFC 8707 (par exemple, les plugins ChatGPT), cela peut poser des défis puisque la requête d'Autorisation (Authorization) initiale peut ne pas inclure un paramètre resource
. Par conséquent, Logto émettra toujours des Jetons d’accès (Jetons opaques).
Pour résoudre ce problème, vous pouvez désigner une Ressource API comme ressource par défaut au niveau du locataire. Une fois cela fait :
- Logto utilisera la Ressource API par défaut lorsqu'aucun paramètre
resource
n'est présent dans la Requête d’authentification (Authentication). - Si la Portée
openid
est incluse, un Jeton d’accès (Jeton opaque) pour le Userinfo Endpoint sera émis lorsqu'aucun paramètreresource
n'est présent dans les Requêtes de jeton suivantes. - Si la Portée
openid
n'est pas incluse, un Jeton d’accès (JWT) pour la Ressource API par défaut sera émis lorsqu'aucun paramètreresource
n'est présent dans les Requêtes de jeton suivantes.
En désignant une Ressource API par défaut, vous pouvez assurer une intégration fluide avec les applications ne prenant pas en charge RFC 8707 tout en maintenant les contrôles d'accès appropriés.
Enregistrer les ressources API dans Logto
Pour obtenir un jeton d’accès
restreint par audience de Logto, enregistrez d'abord vos APIs backend pour activer les jetons d’accès restreints par audience de Logto. Lorsqu'une requête d'Autorisation (Authorization) est reçue, Logto identifiera les ressources API enregistrées et accordera l'accès en conséquence.
Pour enregistrer vos APIs, accédez à Console > Ressources API Vous verrez une ressource intégrée avec l'identifiant de l'API affiché comme https://[your-tenant-id].logto.app/api
. Cette ressource englobe toutes les Management APIs de Logto et garantit qu'elles sont protégées et accessibles uniquement aux utilisateurs autorisés de Logto.
Cliquez sur le bouton Créer une ressource API et suivez le formulaire interactif pour créer vos propres ressources API :
- Un nom d'API lisible par l'homme qui peut mieux vous aider à identifier cette entité.
- Un identifiant d'API unique au format URI. Il représente l'identité de la ressource API.
La nouvelle API apparaîtra dans la liste une fois créée. Vous pouvez la gérer ou la supprimer sur la page des détails de l'API en cliquant sur l'entité.