OAuth 2.0客戶端角色被細(xì)分為一系列類型和配置,本節(jié)將闡述這些類型和配置。
OAuth 2.0規(guī)范定義了兩種客戶端類型:
保密的客戶端能夠?qū)ν獠勘3挚蛻舳嗣艽a保密。該客戶端密碼是由授權(quán)服務(wù)器分配給客戶端應(yīng)用的。為了避免欺騙,該密碼是授權(quán)服務(wù)器用來識別客戶端的。例如一個保密的客戶端可以是web應(yīng)用,除了管理員,沒有任何人能夠訪問服務(wù)器和看到該密碼。
公有的客戶端不能使客戶端密碼保密。比如移動手機(jī)應(yīng)用或桌面應(yīng)用會將密碼嵌入在內(nèi)部。這樣的應(yīng)用可能被破解,并且泄漏密碼。這同于在用戶的瀏覽器上運(yùn)行的JavaScript應(yīng)用。用戶可以使用一個JavaScript調(diào)試器來尋找到應(yīng)用程序,并查看客戶端密碼。
OAuth 2.0規(guī)范也提到了一系列客戶端配置文件。這些配置文件是具體類型的應(yīng)用程序,這可以是保密或公開的。這些配置文件有:
Web應(yīng)用是指運(yùn)行在Web服務(wù)器內(nèi)的應(yīng)用。實(shí)際上,Web應(yīng)用典型地由瀏覽器部分和服務(wù)端部分組成。如果Web應(yīng)用需要訪問資源服務(wù)器(如Facebook賬號),然后客戶端密碼被保存在服務(wù)器上。因此密碼是保密的。
這里闡釋了一個保密的客戶端應(yīng)用:
保密的客戶端:web應(yīng)用
用戶代理應(yīng)用比如運(yùn)行在瀏覽器上的的JavaScript應(yīng)用。瀏覽器是用戶代理。用戶代理應(yīng)用可以保存在web服務(wù)器上,但應(yīng)用程序只運(yùn)行一次下載的用戶代理。一個例子就像一個JavaScript游戲只能運(yùn)行在瀏覽器里。
這里闡釋了一個客戶端用戶代理應(yīng)用:
公有客戶端:用戶代理應(yīng)用
原生應(yīng)用比如桌面應(yīng)用或移動手機(jī)應(yīng)用。原生應(yīng)用典型地被安裝在用戶計(jì)算機(jī)或設(shè)備(手機(jī),平板等)上。因此客戶端密碼也被存儲在用戶計(jì)算機(jī)或設(shè)備上。
這里闡釋了客戶端原生應(yīng)用:
公有客戶端:本地應(yīng)用
有些應(yīng)用是這些配置的混合使用。比如本地應(yīng)用也可以有服務(wù)器部分,來做一些工作(如數(shù)據(jù)存儲)。OAuth2.0規(guī)范沒有提及這種混合型。然而,在大多數(shù)情況下,混合型將能夠使用這些配置文件的認(rèn)證模型。
更多建議: