2016-06-30 20 views
0

Ich suche Optionen zur Implementierung verschiedener Authentifizierungsmethoden in einer SAAS-Anwendung. Die SaaS-Anwendung ist eine einzelne Instanz, die alle Mandanten bedient.Owin-Pipeline pro Mieter

Um verschiedene Authentifizierungsmethoden zuzulassen, könnte ich verschiedene OWIN-Pipelines pro Mandanten erstellen, um beim Start alle Mandantenkonfigurationen durchlaufen zu lassen. Siehe Antwort unten Antwort hier für eine Erklärung: Change OWIN Auth Middleware Per Request (Multi-tenant, oauth API keys per tenant)

ich an die Pipeline alle Konfigurationsänderungen erkennen würde ich es wieder aufzubauen zwingen, aber ich fand einen schönen Repo, die tun den Trick zu sein scheint. https://github.com/damianh/DynamicKatanaPipeline

Obwohl die Lösung des Erstellens verschiedener Pipelines pro Mieter möglich ist, mache ich mir Sorgen, dass das nicht sehr gut skaliert. Ich habe mich gefragt, ob es eine gute Lösung ist und ob jemand Fehler kennt, die ich nicht mit dieser Lösung sehe oder irgendwelche Erfahrungen mit dem Setup gemacht habe.

Antwort

0

Basierend auf meiner Erfahrung in der Arbeit mit SaaS-Anwendungen, sehe ich keine Notwendigkeit für eine separate Pipeline pro Mieter. Die Authentifizierungs-Middleware sollte schlau genug sein, um die richtige Mandantenkennung basierend auf den bereitgestellten Authentifizierungsinformationen zu erhalten.

Sobald die Identität festgelegt ist, wird der Rest der Anwendung für den Prozess der Bereitstellung der Daten auf die Anfrage basierend auf dem identifizierten Kontext kümmern.

HTH

0

Ich habe ein OWIN.Framework Projekt, das unter anderem Sie flexibler sein können über die Pipeline OWIN Gebäude, mehrere Pfade durch die Pipeline für verschiedene Arten von Anfrage einschließlich aufweist.

Sie können dies verwenden, um verschiedene Authentifizierungs-Middleware pro Tenant zu konfigurieren, aber andere Teile der Pipeline sind für alle Mandanten gleich.

Lassen Sie mich wissen, wenn Sie interessiert sind und Hilfe beim Einstieg bekommen möchten.