Welches ist sicherer und warum?
Beide sind sicher, dies hängt von der Umgebung ab, in der Sie sie verwenden.
Ich sehe keinen Grund, warum ein zusätzlicher Schritt (Austauschautorisierungscode für Token) in einem Workflow hinzugefügt wird, wenn der Server direkt ein Zugriffstoken ausstellen kann.
Es ist einfach. Ihr Kunde ist nicht sicher. Lassen Sie es uns im Detail sehen.
Stellen Sie sich vor, Sie entwickeln eine Anwendung gegen Instagram API
, registrieren Sie Ihre APP bei Instagram
und definieren API's
Sie , welche Sie benötigen. Instagram
wird Sie mit client_id
und versorgenclient_secrect
Auf Ihrer Website haben Sie einen Link eingerichtet, der besagt. "Komm und benutze meine Anwendung". Wenn Sie darauf klicken, sollte Ihre Webanwendung zwei Anrufe tätigen Instagram API
.
First
Senden Sie eine Anfrage an Instagram Authentication Server
mit den folgenden Parametern.
1. `response_type` with the value `code`
2. `client_id` you have get from `Instagram`
3. `redirect_uri` this is a url on your server which do the second call
4. `scope` a space delimited list of scopes
5. `state` with a CSRF token.
Sie senden nichtclient_secret
, Sie konnten dem Client nicht vertrauen (dem Benutzer und / oder seinem Browser, die versuchen, Ihre Anwendung zu verwenden). Der Client kann die URL oder das Java-Skript sehen und Ihre client_secrect
leicht finden. Deshalb brauchen Sie einen weiteren Schritt.
Sie erhalten ein code
und state
. Das code
hier ist temporary
und wird nirgendwo gespeichert.
Dann second
rufen Sie an Instagram API
(von Ihrem Server)
1. `grant_type` with the value of `authorization_code`
2. `client_id` with the client identifier
3. `client_secret` with the client secret
4. `redirect_uri` with the same redirect URI the user was redirect back to
5. `code` which we have already received.
Da der Anruf von unserem Server aus getätigt wird, können wir sicher verwenden client_secret
(was zeigt, wie wir sind), mit code
welchen Shows der Benutzer die client_id
Nutzung der Ressource gewährt hat .
Als Antwort werden wir haben access_token