2016-03-31 3 views
0

Ich verwende ASP.NET Identity in einem Web API 2 Projekt. Ich habe es zur Zeit und läuft gut mit einem Benutzernamen und Passwort für die Authentifizierung von dem folgenden Beispiel:Hinzufügen eines neuen Grant-Typs in ASP.NET Identity?

grant_type=password&username=alice%40example.com&password=Password1! 

Und das funktioniert gut.

Jetzt kann mein Dienst von einer mobilen App aus aufgerufen werden und ich möchte dem Benutzer die Möglichkeit geben, sich mit einem Passwort anmelden zu können. Ich habe zwei zusätzliche Felder (Passcode und Geräte-ID) zur Benutzertabelle hinzugefügt und den UserStore erweitert, um einen Benutzer basierend auf diesen Informationen abrufen zu können.

Meine Frage ist, wie der Benutzer einen Passcode geben kann? Ich brauche sie in der Lage sein, entweder mit Passwort einloggen oder Passwort, so dass ich dachte an dem folgenden für Passcode zu senden:

grant_type=passcode&username=alice%40example.com&passcode=1234&deviceid=abcdef 

und je nach grant_type ich entweder dem Benutzerspeicher durch ein Passwort oder Passwort abfragen. Allerdings wirft dies einen Fehler (unsupported_grant_type) und mit einer schnellen Suche sieht es aus wie diese vordefinierten Werte sind, so kann ich keinen neuen hinzufügen?

Kann ich eine neue grant_type hinzufügen oder muss ich bei password bleiben und ein zusätzliches Feld in den Post-Daten haben, die angeben, ob es ein Passcode ist?

Dank

Antwort

0

Hinzufügen eines weiteren grant_type kein großes Problem zu sein scheint. Es gibt jedoch: Compliance. Jeder OAuth-Endpunkt verfügt über einen bestimmten Satz zulässiger grant_type s. Wenn Sie einen anderen hinzufügen, umgehen Sie den Standard, was zu Problemen mit anderen führt.

Verwandte Themen