Est-il sûr d'exposer refreshtoken API

0

La question

J'ai une application développée à l'aide de Réagir dans le front-end et ASP.Net l'API Web dans le backend. Je suis à l'aide de JWT pour l'autorisation. Le processus est

  1. Lorsqu'un utilisateur se connecte et est authentifié, 2 jetons sont envoyés au front-end, le jeton d'accès et d'actualisation de jeton. Un jeton d'accès est le JWT et rafraîchit jeton est une chaîne de caractères aléatoires et un jeton d'actualisation est stocké dans une base de données.
  2. Pour chaque appel à l'Api de jeton d'accès est fixé dans la tête, j'ai un filtre d'authentification qui valide le jeton d'accès.
  3. Une fois le jeton d'accès est expiré, un état 401 est levée avec le message d'erreur TokenExpired.
  4. Une fois la face avant reçoit 401, il appelle l'actualisation jeton API pour obtenir le jeton d'actualisation

La question que j'ai, c'est que je ne peut pas avoir un filtre d'authentification pour valider le jeton d'accès de l'actualisation des jetons API qu'il va jeter 401 en raison de l'expiration de jeton d'accès, donc j'ai besoin de faire du rafraîchissement jeton API d'être anonymes, de sorte qu'il ne touche pas de filtre d'authentification. Si je fais anonyme, je fais un appel à la base de données pour obtenir le jeton d'actualisation stockées pour l'utilisateur et de le comparer avec celui que j'ai reçu depuis le front-end. Ainsi en est-il sûr de faire le jeton d'actualisation de l'API anonyme, si ce n'est quelle est la meilleure façon?

asp.net-web-api c# jwt
2021-11-24 05:13:45
2
0

Au Auth0, a Créé un ensemble de fonctionnalités qui permettent d'atténuer les risques associés à l'utilisation d'actualisation des jetons en imposant des garanties et des contrôles sur leur cycle de vie. Notre plate-forme d'identité offre jeton d'actualisation de rotation, qui est également livré avec la réutilisation automatique de détection.

Veuillez lire la rubrique suivante.

Actualiser Token Rotation

Actualiser Jeton De La Réutilisation Automatique De Détection

2021-11-24 05:56:21

Nous faisons en sorte de jeton d'actualisation de rotation. Lorsqu'un nouveau jeton d'accès est demandé, nous valider avec le jeton d'actualisation et de fournir un nouveau jeton d'accès et un nouveau jeton d'actualisation et l'actualisation jeton est mis à jour dans la base de données. Cependant, je ne pense pas que l'on peut stocker la liste de tous les actualiser les jetons générés comme mentionné dans la réutilisation automatique de détection
Raghul Raman
0

Le JWT est signé à l'aide de pré-partagée de la clé secrète. Puisque c'est le REPOS de l'API dans le backend et apatrides, jwt est utilisé pour l'autorisation et de construction principal objet

Comme vous le dites, le jeton d'accès représentent autorisation dans votre application, si le jeton d'actualisation est exposé ensuite le jeton d'actualisation peut être présentée par un mauvais acteur pour obtenir un jeton d'accès qu'ils peuvent utiliser de la même autorisation.

À l'aide d'un pré-partagée secret", indique le JWT est un HMAC seule variante de JWT, c'est à dire il n'y a pas de chiffrement qui indiquerait privée et la clé publique de la paire opposée à une "pré-partagée secret". Ainsi, le JWT est essentiellement une signature pour le but de caractéristiques de sécurité, nous garantissons l' intégrité que les revendications de la JWT sont bien formés et n'ont pas été modifiés depuis signé. Il signifie aussi même secret est utilisé pour la signature sur une fin comme a été utilisé pour vérifier sur l'autre extrémité, le même secret doit être utilisé parce que la vérification d'une signature nécessite que les deux extrémités de générer la signature et à la fois de la correspondance de signature. Donc pas de données chiffrées, donc pas de données dans le JWT est sensible et doit être protégée.

Compte tenu de ce contexte, à la fois l'actualisation et le jeton d'accès sont un simple JWT qui ne peut être généré que par le détenteur du secret - si ils sont exposés, ils peuvent être utilisés pour faire les requêtes malveillantes tant qu'ils restent valables (nbf réclamation).

Essentiellement ce type de JWT peuvent être utilisés en cas d'exposition à usurper l'identité du secret qui a signé le JWT représente, sans réellement connaître le secret lui-même, jusqu'à ce que le nbf réclamation expire le jeton et un jeton d'actualisation est le mécanisme qui permet de prolonger la nbf demande sans avoir le secret (ce qui entraînerait une nouvelle signature, parce que le nbf demande de changement lorsqu'elles sont utilisées).

Il y a une protection de jeton d'accès la réutilisation, c'est le nonce demande. Si vous n'utilisez pas actuellement un nonce réclamation que vous pouvez lire sur la façon OIDC ont mis en place et faire de même dans votre application. Mais comme vous le dites, votre application est apatride, mais j'espère que le backend a une forme d'état pour s'assurer qu'aucun nonce de réutilisation et de prévenir JWT signature de la réutilisation. Pour chaque instant la JWT changements de signature, donc le jeton d'accès des changements et peut être utilisé seulement 1 fois. Donc en cas de vol, il est une condition de concurrence qui utilise le jeton premier, ce qui a grandement réduit le risque, mais pas une solution parfaite.

2021-11-24 09:11:17

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................