2017-08-17 2 views
0

Disons que j'ai une API web à laquelle une application native doit faire des requêtes. Cette API doit authentifier l'utilisateur qui effectue ces demandes via l'application native. OpenID Connect semble être le bon choix puisqu'il s'agit d'authentification plutôt que d'autorisation avec OAuth.OpenID Connect - le jeton d'identification doit-il être envoyé à la ressource protégée dans ce cas?

L'application native envoie les informations d'identification de l'utilisateur à l'IDP et récupère un jeton d'accès (pour l'autorisation) et un jeton d'identification (pour l'authentification). D'après ce que je comprends d'OIDC, le jeton d'accès serait envoyé à l'API mais le jeton d'identification est seulement pour l'application cliente native. Cela n'a pas de sens pour moi car c'est l'API qui se soucie de l'utilisateur, pas de l'application native.

Alors, pourquoi le jeton d'identification n'est-il pas également transmis à la ressource protégée (alias l'API)? Si vous ne transmettez pas le jeton d'identification à l'API, qu'est-ce qui garantit que le jeton d'accès est sécurisé et peut être utilisé pour authentifier l'utilisateur? Sinon, il semblerait perdre l'avantage d'utiliser OIDC sur OAuth.

Répondre

3

La spécification OIDC est conçue de manière à ce que les jetons d'identification soient toujours pour les clients (application native) et les jetons d'accès pour les ressources (API). Les jetons ID sont toujours des jetons JWT, mais les jetons Access peuvent être de type différent.

Le but du jeton Access n'est pas d'authentifier mais d'autoriser (autorisation déléguée). Si, pour une raison quelconque, le serveur de ressources voulait connaître l'utilisateur, il peut appeler le point de terminaison user-info.

La sécurité/validité d'échange jeton peut être validé de plusieurs façons:

  • Utilisation du chiffrement/signature avec le modèle public/clé privée où le serveur d'autorisation encrypte/signe le jeton d'accès avec sa clé privée et des ressources le serveur décrypte/vérifie avec la clé publique.

  • Utiliser point final d'introspection jeton pour valider les demandes, la validité du jeton etc ..

D'autres attributs comme AUD, aide AZP à la validation des jetons d'accès émis.

Certains fournisseurs de OIDC utilisent ID_Tokens pour accéder à l'API - ce qui est différent du modèle proposé par la spécification OIDC

Cette article a des explications détaillées sur ces scénarios.