我正在尝试构建一个由IdentityServer4处理的身份验证/授权的 ASP.NET 核心API。IdentityServer4 由 Identity 和 Entity Framework Core 提供支持。我的目标是一个相当标准和熟悉的设置,用户可以登录到API开发人员门户,在那里他们可以添加"应用程序"(客户端(并生成客户端ID和客户端密钥,然后他们可以用来访问API,类似于Facebook,Google等处理API访问的方式。
我的心理障碍来自IdentityServer处理实体框架集成的方式。它们的实体附加到两个不同的上下文,ConfigurationDbContext
和PersistedGrantDbContext
。我不知所措地将 IdentityServer4.EntityFramework 中的一个或多个Client
实体与我的 Identity 上下文中的一个或多个ApplicationUser
实体相关联。
这似乎是一个相当常见的使用场景,但文档对此却奇怪地保持沉默。经过各种搜索,我也无法在网上找到任何东西。我希望其他人需要同样的设置,并可以给我一些关于如何进行的建议。
用户和客户端之间没有关联。IdentityServer 对用户进行身份验证,无论他们尝试访问哪个客户端。
如果要实现诸如"允许哪个用户使用哪个客户端"之类的语义,则超出了身份验证范围。这通常在应用程序本身中实现,因为这是特定于应用程序的逻辑。
https://leastprivilege.com/2017/07/10/authorization-is-hard-slides-and-video-from-ndc-oslo-2017/