Azure Active Directory B2C-维护数据库中的用户

时间:2019-04-08 01:28:53

标签: azure asp.net-core azure-active-directory azure-ad-b2c

我正在转换一个将其用户存储在数据库(包括凭据)中的旧系统,以使用Azure AD B2C进行身份验证。

我的第一步是重写前端API(直接为Web客户端提供服务的API)

由于许多其他系统和数据库表都依赖于users表及其列,因此,我决定为每个新的天蓝色广告注册创建一个db用户。

这是问题所在,数据库中的用户ID是主键,是一个自动递增的数字。

我从访问令牌声明中提取的ID是广告对象标识符GUID。

要使ad b2c用户实体与数据库用户实体相关联,我将必须在users表中创建一个新列AzureObjectId。

问题在于,现在我将不得不不断地进行从访问令牌中提取的AzureObjectId到数据库用户ID之间的转换,因为我访问的其他数据库表和其他内部API都需要一个数据库用户ID。 / p>

解决这个问题的正确方法是什么?
我能想到的是

  1. 在与数据库或另一个内部API的每次交互过程中,将AzureObjectId转换为数据库用户ID。
  2. 一旦我的API创建了数据库用户,请使用Azure AD B2C Graph API向该用户添加新的声明,即数据库用户ID。

这两个我都想避免。 是否可以通过数据库用户ID丰富访问令牌?

2 个答案:

答案 0 :(得分:1)

我会选择第二个选项,因为它是一次性操作,系统不需要每次都进行转换。

更新详细信息

这似乎也是migration scenario。检查样本here

您还需要使用自定义策略的Restful api功能。

在注册过程中,执行一个轻松的技术配置文件,该配置文件将在contoso(您的)服务中调用api来创建用户。 contoso服务将返回新创建的用户的数据库用户ID。此新的userId可用作用户的后续声明,AzureADB2C将使用该扩展名属性创建用户。

另一种方法是我们前面讨论的方法。注册后,服务可以创建用户,并且对于第一个调用,服务可以使用新的数据库用户ID为自己插入声明。

答案 1 :(得分:1)

是-使用custom attributes

您可以通过门户网站添加自定义属性,然后选择它们以将其作为声明中的声明返回。

上面的Graph API链接显示了如何以编程方式创建它们。

因此,如果您将数据库用户ID填充到自定义属性中,则可以通过令牌将其返回。