Ich lese diese beiden Artikel 1. here und 2. here, um herauszufinden, was die beste Möglichkeit ist, Authentifizierung gegen eine Azure Mobile App durchzuführen, wenn die API auf dem Server Claims-basierte benutzerdefinierte Autorisierung verwendet Der Xamarin-Client, der es aufruft, verwendet das MobileServiceClient
Framework. Ich kann nicht abschließen, welches der beiden Beispiele in diesen Links der bessere Weg ist.Azure Mobile App Authentifizierung mit Xamarin
Im ersten Link scheint keine Abhängigkeit vom plattformspezifischen Code zu bestehen wie im zweiten Link, was bedeutet, dass ich keinen Code in die Driod- oder IOS- oder Windows-Projekte schreiben muss und kann kommen Sie mit allem in einer Klassenbibliothek selbst. (Bin ich hier richtig?) Auch die erste Verbindung scheint keinen Anbieter wie die zweite Verbindung zu tun, weil ich eine direkte Service-Aufruf an eine URL aufrufen. Der zweite Link scheint dagegen nur Facebook, Twitter, MicrosoftAccount, Google and WindowsAzureActiveDirectory
zu unterstützen. Der obligatorische Parameter MobileServiceAuthenticationProvider
scheint keine benutzerdefinierte Authentifizierung für eine sql-Server-basierte Benutzertabelle zu bieten. Ich bin mir über diesen Teil nicht sicher und finde keine Dokumentation, die etwas anderes sagt.
Wenn LoginAsync
bietet keine benutzerdefinierte Authentifizierung dann ist klar, dass ich die Route InvokeApiAsync
folgen muss. Wenn es das tut, dann ist die Frage: sollte ich plattformspezifischen (Droid/IOS/Windows) Code in jedes Zielprojekt wie in der zweiten Verbindung schreiben oder sollte ich alle Dienstaufrufe in einer Klassenbibliothek behandeln, wie es in der Beispiel in der ersten Verbindung gezeigt? Mit anderen Worten sollte ich mit LoginAsync
oder InvokeApiAsync
gehen? Welcher der beiden ist der empfohlene Weg?
Können Sie ein beliebiges Muster zur Abdeckung beider Login-Typen empfehlen? Ich versuche derzeit, die gesamte Authentifizierung zu einer separaten Klassenbibliothek zu abstrahieren, habe aber Probleme damit, da ich eine 'Auth'-Schnittstelle in der Base-Portable-Bibliotheksklasse definieren muss, die gerätespezifische Implementierungen dieser Schnittstelle von jedem der Zielprojekte abruft (.Droid/.IOS/usw.) Jetzt befindet sich meine benutzerdefinierte Authentifizierung alleine in dieser Klassenbibliothek, während der andere Azure-Provider-bezogene Login-Code auf den Rest der Lösung verteilt ist. – user20358
Ich musste die Klassenbibliothek für die Authentifizierung verlassen und diesen Code in das portable Projekt selbst einfügen. Ich bin mir nicht sicher, ob das ein gutes Design ist. – user20358
Ich stelle meine ILoginProvider-Schnittstelle (die Basisschnittstelle, die der plattformspezifische Code implementiert) in die Basisklasse ein - keine Notwendigkeit für eine separate PCL. So ziemlich der ganze Code, den ich schreibe, ist in der PCL. –