Ich habe ein Web-API-Projekt, das den Zugriff auf autorisierte Benutzer basierend auf Rollen ermöglicht. Wir planen, in naher Zukunft auf mehrere solcher API-Projekte zu skalieren, die dasselbe Berechtigungs-Token verwenden. Was ich mache, ist ein separates Projekt, das den Benutzer authentifiziert (mit Facebook, Google oder ActiveDirectory oder einem anderen Authentifizierungsanbieter) und dann ein Autorisierungstoken generiert, das von allen API-Servern verbraucht wird. Um die Entschlüsselung des Tokens zu ermöglichen, teile ich den Maschinenschlüssel über web.config unter allen Anwendungen. Das funktioniert gut. Jetzt möchte ich den MachineKey von Zeit zu Zeit ändern und ihn unter allen Anwendungen teilen, die das Autorisierungs-Token benutzen.
Meine Idee ist, das Autorisierungsprojekt von meinen WebAPI-Projekten zu trennen, so dass ich kein Authentifizierungssystem in allen WebAPI-Projekten implementiere. Alle Hinweise wären sehr hilfreich.
Erweitere die Implementierung , die auf der folgenden Stackoverflow-Antwort angezeigt wird, um Ihre Anforderungen zu erfüllen. Ich werde den Code in ein paar Tagen aktualisieren, wie Sie das erreichen können.
Sie könnten die APIs veranlassen, dass der Authorization-Service das Token vom Client bestätigt und in derselben Anfrage die ID-Daten vom Service zur API holt. Um den Traffic auf den Auth-Service zu reduzieren, könnte er kurzlebige Access-Token an die APIs mit einem Ablaufdatum aushändigen, die nach wenigen Minuten aktualisiert werden müssen, oder, wenn sie kritisch sind, können sie direkt von der API widerrufen werden Auth-Service ruft die APIs auf.
Ihr System klingt für mich wie ein OAuth-Schema. Ich würde nicht vorschlagen, dass Sie versuchen, vollständig konform zu gehen, es sei denn Sie planen für andere Anwendungsfälle wie mobile Geräte etc. Zugang zu Ihren Diensten, aber Sie können nachlesen, wie sie es tun und was für Ihre Bedürfnisse relevant erscheint.
Wie von Rajesh vorgeschlagen, glaube ich, wonach ich suche, ist eine triviale Verbesserung seiner Verbindung.
Im Wesentlichen muss ich eine Funktion erstellen, die meinen Schlüssel in der Methode Protect
festlegt.
Der Rest der Implementierung ist ziemlich Standard in dem Code von Barguast
geschriebenTags und Links asp.net-web-api oauth authentication active-directory owin