在OAuth協(xié)議中我介紹了四種授權模式贺拣,其中特別常見、特別主流、特別安全的一種授權模式譬涡,就是授權碼模式(authorization code)闪幽,下面我來詳細介紹一下這種授權模式。
一涡匀、授權碼模式簡介
授權碼模式是四種授權模式中功能最完整盯腌、流程最嚴密的一種授權模式,不管是微信也好陨瘩、微博也好腕够,幾乎所有的互聯(lián)網提供商都是采用這種方式來完成授權的。
二舌劳、授權碼模式授權步驟
授權碼模式授權步驟
- 用戶訪問第三方客戶端帚湘,如果第三方應用需要用戶授權,它會將用戶導向認證服務器上甚淡。用戶同意授權的這個動作會在認證服務器上來完成大诸,如果用戶同意授權,那么認證服務器會將用戶重新引導到第三方應用上去贯卦,那么導回去的時候會導入到第三方應用的哪里呢资柔?一般會指向到一個url上去,這個url是第三方應用client和服務提供商事先商量好的撵割。
- 當認證服務器將用戶導入第三方應用的url上去時建邓,會攜帶一個授權碼(這個授權碼并不是第三方應用需要的那個令牌(Token))。
- 第三方應用在受到這個授權碼之后睁枕,會拿著這個授權碼向認證服務器上申請令牌,(注意:這一步是在client的服務器后臺去完成的沸手,對用戶是不可見的)外遇。
- 然后認證服務器會核對第三步給的那個授權碼是不是之前給client發(fā)過去的,如果確認無誤契吉,那么會像client發(fā)送令牌(Token)跳仿。
三、授權碼模式特點
在整個過程中捐晶,我們了解到菲语,就是因為在授權的時候會產生一個授權碼,因此這個方式就叫做授權碼模式惑灵。這種模式主要有兩個特點:
1.用戶同意授權的動作是在認證服務器上去完成的山上。
相比其它三種授權模式,密碼模式和客戶端模式英支,同意授權的動作是在第三方應用上去完成的佩憾,授權之后,client去向認證服務器申請令牌的時候帶著一些信息(用戶同意client授權)。但是認證服務器是沒辦法確定用戶是不是真的授權了妄帘,有可能這個授權信息是第三方應用自己偽造的楞黄。
而在授權碼模式中,“同意授權”這個動作是在認證服務器上去完成的抡驼,所以認證服務器可以明確的知道用戶確實同意了授權鬼廓。
2.client換取令牌的方式
client在整個申請token的過程中向認證服務器進行了兩個請求,第一個是拿到授權碼致盟,第二次請求是拿著授權碼去換取token碎税。也就是說在這個模式下面要求第三方應用必須要有一個服務器,并不是直接返回到瀏覽器上勾邦,安全性會更高蚣录。
就是因為這兩個特點,造就了授權碼模式是功能最完整眷篇,也是現今第三方應用服務商最常用的授權模式萎河。