2016-08-09 2 views
3

Ich versuche eine Lösung für die Authentifizierung in meiner neuen Anwendung zu finden, und ich mag den Ansatz von IdentityServer3. Ich würde gerne hoffen, dass meine Anforderungen von IdentityServer3 erfüllt werden und es ist nur mein Unverständnis wegen meiner Neuheit mit der Technologie.IdentityServer3 + Active Directory + selbst gehostete Benutzer db

Meine Anforderungen lauten wie folgt und in der Reihenfolge der gewünschten Ausführung: 1) Wenn ein Benutzer, der die Authentifizierung anfordert, ein lokaler Benutzer (Domäne) ist, sollte er automatisch mit Active Directory authentifiziert werden. 2) Wenn ein Benutzer, der eine Authentifizierung anfordert, nicht in Active Directory gefunden wird, sollte er sich mit unserer eigenen Benutzertabelle authentifizieren. 3) Wenn ein Benutzer, der eine Authentifizierung anfordert, in keiner der beiden Zertifizierungsstellen ist, können wir den Zugriff über Google- oder Facebook-Anmeldeinformationen gewähren, dies ist jedoch keine Anforderung der Phase I.

Ich habe derzeit eine funktionierende Proof-of-Konzept mit IdentityServer3 als eigenständiger Sicherheitsserver ziehen Datensätze von den InMemoryUsers, InMemoryClients und InMemoryScopes, und ich bin mir ziemlich sicher, dass ich in der Lage sein werde, diese Konzepte zu erweitern von unseren eigenen Datenbank.

Dieses Problem tritt auf, wenn ich versuche, Active Directory als ersten Prüfpunkt zu verwenden.

Ich habe mir ein paar Ressourcen angeschaut, um das Active Directory zu erstellen, aber ich stolpere, weil ich keine übersichtliche Demo sehe, die das AD-Teil des Puzzles zeigt.

TJ Robinson hat einen Gist eines ActiveDirectoryUserService, der IUserService implementiert, und das sieht am vielversprechendsten aus, aber aufgrund meines n00b-Status kann ich nicht herausfinden, wie ich ihn in das Schema rollen kann.

Ich würde wirklich alle Vorschläge begrüßen, und vielleicht Links zu Beispielen, wie AD-Authentifizierung zuerst mit einem Fallback auf lokale Authentifizierung zu tun.

Vielen Dank im Voraus, Ric

+0

@sbennur sieht aus, als hätte er ein ähnliches Problem ... zumindest wenn es um den AD-Teil geht. Leider zeigte er kein vollständiges Beispiel dafür, wie es in die 'Startup.cs'-Datei von ihm gerollt wurde IdentityServer3-Projekt. – rcastagna

Antwort

3

In Bezug auf Ihre erste Anforderung ...

Ich glaube, Sie Windows Authentication Service untersuchen sollte. Dies ist im Wesentlichen ein Mini-Sicherheitstoken-Dienst, der als externer Identitätsanbieter für IdentityServer arbeiten kann, um die Windows-Authentifizierung (über das WS-Fed-Protokoll) bereitzustellen.

Wenn Sie diesem Link zur GitHub-Seite folgen, finden Sie zwei Links zu Beispielen, mit denen Sie mit dieser Komponente beginnen können. In einem Beispiel sind sowohl Identity Server als auch der Windows-Authentifizierungsdienst separat gehostet und im anderen Beispiel werden sie zusammen gehostet.

Eine separate Option könnte ADFS (wenn Sie eine haben) als externer Identitätsprovider verwenden.

Diese Beispiele enthalten einen benutzerdefinierten Benutzerdienst (ExternalRegistrationUserService), der diese Windows-Benutzer anzeigt, die einer speicherinternen Benutzergruppe (in Identity Server) zugeordnet sind. Ihre Anforderungen werden natürlich eine andere Implementierung dieses Benutzerdienstes erfordern, aber ich hoffe, dies könnte Ihnen helfen, mit dem Windows-Auth-Teil zu beginnen.

Als ich diese Übung vor kurzem durchging, fand ich viele gute Informationen in der closed IdentityServer3 issues (for windows auth). Viele gute Infos zu Stack Overflow; Viel Glück!

+0

danke für den Schub. Ich habe mit dem Windows-Authentifizierungsdienst gearbeitet, den TJ Robinson in meinem OP zusammengestellt hat. Leider habe ich ADFS nicht verfügbar, und ich bemerkte in der ersten Verbindung, die Sie zur Verfügung gestellt, scheint, Föderationsdienste zu verwenden. Ich schaue jetzt auf den zweiten Link, aber wenn mir noch etwas in den Sinn kommt, lass es mich wissen. Danke nochmal für die Hilfe! – rcastagna

+0

@rcastagna - Der Windows-Authentifizierungsdienst kommuniziert mit Identity Server über das Protokoll ws-fed, aber nicht über ADFS. Der Dienst, auf den Sie von TJ Robinson verwiesen haben, ist ein Benutzerdienst (nicht dasselbe wie dieser Windows-Authentifizierungsdienst). –

+0

Rob, ich bin ungefähr so ​​verwirrt wie ein Neugeborenes in einem Gentlemen's Club. Ich schaue mir das Projekt an, an das Sie mich verwiesen haben, und es zeigt deutlich, dass ich auf IIS Express die Windows-Authentifizierung aktivieren muss. Ich kann dieses Projekt nicht nur von der Windows-Authentifizierung abhängig machen. Es muss von AD-Authentifizierung auf local/OpenId Connect fehlschlagen, wenn der Benutzer nicht in AD ist. Das Beispiel von TJ stellt mir ein Benutzerobjekt zur Verfügung, nachdem ich die Anmeldedaten validiert habe, aber ich bekomme immer noch eine Fehlermeldung, dass der Benutzername/das Passwort falsch ist. – rcastagna

Verwandte Themen