2016-01-15 5 views
5

Ich bin der Umsetzung REST-API die folgenden Technologien/Ansätze:Authentifizierung mit JWT und JSONAPI

Ich möchte Authentifizierung Endpunkt implementieren, sollte es Erhalte den Benutzernamen und das Passwort in der POST-Anfrage im JSONAPI-Format und gebe das JWT-Token im JSONAPI-Format zurück. Aber ich sehe, es gibt einige Widersprüche, die mir nicht zu 100% RESTful sein können:

Lassen Sie uns Endpunkt /tokens benennen, weil es tatsächlich Token erstellt. Antwort wäre auch vom Typ tokens, z Ressource:

{ 
    "data": { 
    "type": "tokens", 
    "attributes": { 
     "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEifQ.ivJ5P23wqVo3w31flg3aOu7er--Ijght_RrBf_MuqsU", 
    } 
    } 
} 

Aber wie wäre Anfrage? username und password sind Eigenschaften des Benutzers, aber sie sollten an den Endpunkt /tokens gesendet werden. Wenn ich users Ressource an /tokens Endpunkt senden, macht es nicht viel Sinn.

Gibt es einen Weg dafür, JSONAPI zu folgen und API sinnvoll zu halten?

Antwort

3

Wenn ich Benutzer Ressource an/Tokens Endpunkt senden, macht es nicht viel Sinn.

Warum nicht? REST legt nicht fest, dass Sie Benutzer nur an eine Benutzerressource senden. Sicher, wenn Sie CRUD-Operationen auf einer Benutzerressource durchführen, tun Sie dies über den Benutzerressourcen-Endpunkt.

Um jedoch ein Token zu generieren, ist es völlig sinnvoll, eine Benutzerressource an den Token-Endpunkt zu senden.

2

Sie können die Benutzeranmeldeinformationen auch über einen HTTP-Autorisierungsheader oder als Teil der Toplevel-meta-Eigenschaft der JSON-Nutzlast angeben.