2015-11-06 86 views
0

我們目前正在進行OAuth生態系統設計。 當然,這個想法是,移動應用程序將使用用戶憑據授權類型對OAuth服務器進行身份驗證,以獲取進一步工作流的標記。另一方面,受保護的資源服務器將使用相同的OAuth服務器驗證令牌信息並作出相應的響應。移動應用程序和OAuth集成

這一切都很清楚,但有一個問題: 得到了這個工作,我們必須提供與代碼中編譯的客戶端密鑰的應用程序。這打開了一個很大的安全漏洞。 有沒有辦法避免它,或者它甚至是一個問題?

感謝,

回答

1

從RFC 6749,4.3.2. Access Token Request

The authorization server MUST: 

    o require client authentication for confidential clients or for any 
     client that was issued client credentials (or with other 
     authentication requirements), 

所以,如果您的客戶端應用程序的客戶端類型(RFC 6749,2.1. Client Types)是公共(和你的客戶一直沒有發出客戶機密),您不必將您的客戶機密包含在令牌請求中。換句話說,您可以獲得訪問令牌,而不會向授權服務器提供客戶端密鑰。在這種情況下,您可以避免將客戶機密碼嵌入到客戶機應用程序中。

另一方面,如果客戶端應用程序的客戶端類型爲機密,則客戶端應用程序不應交付給智能手機。

如何將客戶端類型設置爲公共或機密取決於您所使用的授權服務器的實現。一些實現提供了一個明確的切換按鈕來選擇公開或保密。其他人不提供這樣一個明確的選項,並且客戶端應用程序的客戶端類型是隱式確定的。例如,如果您在授權服務器提供的配置頁面中選擇Android應用程序,則客戶端類型將變爲公共。

請注意,但是,無論客戶端類型是公共還是保密,某些授權服務器實現可能始終需要客戶端機密。

相關問題