2013-02-12 57 views
2

我建立與OAuth2 authorizationASP.NET Web Api和我工作的地方,我們已經有了一個應用程序:DotnetOpenAuth範圍和要求

  • 客戶
  • 組織
  • 用戶

一客戶擁有一個或多個組織,用戶可以爲一個或多個客戶提供服務。

我想使這個邏輯的範圍和accesstokens的一部分。通過這種方式,我可以限制訪問,但是我也會使用API​​從應用程序中離開(複雜)邏輯。 (當他們選擇了一個小範圍內)

的範圍

  • 組織
  • 客戶
  • 所有

例如

當應用程序請求與組織 範圍,用戶應該看到補助頁上的兩個下拉框的的accessToken。一到 選擇客戶和第二選擇一個離組織 這個客戶了。

這種方式與範圍組織的accessToken應該僅僅侷限於關閉此單一組織的數據。

什麼是使用DotNetOpenAuth實現此目的的最佳方法?

我應該添加organisationId和CustomerID作爲示波器到的accessToken?如果我這樣做,我將如何處理'客戶'範圍?我應該添加沒有組織標識的CustomerId嗎? (客戶最多可以有150左右的組織)

理想,我想將其轉化成索賠至極,我可以很容易的使用授權的用戶操作。

我想一些反饋,如果範圍是解決這一問題或一些想法,我怎麼能更好地解決這個問題的正確途徑,而無需重新發明輪子或打破DotNetOpenAuth框架打開。

PS 我建立這兩個AuthorizationServerResourceServer

回答

1

你不應該就我而言,加入組織ID。你應該只考慮令牌作爲一個證明,用戶能夠訪問組織,不組織特別。服務器可以使用存儲在令牌中的用戶名僅顯示允許用戶看到的組織。換句話說,現在有兩個檢查服務器需要做的:

  1. 如果所提供的令牌被授權爲組織範圍服務器檢查。
  2. 服務器檢查用戶(從令牌中檢索的)哪個特定組織已被授權。

通過這種方式,您可以使OAuth範圍簡單明瞭,但您仍然只能限制對特定組織的訪問。

+0

感謝您的回答!問題是一個用戶可以訪問多個組織。在這種情況下,令牌證明用戶授予應用程序訪問特定資源的權限。 – 2013-03-28 11:29:45

+0

是的,但服務器可以檢查是否正確?它不必包含在令牌中。 – 2013-03-28 12:19:08

+0

我一直在想你的解決方案(這就是爲什麼我沒有立即回覆),但我只是不明白這將如何適合。執行授權和身份驗證(並生成令牌)的服務器是不同的服務器/數據庫,然後是API使用的服務器。 API只是期待一個令牌,試圖將令牌轉換爲聲明,這就是說,如果涉及到安全性,所有的API都知道。如果你看看DotNetOpenAuth框架,我也沒有看到'內置'/'好'的方式來保存令牌和令牌可以訪問的內容之間的關係。如果我錯了,請糾正我:) – 2013-03-30 11:21:53