2016-05-13 63 views
2

假設我們有一個應用程序(網頁/手機/桌面),用戶永遠不會登錄/註冊,但我們仍然想讓他訪問某些資源,例如以POST /v1/users爲例。匿名用戶的OAuth

爲了做到這一點,客戶需要一個access_token。 OAuth如何在這裏工作?或者應該使用其他認證機制?

回答

2

此答案適用於任何類型的身份驗證,OAuth或其他。

身份驗證的本質是客戶端擁有服務器可以驗證的密鑰,從而允許訪問受保護的資源。客戶自然保持這個關鍵祕密,否則任何人都可以訪問屬於他們的受保護資源。

如果您的客戶沒有以某種方式註冊,那麼沒有密鑰。但是,沒有必要進行明確的註冊/登錄。你的應用程序可以簡單地找到一些唯一的標識符,並靜靜地向服務器註冊並獲得訪問令牌。整個過程對用戶來說是隱藏的。

但是,如果您的數據隨時可用,並且任何人都可以訪問它,您可能需要考慮不使用任何身份驗證。如果你問的是你只想要從一個特定的應用程序訪問,那麼你需要包含來自該應用程序的某種形式的共享訪問令牌,服務器可以檢查該令牌。這不是100%,因爲任何能夠從您的應用讀取代碼或掃描http流量的人理論上都可以獲得該訪問令牌,但是您可能會讓普通用戶難以這樣做。 SSL有助於確保此過程。

+0

請更準確。 OAuth2區分客戶端(= App)和資源所有者(= User)。客戶端可以擁有可選的客戶端密鑰,資源所有者通常擁有密碼。 –

5

如果您的Web API(受保護的資源端點)不關心訪問用戶是誰,換句話說,如果訪問令牌提交給您的Web API不必與任何用戶關聯,請執行Client Credentials Grant ,這是RFC 6749中定義的流程之一,可以發出這樣的訪問令牌。