Identityserver und Legacy SQL server Benutzer speichern

Vor einigen Wochen habe ich OpenID Connect und Identityserver V3 entdeckt. Ich lief einige der gelieferten Beispiele und ich bin heute an der Stelle, wo ich weiter gehen muss, aber ich weiß nicht, wie es weiter geht:

Eigentlich haben wir einen "hausgemachten" authentications- und Autorisierungsprozess und wir möchten gerne zu einer OpenID Connect-Lösung wechseln. Identity server scheint der perfekte Kandidat zu sein, dies zu tun.

Heute sind unsere Benutzer in einer SQL server database gespeichert und idealerweise möchte ich diese Tabelle mit Identity server verbinden (ohne das Schema dieser Tabelle zu berühren). Ich lese über "MembershipReboot", aber es benutzt seine eigene database. Ich habe auch davon gehört, einen benutzerdefinierten User-Service zu machen, aber in der Probe (CustomUserService) habe ich nichts hilfreich gefunden. Heute bin ich ein bisschen verloren, weil ich nicht weiß, wohin und ich merke, dass ich nicht sehr weit vom Ziel bin.

Ich brauche Hilfe

Vielen Dank

    Im Custom User Service Sample, das Sie erwähnt haben, enthält es drei Varianten des User Service, um verschiedene Ansätze zu zeigen, aber Sie brauchen nur einen von ihnen.

    In der LocalRegistrationUserService Probe finden Sie Zeilen wie diese:

    public override Task AuthenticateLocalAsync(LocalAuthenticationContext context) { var user = Users.SingleOrDefault(x => x.Username == context.UserName && x.Password == context.Password); /// snip ... 

    und diese:

      public override Task GetProfileDataAsync(ProfileDataRequestContext context) { // issue the claims for the user var user = Users.SingleOrDefault(x => x.Subject == context.Subject.GetSubjectId()); /// snip... 

    Sie müssen diese Anrufe replace, die Werte aus der In-Memory- Users Sammlung mit etwas aufrufen, das eine Verbindung zum SQL-server öffnet und sie dort stattdessen sieht.

    Weitere GetProfileDataAsync finden Sie in der Custom User Service-Dokumentation , aber die beiden ( AuthenticateLocalAsync , GetProfileDataAsync ) sowie Ihr SQL-Lookup sind alles was Sie brauchen, um loszulegen.