2016-06-21 135 views
0

我在我們公司實施IdentityServer3的過程,但我已經打圍繞着如何處理客戶端到客戶端授權空白,並希望在正確的方向上沒有任何指針。IdentityServer3客戶對客戶授權

這是我們要求的概述:

  • 我們有多個網站的客戶,我們的用戶訪問。這些使用AuthorizationCode流進行配置。讓我們打電話給這些WebSiteClientA,WebSiteClientB
  • 我們有多種的WebAPI客戶爲後端服務,既可以由一個客戶端(WebSiteClientAWebSiteClientB)或用戶(誰有權訪問WebSiteClientA訪問WebSiteClientB)。讓我們把這種WebAPIClientA

注:本公司擁有的用戶的身份,以及所有客戶端。

起初我以爲我們可以使用ClientCredentials流動配置WebAPIClientA。然後WebSiteClientA \ WebSiteClientB將與客戶證書被配置爲WebAPIClientA並且當需要它訪問WebAPIClientA可以生成訪問令牌,或者產生具有有限的訪問令牌範圍和手此訪問令牌給用戶,從而用戶可以從在客戶端訪問WebAPIClientA直接。

這將幾乎滿足我們所有的需求,除了一個大的需求,我們還希望能夠管理客戶端訪問另一個客戶端的範圍,以及使用ClientCredentials流的方法,能夠生成客戶端下的所有範圍的訪問令牌。即WebSiteClientA應該能夠生成一個訪問令牌WebAPIClientA與讀&寫入作用域但WebSiteClientB應該只能夠生成一個訪問令牌WebAPIClientA與讀取範圍。

在我的腦海裏,客戶端\身份服務器的談話會: WebSiteClientA使得用於訪問令牌身份服務器的請求來WebAPIClientA的範圍X,並提供客戶端機密WebSiteClientA。身份服務器然後說,是的,你是WebSiteClientA,我們可以從我們的記錄中看到Google與範圍X訪問WebAPIClientA,這裏是一個訪問令牌。

這是可能的還是我以完全錯誤的方式來看待這個問題,並且可能有更好的方法來滿足要求?

回答

1

聽起來好像你在談論兩件事情。

首先是在API中需要用戶的ID。要獲取用戶標識,您可以決定是否要構建受信任的子系統,或者如果您不需要受信任的子系統(即您的API信任或不信任MVC客戶端傳遞用戶標識符)。如果您執行受信任的子系統,則客戶端憑據從MVC客戶端流向API是沒有問題的。如果您不想要受信任的子系統,那麼您需要MVC客戶端爲用戶獲取訪問令牌(通過隱式或混合流)。

您問的第二個問題是,如果您可以控制允許每個客戶端請求的作用域,並且您可以通過客戶端配置上的AllowedScopes配置屬性(或任何其他名稱)進行配置。這個設置與上面提到的第一個問題是正交的。