2014-03-25 41 views
0

因此,我創建了多個REST API,並且希望爲所有這些服務提供單個auth服務器(API),以避免在每個新應用程序上創建多個登錄。用於多個API的Auth服務器

什麼技術最適合這個?一個oauth服務器?

我還希望它能夠根據API分離用戶,並在需要時共享。但總是讓這個單一的auth服務器做它的事情,所以我不必每次都創建單獨的登錄系統。

我還需要對使用API​​密鑰獲取數據的機器進行「非用戶輸入」訪問。但我想用戶只需要一個接口來生成第一個消費者密鑰,然後在他們的應用中使用它。基本上沒有到期的令牌?

我設想的流程是這樣的:

  1. API使用者調用它調用驗證API對用戶進行授權,並返回一個訪問令牌和訪問令牌存儲在資源API的一個API代理服務器
  2. API消費者調用現在調用資源服務器的API代理,檢查有效的訪問令牌並返回數據,但是這次它不調用Auth API,因此我不必在內部對每個請求進行兩次調用。

這是一個很好的方法嗎?

除此之外,我需要使用API​​的實際網站不需要用戶登錄/交互,除非瀏覽以某種方式訪問​​API,否則oauth仍然可以這樣做?我如何在API上驗證自己的公共應用程序/網站?我是否應該預先創建沒有過期日期的oauth訪問令牌?

我不打算用戶登錄Facebook,谷歌賬戶等。我只想爲我的公司用戶在多個服務和API消費者登錄存儲在一個地方的全球登錄。

Oauth,SSO/CAS?

回答

0

除非您希望與其他身份提供商和/或服務提供商聯合,否則SSO/CA會出現問題。 OAuth可以處理您所描述的內容。

0

您可以使用OAuth20。它的主要想法正是你需要的。您的用戶將傳遞一次用戶名和密碼,然後您的API使用者應用程序將從授權服務器獲取訪問令牌(類型=密碼)。隨後對您的API的所有調用都將使用訪問令牌。您可以使用不同的客戶端憑據註冊不同的API使用者應用每次生成用戶訪問令牌時都應使用這些客戶端憑證,即生成的用戶訪問令牌將針對特定的API消費者應用程序發佈。另外,您的API使用者應用程序可以獲取訪問令牌(type = client_credentials),以便使用與特定用戶無關的API的某些部分。每個API消費者應用程序可能具有不同的範圍,這些範圍綁定到API的不同部分。換句話說,範圍定義了API消費者應用程序可以使用哪些API的一部分。關於令牌過期,您可以使用更長的時間獲取API消費者應用程序訪問令牌並刷新用戶訪問令牌的令牌機制。有關更多詳細信息,請參閱OAuth20規範 - http://tools.ietf.org/html/rfc6749

相關問題