2017-02-24 85 views
0

我正在使用Identity Server 4從單個應用程序頁面對用戶進行身份驗證。爲了項目的需要,我必須使用資源所有者密碼流。
Identity Server和我的應用程序一起工作良好。 Identity Server提供訪問令牌,我可以使用此令牌訪問我們擁有的某些API。 但是,我在問自己關於訪問令牌,用戶和社會。現在我的設置是這個。在資源所有者密碼流中,用戶是否可以處理範圍?

  • 我有一個需要範圍API-1的API。
  • 我有一個客戶端(我的SPA),我定義範圍API-1
  • 而且我有一個用戶。

在此配置中,客戶擁有訪問API的權限,而不是用戶。我想知道如何將這個範圍提供給用戶,而不再是客戶。

很愚蠢,我想知道如果用戶可以擁有範圍,而不是客戶端。也許我錯過了或誤解了一些東西,所以請教我。

回答

0

在資源所有者密碼流中,您的客戶端將始終需要對您的資源受其保護的範圍擁有權限。這並不意味着您無法保護您的API,但是它基於與用戶相關的聲明。

如果在您的API中,例如您需要基於訪問API的用戶的不同權限,請使用聲明信息作爲授權的一部分。在資源所有者口令流例如在http://docs.identityserver.io/en/release/quickstarts/2_resource_owner_passwords.html你會看到,它提到這個頁面的腳下,看到兩個段落如下:

當您發送令牌身份API端點,你會發現與客戶證書授權相比,這是一個小而重要的區別。訪問令牌現在將包含唯一標識用戶的子索賠。通過在調用API之後檢查內容變量可以看到這個「子」聲明,並且也將通過控制檯應用程序顯示在屏幕上。

子聲明的存在(或不存在)讓API在代表客戶端和代表用戶的呼叫之間進行區分。

+0

因此,我可以向我的用戶添加一些代表API的範圍。感謝你的回答 ! – Waldo

+1

您不會將範圍添加到用戶,您向用戶添加聲明,範圍仍然與您的客戶端。在您的API中,您可以訪問這些用戶聲明,甚至可以將它們作爲Authorization的一部分使用,如果您想這樣做,可以通過將策略添加到控制器或操作的Authorize屬性來完成。有關基於asp.net核心的權利聲明的更多信息(包括示例),請參見https://docs.microsoft.com/zh-cn/aspnet/core/security/authorization/claims –

相關問題