2017-10-04 2 views
0

Ich habe eine Webanwendung, die OAuth 2.0 verwendet, um mit einem Dienst eines Drittanbieters zu sprechen. Ich möchte, dass sowohl mein Server als auch meine Webanwendung im Namen des Benutzers mit dem autorisierten Dienst kommunizieren. Ich gehe die normalen Autorisierungsschritte durch, um die Umleitung durchzuführen, den Auth-Code zu erhalten, ihn gegen den Zugriffstoken auszutauschen, all diesen Jazz. Sobald er fertig ist, hat mein Server das Zugriffstoken und kann mit dem Dienst sprechen. Allerdings möchte ich, dass die Web-App auch mit dem Dienst kommuniziert, damit ich nicht alles über meinen Server routen muss.Sind OAuth-Zugriffstoken vertraulich?

Kann ich das Access Token an die Web App senden, damit ich das erreichen kann? Oder soll das Zugriffstoken zwischen meinem Dienst und dem Dienst geheim gehalten werden, so dass es dem Benutzer niemals offengelegt wird, genauso wie das Client-Geheimnis?

Ich habe versucht, eine Antwort dafür in der Spezifikation und verschiedenen Blog-Posts zu finden, habe aber keine endgültige Antwort in beide Richtungen gefunden. Ich weiß, dass es eine implizite Authentifizierungsmethode für clientseitige Apps gibt, die überhaupt keine serverseitige Komponente enthalten. Daher ist meine anfängliche Vermutung, dass ich das Token an den Kunden senden kann. Ich würde das gerne überprüfen.

Antwort

2

Das Token gilt als sehr vertrauliche Information, da es den Zugriff auf den Dienst ermöglicht. Jeder könnte Anfragen stellen, wenn sie dieses Token hätten.

Aus diesem Grund wird das Token im Autorisierungsheader übergeben. Aus diesem Grund wird dringend empfohlen, alle Aufrufe über https auszuführen, um die Kopf- und Rumpfinformationen zu schützen. Dies ist auch der Grund, warum es empfohlen wird, dass die Token eine kurze Lebensdauer haben, so dass, wenn man in der Tat kompromittiert ist, es nicht lange dauert.

Ja, Sie können dieses Token zwischen Ihren eigenen Anwendungen teilen und es sollte funktionieren, vorausgesetzt, der Empfänger des Tokens speichert nicht die IP-Adressen der Anrufer oder verfügt über andere Überprüfungsmechanismen.

Die ideale Situation wäre jedoch, wenn Sie für jede Anwendung, die Zugriff benötigt, einen anderen Satz von ClientID und Client Secret ausgeben müssen.

Vergessen Sie nicht, dass sich die Anwendungen auf diese Weise auf der Empfängerseite identifizieren und für Berichterstellungs- und Analysezwecke wichtig sein können.

Verwandte Themen