在 Cosmos 中存储 Azure AD 用户对象 ID 是否安全?

Is it secure to store Azure AD user object id in Cosmos?

我正在构建一个网站,该网站使用 Azure AD B2B 对尝试登录我网站的用户进行身份验证。

目前,管理用户的要求超出了 Azure AD 的能力 - 这意味着我可能必须使用一些外部存储来进行访问,例如管理我无法在 AAD 中管理的用户层次结构和其他复杂的用户逻辑。 (例如,这个外部存储可以是 Cosmos DB)

根据我的要求,我推断在 cosmos 中只存储 Azure AD 用户对象 ID 就足够了——也就是说,没有直接的用户机密。

然而,我担心这是否被认为是最佳做法 - 如果外部恶意方从我的数据库中获取用户 ID 是否会带来风险?

如果是这样,理想情况下我将如何在外部商店中扩展 Azure AD 逻辑?

将 Azure AD 用户 ID 存储在数据库中是很正常的。 即,对象 ID 或主题声明。

对象 ID 可用于 retrieve/update 通过 MS Graph API 的用户,但这需要他们使用 Graph API 在您的 Azure AD 租户中注册应用程序写权限。那时,该应用程序可以通过任何方式从您的租户那里获取用户列表,因此拥有对象 ID 不会给他们带来任何优势。

如果你真的很偏执,不需要在Graph中识别用户API,你可以存储主题(子)声明值。 它在您的应用程序中是独一无二的,因此与任何其他应用程序无关。 当用户再次登录您的应用时,它只会识别同一用户。