【问题标题】:Associating clients with users将客户端与用户关联
【发布时间】:2017-08-09 19:19:51
【问题描述】:

我正在尝试使用 IdentityServer4 处理的身份验证/授权构建 ASP.NET Core API。 IdentityServer4 得到 Identity 和 Entity Framework Core 的支持。我的目标是一个相当标准和熟悉的设置,用户可以登录到 API 开发人员门户,在那里他们可以添加“应用程序”(客户端)并生成客户端 ID 和客户端密码,然后他们可以使用它们来访问 API,类似了解 Facebook、Google 等如何处理 API 访问。

我的思维障碍来自于 IdentityServer 处理实体框架集成的方式。它们的实体附加到两个不同的上下文,ConfigurationDbContextPersistedGrantDbContext。我找不到一种将 IdentityServer4.EntityFramework 中的一个或多个 Client 实体与我的 Identity 上下文中的一个或多个 ApplicationUser 实体相关联的好方法。

这似乎是一个相当常见的使用场景,但文档奇怪地没有提及它。经过各种各样的搜索,我也无法在网上找到任何东西。我希望其他人也需要同样的设置,并且可以给我一些关于如何进行的建议。

【问题讨论】:

  • 您找到解决此问题的正确方法了吗?我正在尝试做同样的事情。
  • 我知道这是一个老问题。我也试图让这种类型的用户与客户关系。如果您已经解决了这个问题,如果您能提供一些指导以实现此目标,我将不胜感激

标签: asp.net-core asp.net-identity entity-framework-core identityserver4 asp.net-core-identity


【解决方案1】:

用户和客户之间没有关联。无论用户尝试访问哪个客户端,IdentityServer 都会对用户进行身份验证。

如果您想实现诸如“允许哪个用户使用哪个客户端”之类的语义,那就超出了身份验证。这通常在应用程序本身中实现,因为这是特定于应用程序的逻辑。

https://leastprivilege.com/2017/07/10/authorization-is-hard-slides-and-video-from-ndc-oslo-2017/

【讨论】:

  • 我认为你不明白我在问什么。我知道用户和客户之间没有关联。这就是重点。授权 API 将通过客户端凭据进行处理。我需要为用户提供一种方法来管理他们将创建以使用 API 的一组客户端。想想 Facebook 的 API。您登录到他们的开发者门户并创建一个或多个“应用程序”。应用程序实际上只是 IdentityServer 用语中的客户端。他们有一个 id 和一个秘密,让你可以访问某些 Facebook API 范围。这就是我想要创造的。
  • OK - 您想构建某种自助式管理门户。没关系 - IdentityServer 本身没有任何帮助。
  • 我并不是想变得困难,但我没想到 IdentityServer 会为我处理这个问题。问题的关键是我试图找出在我的身份用户和来自 IdentityServer 的Client 之间创建某种关系的最佳方法。由于上下文是分开的,我不知道该怎么做,希望能得到一些指导,或者比我目前的思维过程更好的想法。
  • 这是一个老问题,但我认为您正在寻找的是 AllowedScopes。
猜你喜欢
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 2011-05-15
  • 2018-08-12
相关资源
最近更新 更多