79 votes

Communication OAuth v2 entre l'authentification et le serveur de ressources

Je vais avoir quelques problèmes pour comprendre comment OAUTH-v2 fonctionne.

Le protocole OAuth version 2 spec lit:

  1. Accéder À Des Ressources Protégées

    Le client accède protégé ressources en présentant l'accès
    jeton pour le serveur de ressources. L' serveur de ressources DOIT valider le
    jeton d'accès et de s'assurer qu'il n'a pas expiré et que son champ d'application couvre
    la ressource demandée. Les méthodes utilisé par le serveur de ressources pour
    valider le jeton d'accès (ainsi que toutes les réponses d'erreur) sont au-delà de la la portée de cette spécification, mais généralement impliquent une interaction ou la coordination entre les ressources serveur et l'autorisation
    serveur
    .

Comment cette interaction entre les ressources serveur et le serveur d'autorisation de travail dans la pratique?

  • Comment fonctionne le serveur de ressources déterminer qu'un jeton d'accès, il reçu est valide?
  • Comment l' serveur de ressources extraire le permis champ d'application à partir du jeton pour voir si l'accès doit être accordé à une ressource particulière? Est le Champ d'application codée dans le jeton d'accès, ou le serveur de ressources d'abord communiquer avec le serveur d'autorisation?
  • Comment est la confiance entre les ressources serveur et le serveur d'autorisation mis en place?

Jeton d'accès aux attributs et les les méthodes utilisées pour l'accès protégé les ressources sont au-delà de la portée de cette spécification et sont définis par compagnon de spécifications.

Quelqu'un peut-il donner des exemples de jeton d'attributs?

78voto

Eran Hammer Points 2522

La raison de ce qui est hors de portée pour la spécification est la large gamme de moyens pour accomplir cette connexion entre les deux entités. La question principale est de savoir quelle est la complexité de votre déploiement.

Par exemple, vous avez un serveur de gestion d'accès et d'authentification, et un ensemble de services distincts, chacun avec ses propres serveurs de servir les appels d'API? Ou, avez-vous juste une boîte avec un serveur web qui gère à la fois l'authentification/autorisation et les appels d'API?

Dans le cas d'une seule case, rien de plus n'est nécessaire que l'entité émettrice de jetons est le même que celui de la validation. Vous pouvez mettre en œuvre des jetons à utiliser une table de base de données de la clé et de la recherche de l'enregistrement dans la base de données (ou de la mémoire cache) sur chaque demande, ou vous pouvez encoder la portée, l'id utilisateur et d'autres informations directement dans le jeton et de crypter à l'aide d'un symétrique ou asymétrique de l'algorithme.

Les choses deviennent un peu plus complexe lorsque l'on traite avec un environnement distribué, mais pas de beaucoup. Vous avez encore le problème des jetons à l'autorisation du serveur, mais le serveur de ressources doit trouver un moyen de valider ceux-ci. Il peut le faire en faisant une API interne disponible pour le serveur de ressources pour demander au serveur d'autorisation pour "résoudre" le jeton (qui peut être rapide dans un environnement local), ou les deux peuvent établir une paire clé publique/privée ou symétrique secrète et l'utiliser pour chiffrer tout le serveur de ressources besoins dans le jeton.

Autonome jetons sont plus long, mais qui offre de bien meilleures performances par demande. Cependant, ils viennent avec un prix que vous ne pouvez pas vraiment les révoquer s'ils sont toujours valides (non expiré). Pour cette raison, autonome les jetons doivent être de très courte durée (ce qui est acceptable pour vous de laisser l'accès libre après qu'il a été révoqué - par exemple, de nombreux sites utilisent une heure), avec un rafraîchissement jeton bon pour un an ou plus pour obtenir de nouveaux jetons.

4voto

Stefan L Points 722

Un exemple d'API de serveur de ressources vers autorisations est celui disponible à l' adresse http://code.google.com/apis/accounts/docs/OAuth2Login.html#validatetoken . Cela ne précise cependant pas le format du jeton d'accès, mais la réponse semble être d'une utilité universelle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X