Autorisieren Sie WebAPIs auf mehreren Maschinen mit einem SSO über Code

9

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.

  1. Wie aktualisiere ich den machineKey zur Laufzeit unter allen Anwendungen?
  2. Gibt es einen programmatischen Weg, um das Gleiche zu erreichen?
  3. Ich habe in einem Blog gelesen, dass das Aktualisieren von machineKey keine gute Übung ist. Wenn ja, wie vermeide ich es, den Maschinenschlüssel insgesamt zu verwenden und ein System zu erstellen, in dem die Schlüssel nicht statisch sind?

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.

    
Shouvik 12.09.2014, 11:54
quelle

3 Antworten

4

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.

    
RAJESH JAIN 22.09.2014, 08:14
quelle
0

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.

    
Manuel Schweigert 15.09.2014 13:53
quelle
0

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.

%Vor%

Der Rest der Implementierung ist ziemlich Standard in dem Code von Barguast

geschrieben     
Shouvik 22.09.2014 09:31
quelle