2016-03-04 150 views
0

我目前的任務是編寫我們要發佈給客戶的RESTful API。我計劃使用Web API 2和OWIN中間件。將訪問此應用程序的應用程序的範圍可以從控制檯應用程序的任何地方,無需額外的用戶身份驗證,即可完全打擊將涉及用戶登錄和身份驗證的Web應用程序其他web api 2客戶端和用戶兩部分身份驗證

的一個要求是,我們不僅需要提供用戶身份驗證來控制,我們將回到什麼樣的數據,我們還需要驗證在訪問我們的API的應用程序是由我們的組織允許的。因此,這要求我們不僅要驗證調用API的應用程序,還要驗證通過該應用程序登錄的許多用戶。

的目標是使用承載令牌技術,如OAuth的2.我不是很熟悉OAuth 2,但看前想後,我不明白的方式來促進這樣的兩個部分驗證。理想情況下,我們希望發出一個clientId和一個clientPassword,並且他們會將它與userid和userpassword一起傳遞,然後我們會傳回一個令牌。

這是不是說有人使用了OAuth2之前解決或這是一個自定義的身份驗證解決方案的工作?

回答

0

你所描述的聽起來像相當標準的Oauth2.0場景,所以你不需要任何自定義。

對於網絡應用程序,您可以使用Resource Owners Password Credentials Grant。這是一個標準流程。

這允許您的Oauth客戶端將其客戶端Id和客戶端密碼以及用戶的Id和密碼傳遞給Auth服務器,然後可以在發出令牌響應之前驗證用戶和客戶端。

但我會建議使用Authorization Code Grant這可能是用於Web應用程序的最佳選擇,它涉及到客戶端和用戶進行有效的驗證。

對於您控制檯應用程序,或不屬於用戶特定的任何應用,則可以使用Client Credentials Grant。這使得應用程序可以進行身份​​驗證並在沒有用戶的情況下獲取令牌。

如果您需要API要知道客戶端應用程序,唯一的流量,你不能真正使用的是隱格蘭特不驗證客戶端。