2013-04-23 15 views
5

Ich bin dabei, eine Anwendung zu entwickeln, die Dienste mit REST verfügbar macht. Auf diese Dienste wird über Browser- und Nicht-Browser-Clients zugegriffen. Ich erwarte, dass es eine Reihe von Installationen dieser Software geben wird, die verschiedenen Gruppen gehören und von diesen verwaltet werden. Ich möchte Benutzern von einem System ermöglichen, auf Dienste in einem anderen System zuzugreifen. Sie teilen nicht den gleichen Identitätsspeicher. Ich würde es gerne, wenn ein Benutzer für ihre Instanz authentifizieren und dann ein Token verwenden könnte, um Anfragen an ihre Instanz und Remote-Instanzen zu stellen. Dies scheint eine gute Verwendung für JSON Web Tokens (JWT) zu sein. Jedes System müsste so konfiguriert werden, dass es den anderen Token, die von Zertifikaten signiert sind, vertraut.REST Authentifizierung/Autorisierung mit JWT föderierten Identitäten

Ich habe gelesen, dass dies mit OAuth mit JWT Bearer Token getan werden kann, aber das scheint mehr Overhead als benötigt wird. Warum das Bearer-Token für ein Access-Token austauschen, anstatt nur die Bearer-Tokens zu verwenden? Ich frage mich, ob OAuth eine gute Lösung ist, auch weil es nicht kontrolliert, ob das System auf die Daten des Benutzers zugreifen kann, wie viele der Beispiele im Web, sondern ob der Benutzer Zugriff auf die im System gespeicherten Daten hat.

Der nächste Teil des Problems ist zu bestimmen, wie diese JWT-Tokens zu erstellen, scheint es, wie etwas wie eine WS-Trust STS wäre angemessen. Ich habe keine gesehen, die einfach sind und nur Benutzer authentifizieren und Token zurückgeben. Möglicherweise könnte es auch nützlich sein, Unterstützung zu haben, um den Ablauf eines Tokens zu verlängern und Token zu validieren?

In der Vergangenheit konnte ich diese Art von Fähigkeiten mit SOAP mit WS-Security und SAML Assertions aktivieren. Ich möchte sehen, ob das gleiche mit REST und JWT Token erreicht werden kann. Es gibt viele Beiträge im Internet, die sich gegen die Einführung eines eigenen Sicherheitsrahmens aussprechen, daher zögerte ich ein wenig voranzukommen. Ich habe gesehen, dass Microsoft Handler hinzugefügt hat, die sich um den Schutz von Diensten mit JWT-Token kümmern, so dass es scheint, dass sie in diesem Ansatz einen gewissen Wert sehen.

Hat jemand Einblick in Möglichkeiten, um diese Art von Identity Federation für REST-Dienste in einem Standard-konforme und einfache Weg zu erreichen?

Antwort

4

Ja, das ist der Ansatz, den ich meinen Kunden empfehle. In der Tat sichert JWT Windows Azure Mobile Services seine Endpunkte. JWT sind relativ einfach zu handhaben (verglichen mit SAML-Token zum Beispiel), behalten aber interessante Eigenschaften im Vergleich zu access_tokens (wie eine Signatur).

This doc zeigt ein Beispiel, wie man es mit WebApi und unserem Produkt macht (wenn Sie MS-Technologien verwenden). Die Prinzipien sind jedoch generisch, und Sie könnten unabhängig davon, ob Sie unsere STS verwenden oder nicht anwenden.