2015-06-15 153 views
0

我是OAuth2概念的新手。我很想在我的應用程序中實現這一點。此應用程序提供REST API。我看了一些教程,做了一些研究,並在我的應用程序中以工作狀態實現它。Spring-Security-OAuth2中的grant_type

但是在進行一些搜索時,我閱讀了OAuth2中不同類型的grant_type。我試圖瞭解這一點,但沒有得到實際的區別,應該使用哪一個來保護REST API。 因此,我想知道grant_type類型的「密碼」,「client_credential」等應該使用哪種方式,以及在哪種情況下,或者哪些應該用於保護REST API?

同樣在某些地方,我發現/oauth/token的請求是不同的。 一些地方的Authorization標題爲Basic 'some_encoded_string'。 而在某些地方,它是持證人'some_encoded_string'。這些要求有什麼不同?

總結這個我有2個問題 -

  1. 對於grant_type類型的「密碼」,「client_credential」等,這應使用其中的場景,或者應該用於確保REST API的?

  2. /oauth/token請求令牌的方式有什麼區別。

發揮我在實施spring-security-oauth2方面的知識。

回答

2

您需要使用的授權取決於您的使用情況以及訪問資源的客戶端應用程序的性質。一般來說,沒有一個應用REST API資源的授權。您需要提供更多關於API的信息,以及您如何與它們進行交互。

如果用戶必須爲客戶端授予訪問API的權限,那麼您通常會使用「授權代碼」授權。如果客戶端直接訪問資源而沒有最終用戶的干預,那麼它通常會使用「客戶端憑證」授權。

在大多數情況下,您應該避免使用password授權,因爲這意味着用戶必須將其用戶名和密碼提供給客戶端應用程序。如果應用程序可以使用其他授權,例如授權碼,那麼這是可取的。可信應用程序(例如用戶在其計算機上安裝的本機應用程序)將是可能使用密碼授權的一種情況。

客戶端通常會使用「基本」身份驗證來訪問令牌端點。 「承載」身份驗證用於訪問受保護資源(如您的API),並傳遞從授權服務器獲得的訪問令牌。

爲什麼你認爲你需要使用OAuth2?我很好奇,因爲你說你不明白什麼是贈款類型。在確定如何使用OAuth2或爲什麼之前,您需要了解這一點。

+0

它需要的項目所以我使用OAuth2和是的我不明白它的概念,但它並不意味着我永遠不會明白這一點。 – Anita

+0

你說過,在大多數情況下不應該使用'password'授權類型,但是你沒有解釋在哪種情況下我們應該使用授予類型?還可以使用Basic type Authorization標頭更多地解釋標記請求。 – Anita

+0

我在密碼授權上增加了一些。儘管沒有關於爲什麼你的應用程序需要OAuth2的更多信息,但很難給出關於你應該使用什麼(或者它是否有意義)的具體答案。 [spec](http://tools.ietf.org/html/rfc6749)中涵蓋了令牌請求等的所有細節,因此我建議您在此處查看細節。 –

相關問題