Asp.net web api 企业环境中的IdenityServer—跨多个数据库解析用户信息

Asp.net web api 企业环境中的IdenityServer—跨多个数据库解析用户信息,asp.net-web-api,oauth-2.0,identityserver3,identityserver2,identityserver4,Asp.net Web Api,Oauth 2.0,Identityserver3,Identityserver2,Identityserver4,我们使用IdentityServer3作为我们的中央身份验证提供程序。现在我有一个关于企业环境中的IdenityServer的一般性问题。我试着用下面的例子来解释它: 如果用户已成功通过身份验证,则他将从提供商处获得令牌。令牌包括用户的唯一ID 经过身份验证的用户向WebApi发送请求,以创建新项目(例如新产品) WebApi从令牌中提取唯一ID,并在数据库中创建新产品。此外,新产品还与唯一的用户ID(例如creationUserId)链接 其他用户向WebApi发送请求以获取所有可用产品 We

我们使用IdentityServer3作为我们的中央身份验证提供程序。现在我有一个关于企业环境中的IdenityServer的一般性问题。我试着用下面的例子来解释它:

  • 如果用户已成功通过身份验证,则他将从提供商处获得令牌。令牌包括用户的唯一ID
  • 经过身份验证的用户向WebApi发送请求,以创建新项目(例如新产品)
  • WebApi从令牌中提取唯一ID,并在数据库中创建新产品。此外,新产品还与唯一的用户ID(例如creationUserId)链接
  • 其他用户向WebApi发送请求以获取所有可用产品
  • WebApi创建数据库查询以检索所有产品。此外,WebApi希望将每个产品的CreationSerID转换为相关用户名。但这是不可能的,因为用户名存储在身份数据库中,而身份数据库是应用程序数据库之外的另一个数据库(例如,对于产品)。是否有一些最佳实践来解决此需求
  • 非常感谢你的帮助


    问候

    谢谢您的回答。我认为只有一种方法可以实现我的要求:


    -->我将用户名和userId一起存储在应用程序数据库中,因为用于翻译的API会变慢。

    我可以想到的一种方法是将username添加为声明的一部分,这将是id\u令牌的一部分。在web api中,您将收到此索赔集,该索赔集可用于提取usename并根据需要使用它。您需要一个服务将这些ID转换为用户名。该服务可以是中心服务,或者您的api可以从该服务加载缓存。另一种方法是,当您存储id时,您也可以从令牌中输入名称,但当然,courser名称可以更改。