2016-05-16 5 views
4

Ich habe eine ASP.NET 5 (RC1) -Anwendung, für die ich versuche, Authentifizierung und Autorisierung einzurichten. Ich bin jedoch verwirrt und überwältigt von all den unterschiedlichen Authentifizierungs- und Autorisierungsinformationen, die online auf dieser Plattform verfügbar sind. Vieles scheint entweder hoffnungslos veraltet zu sein oder scheint in diesem speziellen Anwendungsszenario einfach nicht zu gelten. Im Moment bin ich mir nicht einmal sicher, was die richtige "Terminologie" für die Frage ist, die ich zu stellen versuche, aber ich schweife ab.Kombinieren Azure AD (b2c) benutzerdefinierte ClaimsIdentity

Was versuche ich zu erreichen, ist ein System, bei dem Benutzer über Azure AD (B2C?) Authentifiziert/autorisiert werden, wobei zusätzliche Benutzerprofilinformationen in einer Datenbank gespeichert werden. Auf den Benutzerkontext in den Controllern wird jedoch in konsistenter Weise zugegriffen, wobei ich davon ausgehe, dass dies eine benutzerdefinierte ClaimsPrincipal/ClaimsIdentity wäre. Ich würde mir vorstellen, dass dies so einfach sein sollte wie das Hinzufügen eines Attributs 'authorize' oder etwas Ähnliches und den Zugriff auf ClaimsPrinciple.Current.Claims.

Ich habe ASP.NET Identity in der Vergangenheit verwendet, aber viele der Beispiele, die ich gefunden habe, verwenden das nicht. Die meisten verwenden einfach die UseOpenIdConnectAuthentication-Middleware. Ich sehe, dass ASP.NET Identity noch verfügbar ist, aber ich bin nicht sicher, dass es in diesem Szenario gilt. Ich habe auch ein paar Beiträge hier gefunden, die vorschlagen, eine benutzerdefinierte ClaimsIdentity zu verwenden, um dies zu erreichen, aber ich habe Probleme, nützliche aktuelle Beispiele zu finden. Übrigens ist mir klar, dass viele dieser "Profil" -Informationen als benutzerdefinierte Attribute in einer azure-Anzeige gespeichert werden können, aber die Art, wie einige der Informationen in der Anwendung verwendet werden, verhindert, dass alles in azur ist (d. H. EF linq-Joins usw.).

Bitte, sagen Sie mir, wenn ich auch nur in der Nähe bin. Ich weiß, dass dies eine ziemlich neue Plattform ist und die Informationen spärlich sind, aber sicherlich bin ich nicht die Einzige, die diese Fragen stellt.

Antwort

3

Rufen Sie einfach einen ausgezeichneten Artikel Identity management for multitenant applications in Microsoft Azure.

Viele Ihrer Fragen werden dort beantwortet.

z.B. Sie können den Anspruch im OWIN Middleware AuthenticationValidated-Ereignis erweitern.

ASP.NET Identity basiert auf Ansprüchen, da die Attribute als Ansprüche übermittelt werden, die Authentifizierung jedoch in der Datenbank erfolgt und nicht über externe IDPs wie Azure AD.

B2C ist ein Sonderfall in Azure AD - wird für viele (Millionen!) Externe Benutzer verwendet, die sich z. B. selbst registrieren und selbst verwalten können. SSPR.

B2C verwendet einen separaten Mandanten zum normalen Azure AD one und die Benutzer haben keinen Zugriff auf Dinge wie O365 oder SaaS-Anwendungen.

+0

Vielen Dank für die Antwort. Nachdem ich das durchgelesen habe und auch dieses betrachtet habe: https://github.com/aspnet/Identity/blob/ab43154577fe126ef531bb7a11b5eaa03add7bbf/src/Microsoft.AspNet.Identity/PrincipalExtensions.cs#L35-42 Es scheint eine Kombination aus ClaimType und einem Erweiterungsmethode könnte für das, was ich versuche, geeignet sein. Irgendwelche Gedanken dazu? – Brandon

+0

Ja - möglicherweise kombinieren die Ansprüche von AAD und der Info. Du brauchst die DB? – nzpcmad