2016-07-11 13 views
0

Ich gehe durch einige Tutorials, um zu sehen, ob ich IdentityServer3 issue/handle Token verwenden kann, um den Zugriff auf einige Web API Endpunkte zu autorisieren.IdentityServer3 - Client und Secret

Eines der Konzepte, die ich nicht ganz verstehe, ist die Client und Secret. Bei der Verwendung von OAuth in früheren Projekten musste ich nie einen client oder secret Wert in der Kopfzeile übergeben. Ich habe nur die grant_type, username und password übergeben. Dennoch scheint IdentityServer einen client und einen secret zusammen mit grant_type, username und password zu erwarten.

Warum ist ein client notwendig? Sollte der IdentityServer nicht einfach ein Bearer-Token zurückgeben, unabhängig vom Client-Typ? Was ist der Zweck des Parameters secret? Wird damit die Signatur des JWT-Tokens erstellt?

Antwort

4

client_id und client_secret sind eine part of the OAuth spec, keine Identity Server-spezifische Implementierung. Sie sind Teil der Client-Registrierung, die ich gerne als Zugriffssteuerungsliste betrachte, und überprüfe, ob die anfragende Partei berechtigt ist, Zugriffstoken unter Verwendung des angeforderten Ablaufs und der Bereiche zu erhalten.

Nicht registrierte Clients sind supported in the OAuth spec, aber ich habe noch eine zu begegnen.

Von den Klängen der es Ihnen die ResourceOwner Strömung verwendet haben, die eine grant_type von password erfordert, client_id, client_secret, mehrere scope ‚s, username und password.

client_id und client_secret kann auch Base64 codiert und in der Authorization Kopfzeile mit dem Basic Schema gesendet gesendet werden.

Das Geheimnis wird nicht für die JWT-Validierung verwendet, es wird nur zur Überprüfung des eingehenden Clients verwendet.

+0

Danke Scott! Ich habe deine Tutorials gelesen. Die sind sehr gut angelegt. Ich habe Probleme, herauszufinden, wie man mit IdentityServer3 ein Bearer-Token zurückbekommt, um dann meine API mit Anspruchsattributen zu schützen. – webworm

Verwandte Themen