Qu'est-ce que le protocole OAuth 2.0 Porteur du Jeton exactement?
Selon RFC6750-L'Autorisation OAuth 2.0 Cadre: Porteur de l'Usage de jetons, le porteur du jeton est:
Un jeton de sécurité avec la propriété que toute partie en possession du jeton (un "porteur") peut utiliser le jeton de quelque manière que toute autre partie en possession de il peut.
Pour moi, cette définition est vague et je ne trouve pas de spécification.
- Suppose que je suis mise en œuvre d'un fournisseur d'autorisation, puis-je fournir n'importe quel genre de string pour le porteur du jeton?
- Peut-il être une chaîne de caractères aléatoires?
- - T-il un encodage base64 de certains attributs?
Devrait-il être haché? - Et le prestataire n'besoin d'interroger le fournisseur d'autorisation afin de valider ce jeton?
Merci pour tout pointeur.
- Supposons que je suis mise en œuvre d'une autorisation du fournisseur, puis-je fournir n'importe quel genre de string pour le porteur du jeton? Peut-il être une chaîne de caractères aléatoires?. Les Jetons d'accès sont délivrés via Auth0 du protocole OAuth 2.0 systèmes d'extrémité: /autoriser et /oauth/jeton. Vous pouvez utiliser n'importe quel protocole OAuth 2.0-compatible à la bibliothèque pour obtenir des Jetons d'Accès. Si vous n'avez pas de préféré le protocole OAuth 2.0 de la bibliothèque, Auth0 fournit des bibliothèques pour de nombreuses langues et des cadres.
Vous devez vous connecter pour publier un commentaire.
Le Porteur du Jeton ou à l'Actualisation de jeton est créé pour vous par le serveur d'Authentification. Lorsqu'un utilisateur s'authentifie votre application (client) le serveur d'authentification va alors et génère pour vous un Porteur de Token (jeton d'actualisation) que vous pouvez ensuite utiliser pour obtenir un Jeton d'Accès.
Le Porteur du Jeton est normalement une sorte de secret de la valeur créée par le serveur d'authentification. Il n'est pas aléatoire, elle est créée en fonction de l'utilisateur vous donnant l'accès et le client de votre demande d'accès.
Afin d'accéder à une API par exemple, vous devez utiliser un Jeton d'Accès. Les jetons d'accès sont de courte durée (environ une heure). Vous utilisez le porteur du jeton pour obtenir un nouveau jeton d'Accès. Pour obtenir un jeton d'accès vous envoyer le serveur d'Authentification ce porteur jeton avec votre numéro de client. De cette façon, le serveur sait que l'application en utilisant le porteur du jeton est la même application que le porteur du jeton a été créé pour. Exemple: je ne peux pas il suffit de prendre un porteur du jeton créé pour votre application et l'utiliser dans mon application il l'habitude de travailler parce qu'il n'était pas généré pour moi.
Google Actualiser jeton ressemble à quelque chose comme ceci: 1/mZ1edKKACtPAb7zGlwSzvs72PvhAbGmB8k1zrgxpcnm
copié à partir de commentaires: je ne pense pas qu'il y a des restrictions sur le porteur de jetons que vous fournissez. Seule chose que je peux penser, c'est que c'est agréable de permettre à plus d'un. Par exemple, un utilisateur peut s'authentifier à l'application jusqu'à 30 fois et l'ancien porteur de jetons fonctionne toujours. oh, et si l'on n'a pas été utilisé pendant 6 mois, je voudrais le supprimer de votre système. Il est de votre serveur d'authentification qui auront à les générer et de les valider alors, comment il est mis en forme est à vous.
Mise à jour:
Porteur du Jeton est définie dans l'en-tête d'Autorisation de chaque Inline Action de la Requête HTTP. Par exemple:
La chaîne
"AbCdEf123456"
dans l'exemple ci-dessus est le porteur de jeton d'autorisation. C'est un jeton cryptographique produite par le serveur d'authentification. Tout porteur de jetons envoyés avec les actions de la question du terrain, avec l'auditoire champ spécifiant le domaine de l'expéditeur sous forme d'une URL de la forme https://. Par exemple, si le message est de [email protected] le public est https://example.com.Si le porteur à l'aide de jetons, vérifie que la demande en provenance du serveur d'authentification et est destiné à le domaine de l'expéditeur. Si le jeton n'est pas le vérifier, le service doit répondre à la demande avec un code de réponse HTTP 401 (non autorisé).
Porteur Jetons sont une partie de la OAuth V2 standard et largement adopté par de nombreuses Api.
Bearer ...
dans leAuthorization
en-tête? Ma compréhension est que le jeton d'accès est envoyé dans les demandes provenant d'un utilisateur authentifié et non le actualiser jeton.Que j'ai lu votre question, j'ai essayé sans succès de faire une recherche sur Internet comment Porteur jetons sont chiffrés ou signés. Je suppose que le porteur de jetons ne sont pas hachés (peut-être en partie, mais pas complètement), car dans ce cas, il ne sera pas possible de le décrypter et de récupérer les propriétés d'utilisateurs à partir d'elle.
Mais votre question semble être en essayant de trouver des réponses sur le Porteur du jeton de la fonctionnalité:
Donc, je vais essayer d'expliquer comment le Porteur de jetons et de l'Actualisation des jetons de travail:
Lorsqu'un utilisateur demande au serveur pour un jeton de l'envoi d'utilisateur et mot de passe via le protocole SSL, le serveur renvoie à deux choses: d'une jeton d'Accès et un Actualiser jeton.
Un jeton d'Accès est Porteur du jeton que vous aurez à ajouter dans tous les en-têtes de requête pour être authentifié en tant que le béton de l'utilisateur.
Un jeton d'Accès est une chaîne cryptée avec toutes les propriétés de l'Utilisateur, les Revendications et les Rôles que vous souhaitez. (Vous pouvez vérifier que la taille d'un jeton augmente si vous ajoutez plus de rôles ou de réclamations).
Une fois que la Ressource de Serveur reçoit un jeton d'accès, il sera capable de le décrypter et de lire ces propriétés de l'utilisateur. De cette façon, l'utilisateur sera validée et accordée avec l'ensemble de la demande.
Jetons d'accès ont une expiration courte (ie. 30 minutes).
Si les jetons d'accès a une longue expiration, il serait un problème, parce que, théoriquement, il n'y a pas de possibilité de le révoquer. Alors imaginez un utilisateur avec un rôle="Admin" que les modifications apportées à "l'Utilisateur". Si un utilisateur conserve l'ancien jeton avec le role="Admin", il sera en mesure d'accéder à jusqu'à le jeton d'expiration avec les droits Admin.
C'est pourquoi les jetons d'accès ont une expiration courte.
Mais, une question vient à l'esprit. Si un jeton d'accès a court d'expiration, nous avons pour envoyer chaque courte période de l'utilisateur et le mot de passe. Est-ce sécurisé? Non, il n'est pas. Nous devrions éviter. C'est lors de l'Actualisation des éléments apparaissent pour résoudre ce problème.
Actualiser les jetons sont stockées dans la bd et ont une longue expiration (exemple: 1 mois).
Un utilisateur peut obtenir un nouveau jeton d'Accès (quand il arrive à expiration, toutes les 30 minutes par exemple) à l'aide d'un jeton d'actualisation, que l'utilisateur a reçu la première demande d'un jeton.
Lorsqu'un jeton d'accès expire, le client doit envoyer un jeton d'actualisation. Si cette actualisation jeton existe dans la bd, le serveur renvoie au client un nouveau jeton d'accès et un autre jeton d'actualisation (pour remplacer l'ancien jeton d'actualisation par le nouveau).
Dans le cas d'un jeton d'Accès utilisateur a été compromise, l'actualisation de jeton de l'utilisateur doit être supprimé de la base de données. De cette façon, le jeton sera valide que jusqu'à la jeton d'accès expire parce que quand le pirate tente d'obtenir un nouveau jeton d'accès de l'envoi de l'actualisation jeton, cette action sera refusée.
Porteur du jeton est un ou plusieurs répétitions de l'alphabet, des chiffres, "-" , "." , "_" , "~" , "+" , "/" suivi de 0 ou plus "=".
RFC 6750 2.1. Demande D'Autorisation De Champ D'En-Tête (Format est ABNF (Augmented BNF))
Il ressemble Base64, mais selon Si le jeton dans l'en-tête être encodées en base64?, il ne l'est pas.
Références