首页 > 解决方案 > Azure Active Directory B2C - 在数据库中维护用户

问题描述

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

我的第一步是重写frontal API(直接服务于web客户端的API)

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

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

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

为了能够将广告 b2c 用户实体与数据库用户实体相关联,我必须在 users 表中创建一个新列 AzureObjectId。

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

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

  1. 在每次与数据库或其他内部 API 交互期间将 AzureObjectId 转换为数据库用户 ID。
  2. 在我的 API 创建数据库用户后,使用 Azure AD B2C Graph API 向用户添加一个新声明,即数据库用户 ID。

这两个我都想避免。有没有办法用数据库用户 id 来丰富访问令牌?

标签: azureasp.net-coreazure-active-directoryazure-ad-b2c

解决方案


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

更新细节

这似乎也是一个迁移场景在这里检查样品

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

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

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


推荐阅读