อันไหนปลอดภัยกว่าและทำไม?
ทั้งสองอย่างปลอดภัยขึ้นอยู่กับสภาพแวดล้อมที่คุณใช้งาน
ฉันไม่เห็นเหตุผลที่เพิ่มขั้นตอนพิเศษ (รหัสการอนุญาตแลกเปลี่ยนโทเค็น) ในเวิร์กโฟลว์เดียวเมื่อเซิร์ฟเวอร์สามารถออกโทเค็นการเข้าถึงได้โดยตรง
มันเป็นเรื่องง่าย ลูกค้าของคุณไม่ได้เป็นที่เชื่อถือได้ เรามาดูรายละเอียดกันดีกว่า
พิจารณาว่าคุณกำลังพัฒนาแอปพลิเคชั่Instagram API
นดังนั้นคุณจึงลงทะเบียนแอปของคุณด้วยInstagram
และกำหนดว่าAPI's
คุณต้องการอะไร Instagram
จะช่วยให้คุณพร้อมclient_id
และclient_secrect
บนเว็บไซต์ของคุณคุณตั้งค่าการเชื่อมโยงซึ่งกล่าวว่า "มาและใช้แอปพลิเคชันของฉัน" คลิกที่นี้แอพลิเคชันเว็บของคุณควรจะทำให้ทั้งสองInstagram API
สายไปยัง
First
ส่งคำขอไปInstagram Authentication Server
กับด้านล่างพารามิเตอร์
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.
คุณไม่ส่งclient_secret
คุณไม่สามารถเชื่อถือลูกค้าได้ (ผู้ใช้และหรือเบราว์เซอร์ของเขาที่พยายามใช้แอปพลิเคชันของคุณ) ลูกค้าสามารถดู URL หรือจาวาสคริปต์และค้นหาของคุณclient_secrect
ได้อย่างง่ายดาย นี่คือเหตุผลที่คุณต้องการขั้นตอนอื่น
คุณได้รับและcode
ที่นี่คือstate
code
temporary
และไม่ได้มีการบันทึกไว้ที่ใด
จากนั้นให้คุณsecond
โทรไปInstagram API
(จากเซิร์ฟเวอร์ของคุณ)
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.
เป็นสายที่ทำจากเซิร์ฟเวอร์ของเราอย่างปลอดภัยเราสามารถใช้client_secret
(ซึ่งแสดงให้เห็นถึงวิธีการที่เรามี) ด้วยcode
ซึ่งแสดงให้เห็นว่าผู้ใช้ที่ได้รับอนุญาตให้ออกclient_id
การใช้ทรัพยากร
ในการตอบสนองเราจะได้ access_token