2016-04-23 11 views
1

Ich lerne gerade die Azure Mobile App-Möglichkeiten in Azure App Services und habe einige Fragen in Bezug auf Authentifizierung (und Autorisierung). Ich verwende die Azure Mobile App Quickstart, um die verfügbaren Funktionen zu erlernen.Hinzufügen zusätzlicher Ansprüche an authentifizierte Benutzer in Azure Mobile App

Erste Frage: Habe ich es richtig verstehe, dass ich nicht die benutzerdefinierte Authentifizierung unter Verwendung des Microsoft.Azure.Mobile.Server.Login Paket wie beschrieben im Abschnitt „So implementieren können: Verwenden Sie die benutzerdefinierte Authentifizierung für Ihre Anwendung "des Artikels Work with the .NET backend server SDK for Azure Mobile Apps, wie ich die integrierten Azure-Authentifizierungsanbieter (für die Authentifizierung mit Facebook, Google, etc.) verwenden möchte? Ich ziehe Konfiguration und Verwendung der integrierte Funktionalität über kundenspezifische Entwicklung, wenn es um Sicherheit ;-)

Zweite Frage: Ich bin derzeit versucht, einige benutzerdefinierten Ansprüche hinzuzufügen (zB eine Rolle Anspruch von einem Azure lesen SQL-Datenbank basierend auf der SID des Benutzers für die Benutzer, die sich erfolgreich in meiner Azure Mobile App registriert und authentifiziert haben. Was ist der beste Weg, um das zu erreichen? Meine Idee war, die Ansprüche in der Initialize-Methode des TableControllers wie folgt hinzuzufügen und dann mit dem Attribut [Authorize (Roles = "Test")] nach der Rolle zu suchen. Gibt es einen Grund, warum es nicht so geht?

protected override void Initialize(HttpControllerContext controllerContext) 
    { 
     base.Initialize(controllerContext); 
     myapptestContext context = new myapptestContext(); 
     DomainManager = new EntityDomainManager<TodoItem>(context, Request); 

     var claimsPrincipal = this.User as ClaimsPrincipal; 
     ClaimsIdentity ci = new ClaimsIdentity(); 
     string role = "Test"; // get role from Azure SQL database based on user's SID 
     ci.AddClaim(new Claim(ClaimTypes.Role, role)); 
     claimsPrincipal.AddIdentity(ci); 
    } 

Antwort

3

Wenn Sie die integrierten Authentifizierungsanbieter verwenden möchten, dann müssen Sie nicht die Microsoft.Azure.Mobile.Server.Login verwenden. Die integrierten Anbieter (AAD, Facebook, Google, Twitter, MSA) kümmern sich um alle Details für Sie.

Soweit benutzerdefinierte Ansprüche gehen, habe ich keine spezifische Anleitung. Sie könnten es in die Controller-Initialisierung einfügen, oder Sie könnten ein Stück benutzerdefinierte Middleware, die es injiziert, oder sogar einen Rückruf in Global.asax hinzufügen. Was für dich und deine App am besten funktioniert.

+0

Danke, dass Sie sich die Zeit nehmen, um zu antworten! Ich bin mir sicher, dass ich hier etwas verpasse, aber ich sehe einfach keinen Weg, "ein Stück benutzerdefinierte Middleware hinzuzufügen", um Ansprüche hinzuzufügen. Meinst du z.B. Hinzufügen eines benutzerdefinierten Authentifizierungsfilters zum HttpConfiguration-Objekt, das ausgeführt wird, nachdem der Benutzer von den integrierten Anbietern authentifiziert wurde und die dort aus einer Datenbank übernommenen Ansprüche hinzufügt? Eine andere Option, die ich sehe, besteht darin, die Rollen des Benutzers in einem benutzerdefinierten AuthorizationAttribute zu überprüfen, anstatt den Rollenanspruch hinzuzufügen. Ist das auch ein gültiger Ansatz? – Tobias

+1

Ich denke, das sollte auch funktionieren. HttpConfiguration ist der richtige Startpunkt. –