azure - Azure Active Directory B2C - 在数据库中维护用户
问题描述
我正在转换一个将其用户存储在数据库(包括凭据)中的旧系统,以使用 Azure AD B2C 进行身份验证。
我的第一步是重写frontal API(直接服务于web客户端的API)
因为许多其他系统和数据库表依赖于 users 表及其列,所以我决定为每个新的 azure 广告注册创建一个 db 用户。
这就是问题所在,数据库中的用户 id 是主键,是一个自动递增的数字。
我从访问令牌声明中提取的 id 是一个广告对象标识符,一个 GUID。
为了能够将广告 b2c 用户实体与数据库用户实体相关联,我必须在 users 表中创建一个新列 AzureObjectId。
问题是现在我必须不断地在从访问令牌中提取的 AzureObjectId 到数据库用户 ID 之间进行转换,因为我访问的其他数据库表和其他内部 API 需要一个数据库用户 ID。
解决这个问题的正确方法是什么?
我能想到的是
- 在每次与数据库或其他内部 API 交互期间将 AzureObjectId 转换为数据库用户 ID。
- 在我的 API 创建数据库用户后,使用 Azure AD B2C Graph API 向用户添加一个新声明,即数据库用户 ID。
这两个我都想避免。有没有办法用数据库用户 id 来丰富访问令牌?
解决方案
我会选择第二种选择,因为它是一次性操作,系统不需要每次都进行转换。
更新细节
您还需要使用自定义策略的Restful api功能。
在注册过程中,执行一个 restful 技术配置文件,它将调用 contoso(您的)服务中的 api 来创建用户。contoso 服务将返回新创建用户的数据库用户 ID。这个新的 userId 可以用作用户的后续声明,AzureADB2C 将使用该扩展属性创建用户。
另一种方法是我们之前讨论过的。注册后,服务可以创建用户,并且对于第一次调用,服务可以使用新的数据库用户 ID 为自己插入声明。
推荐阅读
- javascript - 从 _.map() 返回唯一值
- jquery - 如何手动将 K-Dirty 添加到 Kendo Edit Grid
- python - 使用 Ubuntu 18 不显示 QPixmap
- c# - 考虑到内部/反向/协方差,这是不可能的吗?
- material-ui - Google Maps 上的多个 Poppers 仅显示当前的 OnClick
- python - 从簇中返回面积最大的圆
- php - 当 SUM 用于特定条件时,如何避免 FOREACH 块中的 MySQL 查询?
- python-2.7 - 与另一个夹具一起使用时找不到 PyTest 夹具
- python-3.x - 是否可以将字符串列表保存到 CSV 并再次将其作为(字符串)列表读取?
- php - 从 Laravel 访问 LDAP SSO 用户名