我正在转换一个将其用户存储在数据库(包括凭据)中的旧系统,以使用Azure AD B2C进行身份验证。
我的第一步是重写前端API(直接为Web客户端提供服务的API)
由于许多其他系统和数据库表都依赖于users表及其列,因此,我决定为每个新的天蓝色广告注册创建一个db用户。
这是问题所在,数据库中的用户ID是主键,是一个自动递增的数字。
我从访问令牌声明中提取的ID是广告对象标识符GUID。
要使ad b2c用户实体与数据库用户实体相关联,我将必须在users表中创建一个新列AzureObjectId。
问题在于,现在我将不得不不断地进行从访问令牌中提取的AzureObjectId到数据库用户ID之间的转换,因为我访问的其他数据库表和其他内部API都需要一个数据库用户ID。 / p>
解决这个问题的正确方法是什么?
我能想到的是
这两个我都想避免。 是否可以通过数据库用户ID丰富访问令牌?
答案 0 :(得分:1)
我会选择第二个选项,因为它是一次性操作,系统不需要每次都进行转换。
这似乎也是migration scenario。检查样本here
您还需要使用自定义策略的Restful api功能。
在注册过程中,执行一个轻松的技术配置文件,该配置文件将在contoso(您的)服务中调用api来创建用户。 contoso服务将返回新创建的用户的数据库用户ID。此新的userId可用作用户的后续声明,AzureADB2C将使用该扩展名属性创建用户。
另一种方法是我们前面讨论的方法。注册后,服务可以创建用户,并且对于第一个调用,服务可以使用新的数据库用户ID为自己插入声明。
答案 1 :(得分:1)
您可以通过门户网站添加自定义属性,然后选择它们以将其作为声明中的声明返回。
上面的Graph API链接显示了如何以编程方式创建它们。
因此,如果您将数据库用户ID填充到自定义属性中,则可以通过令牌将其返回。