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 Instagramund definieren API'sSie , welche Sie benötigen. Instagramwird Sie mit client_idund 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.
FirstSenden Sie eine Anfrage an Instagram Authentication Servermit 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_secrectleicht finden. Deshalb brauchen Sie einen weiteren Schritt.
Sie erhalten ein codeund state. Das codehier ist temporaryund wird nirgendwo gespeichert.
Dann secondrufen 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 codewelchen Shows der Benutzer die client_idNutzung der Ressource gewährt hat .
Als Antwort werden wir haben access_token