【问题标题】:Standalone identity server 4 Username lookup独立身份服务器 4 用户名查找
【发布时间】:2018-04-29 13:00:43
【问题描述】:

从独立身份服务器 4 获取用户详细信息的推荐方法是什么?

我有一个 api 和 auth 服务器作为单独的实体。 api 中的很多资源都附加了身份验证用户 ID,并且在 UI 上我想显示真实的用户名。虽然有一个明显的解决方案,将 api 方法添加到身份服务器,这将基于提供的 id 返回这些,我想知道是否有任何关于此的最佳实践。

我对在 api 中公开用户信息有一些奇怪的感觉,即使它是基于 id 的查找。理论上任何人都可以获得这些id。我只对 given_name、family_name 和 username 声明感兴趣,所以也许这些已经足够公开了,我想多了。

其他选项是设置服务器到服务器的通信,这会增加负载,所以我对那个 tbh 不是很兴奋。你是怎么处理这个问题的?

【问题讨论】:

  • 那么,您是如何在登录时建立身份的? IdSrv 如何验证登录请求?
  • 这不是关于授权,它更多的是关于基于用户ID查找用户数据。我认为您在此评论中的领先之处是用户令牌。我没有那个,因为它当时是对多个用户的查找。例如。数据表
  • 不,我问的是IdSrv如何与认证系统通信。例如,我有一个带有 ASP.NET Core Identity 的 IdSrv,因此它既可以用作授权服务器,也可以用作身份验证服务器,并且我们在那里有端点来管理用户
  • 这里一样,设置非常简单。如果我的 api 和我的 auth/authorization server 是同一个实体,那么就像注入 usermanager 并从 db 获取数据一样简单,但事实并非如此。

标签: c# identityserver4 claims-based-identity


【解决方案1】:

我们有一个身份验证服务器 (IdSrvr4) 和一个授权服务器。

如果你说的是用户令牌,使用内置的Identity Server UserInfo Endpoint

对于任何自定义,我们在授权服务器中实现。因此,如果您想要其他用户的 given_name 和 family_name,我们有一个自定义端点。并且该自定义端点使用自定义授权过滤器并使用对数据库的直接调用(我们使用 EF 和 MS 身份)。

由于评论而更新。 我们选择了 2 个服务器,1 个用于身份验证,1 个用于授权。此设计部分源于这篇标题为 "Identity vs Permissions" 并由 IdentityServer4 的作者撰写的文章。

【讨论】:

  • 是的,我就是这么想的,谢谢,很高兴知道。需要获取许多用户的详细信息(通常在表格中,最少计算 25 行),因此 userinfo 将无法正常工作,因为我必须多次调用它。自定义api会更好。
  • “我们有一个身份验证服务器(IdSrVr4)和一个授权服务器。”,你把它倒过来了。 IdSrv 是授权服务器,而不是身份验证服务器
  • @Camilo Terevinto - 我不相信你是正确的。 IdSrvr 验证您实际上就是您所说的人(身份验证)。它没有说明您可以做什么(授权)。
  • 恰恰相反,IdSrv 明确地将身份验证保留在系统之外,以便您可以使用例如 ASP.NET Core Identity 或 Active Directory 进行身份验证。更重要的是,IdSrv 正是为了解决允许用户(通常在特定客户端中)做的事情
  • 好吧,不管怎样,它对我来说变化不大。我将 IdentityServer4 与网络核心身份一起使用。如果我有来自前端的用户 ID,任务只是获取用户详细信息。看来自定义 api 方法肯定是要走的路。干杯,伙计们;)
猜你喜欢
  • 2018-07-01
  • 2019-07-19
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多