2017-10-04 1 views
0

J'ai une application web qui utilise OAuth 2.0 pour parler à un service tiers. Je veux que mon serveur et mon application Web parlent au service autorisé au nom de l'utilisateur. Je passe par les étapes normales d'autorisation de faire la redirection, obtenir le code d'autorisation, l'échanger contre le jeton d'accès, tout ce jazz. Une fois terminé, mon serveur a le jeton d'accès et peut parler au service. Cependant, j'aimerais que l'application web parle aussi au service, donc je n'ai pas besoin de tout router via mon serveur. Puis-je envoyer le jeton d'accès à l'application Web pour que je puisse y parvenir? Ou, le jeton d'accès est-il censé être gardé confidentiel entre mon service et le service, ne jamais être divulgué à l'utilisateur, juste comme le secret du client est?Les jetons d'accès OAuth sont-ils confidentiels?

J'ai essayé de trouver une réponse pour cela dans les articles de blog de spec et divers, mais je n'ai pas trouvé de réponse définitive de toute façon. Je sais qu'il existe une méthode d'autorisation implicite pour les applications côté client qui n'implique aucun composant côté serveur. Par conséquent, ma supposition initiale est que je peux envoyer le jeton au client. Je voudrais vérifier cela bien.

Répondre

2

Le jeton est considéré comme une information très sensible car il permet l'accès au service. N'importe qui pourrait émettre des demandes s'il avait ce jeton. C'est pourquoi le jeton est passé dans l'en-tête d'autorisation, c'est pourquoi il est fortement recommandé de faire tous les appels sur https, pour protéger les informations d'en-tête et de corps. C'est aussi pourquoi il est recommandé que les jetons aient une durée de vie courte, de sorte que si l'on est effectivement compromis, cela ne dure pas longtemps.

Oui, vous pouvez partager ce jeton entre vos propres applications et cela devrait fonctionner, à condition que le destinataire du jeton ne stocke pas les adresses IP des appelants ou que d'autres mécanismes de vérification soient en place.

La situation idéale serait cependant pour vous d'émettre un ensemble différent de ClientID et Client Secret à chaque application qui nécessite un accès. N'oubliez pas que c'est la façon dont les applications s'identifient du côté du récepteur et cela peut être important à des fins de reporting et d'analyse.