你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

用户配置文件属性

重要

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息

Azure Active Directory B2C (Azure AD B2C) 目录用户配置文件附带一组内置属性,例如给定名称、姓氏、城市、邮政编码和电话号码。 可以使用自己的应用程序数据扩展用户配置文件,而无需外部数据存储。

Microsoft 图形 API 支持可与 Azure 一起使用的大多数属性,这篇文章介绍了 Azure AD B2C 支持的用户配置文件属性。 它还标记了不受 Microsoft Graph 支持的属性,以及 Azure AD B2C 不应使用的 Microsoft Graph API 属性。

重要

不应使用内置或扩展属性来存储敏感数据,例如帐户凭据、政府标识号、持卡人数据、财务帐户数据、医疗保健信息或敏感信息。

还可以与外部系统集成。 例如,可以使用 Azure AD B2C 进行身份验证,但将外部客户关系管理(CRM)或客户忠诚数据库委托为客户数据的权威来源。 有关详细信息,请参阅远程配置文件解决方案。

Microsoft Entra 用户资源类型

Azure AD B2C 目录用户配置文件支持下表中列出的 用户资源类型 属性。 它提供有关每个属性的以下信息:

  • Azure AD B2C 使用的属性名称(如果不同,后面的括号中会包含 Microsoft Graph 名称)
  • 属性数据类型
  • 属性说明
  • 属性是否在 Azure 门户中可用
  • 属性是否可以在用户流中使用
  • 属性是否可以在自定义策略中的Microsoft Entra ID 技术配置文件中使用,以及在哪个部分(<InputClaims>、<OutputClaims>或<PersistedClaims>)
名称 数据类型 DESCRIPTION 在 Azure 门户中可用 在用户流中使用 在自定义策略中使用
帐户已启用 布尔型 用户帐户是启用还是禁用:如果启用该帐户,则为 true ,否则为 false 是的 持久化、输出
年龄组 字符串 用户所在的年龄组。 可能的值:null、Undefined、Minor、Adult、NotAdult。 是的 持久化、输出
alternativeSecurityId(标识 字符串 来自外部标识提供者的单个用户标识。 输入、持久化、输出
alternativeSecurityIds(标识 备用 securityId 集合 来自外部标识提供者的用户标识的集合。 持久化、输出
城市 字符串 用户的居住城市。 最大长度 128。 是的 是的 持久化、输出
为未成年人提供的同意书 字符串 是否为未成年人提供了同意。 允许的值:空值、已授予、已拒绝或不需要。 是的 持久化、输出
国家 字符串 用户的居住国家/地区。 例如: 美国英国。 最大长度 128。 是的 是的 持久化、输出
createdDateTime 日期/时间 创建用户对象的日期。 只读。 持久化、输出
creationType 字符串 如果用户帐户是作为 Azure Active Directory B2C 租户的本地帐户创建的,则值为 LocalAccount 或 nameCoexistence。 只读。 持久化、输出
出生日期 日期 出生日期。 持久化、输出
部门 字符串 用户在其中工作的部门的名称。 最大长度 64。 是的 持久化、输出
displayName 字符串 用户的显示名称。 最大长度 256。 是的 是的 持久化、输出
传真电话号码1 字符串 用户的商务传真机的电话号码。 是的 持久化、输出
givenName 字符串 用户的给定名称(名字)。 最大长度 64。 是的 是的 持久化、输出
职位名称 字符串 用户的职务。 最大长度 128。 是的 是的 持久化、输出
不可变 Id 字符串 通常用于从本地 Active Directory 迁移的用户的标识符。 持久化、输出
legalAgeGroup分类 字符串 法定年龄组分类。 只读,并且基于 ageGroup 和 consentProvidedForMinor 属性计算。 允许的值:null、minorWithOutParentalConsent、minorWithParentalConsent、minorNoParentalConsentRequired、notAdult 和 adult。 是的 持久化、输出
合法国家/地区1 字符串 出于法律目的的国家/地区。 持久化、输出
mailNickName(邮件昵称) 字符串 用户的邮件别名。 最大长度 64。 持久化、输出
mobile (移动电话) 字符串 用户的主要移动电话电话号码。 最大长度 64。 是的 持久化、输出
netId 字符串 Net ID。 持久化、输出
对象 ID 字符串 全局唯一标识符(GUID),它是用户的唯一标识符。 示例:12345678-9abc-def0-1234-56789abcde。 只读,不可变。 只读 是的 输入、持久化、输出
其他邮件 字符串集合 用户的其他电子邮件地址列表。 示例:[“”、“bob@contoso.com”Robert@fabrikam.com]。 注意:不允许重音字符。 是(备用电子邮件) 持久化、输出
密码 字符串 创建用户期间本地帐户的密码。 持久化
密码策略 字符串 密码策略。 它是由以逗号分隔的不同策略名称组成的字符串。 例如,“DisablePasswordExpiration, DisableStrongPassword”。 持久化、输出
实际递送办公室名称(办公室位置) 字符串 用户业务地点中的办公室位置。 最大长度 128。 是的 持久化、输出
邮政编码 字符串 用户的邮政编码。 邮政编码特定于用户的国家/地区。 在美国,此属性包含邮政编码。 最大长度 40。 是的 持久化、输出
首选语言 字符串 用户的首选语言。 首选语言格式基于 RFC 4646。 该名称是与语言关联的 ISO 639 双字母小写区域性代码和与国家或地区关联的 ISO 3166 双字母大写子区域性代码的组合。 例如: en-USes-ES 持久化、输出
refreshTokensValidFromDateTime (signInSessionsValidFromDateTime) 日期/时间 在此时间之前颁发的任何刷新令牌都无效,应用程序在使用无效刷新令牌获取新的访问令牌时收到错误。 在这种情况下,应用程序需要通过向授权终结点发出请求来获取新的刷新令牌。 只读。 输出
signInNames(标识 字符串 目录中任何类型的本地帐户用户的唯一登录名。 使用此属性可以获取具有登录值的用户,而无需指定本地帐户类型。 输入
signInNames.userName(标识 字符串 目录中本地帐户用户的唯一用户名。 使用此属性创建或获取具有特定登录用户名的用户。 在执行 Patch 操作期间,在 PersistedClaims 中单独指定此属性会删除其他类型的 signInNames。 如果要添加新类型的 signInNames,则还需要保留现有的 signInNames。 注意:不允许在用户名中使用重音字符。 输入、持久化、输出
signInNames.phoneNumber(标识 字符串 目录中本地帐户用户的唯一电话号码。 使用此属性创建或获取具有特定登录电话号码的用户。 在执行 Patch 操作期间,在 PersistedClaims 中单独指定此属性会删除其他类型的 signInNames。 如果要添加新类型的 signInNames,则还需要保留现有的 signInNames。 输入、持久化、输出
signInNames.emailAddress(标识 字符串 目录中本地帐户用户的唯一电子邮件地址。 使用此属性创建或获取具有特定登录电子邮件地址的用户。 在执行 Patch 操作期间,在 PersistedClaims 中单独指定此属性会删除其他类型的 signInNames。 如果要添加新类型的 signInNames,则还需要保留现有的 signInNames。 输入、持久化、输出
字符串 用户地址中的州或省。 最大长度 128。 是的 是的 持久化、输出
streetAddress 地址 字符串 用户的营业地点的街道地址。 最大长度 1024。 是的 是的 持久化、输出
strongAuthentication AlternativePhoneNumber1 字符串 用于多重身份验证的用户的辅助电话号码。 是的 持久化、输出
strongAuthenticationEmailAddress1 字符串 用户的 SMTP 地址。 示例:“bob@contoso.com”此属性用于使用用户名策略登录,以存储用户电子邮件地址。 然后,该电子邮件地址将在密码重置流中使用。 此属性中不允许使用重音字符。 是的 持久化、输出
strongAuthentication电话号码2 字符串 用于多重身份验证的用户的主要电话号码。 是的 持久化、输出
字符串 用户的姓氏(姓氏或姓氏)。 最大长度 64。 是的 是的 持久化、输出
telephoneNumber(businessPhones 的第一个条目) 字符串 用户业务地点的主要电话号码。 是的 持久化、输出
userPrincipalName(“用户主体名称”) 字符串 用户的用户主体名称 (UPN)。 UPN 是基于 Internet 标准 RFC 822 的用户的 Internet 样式登录名。 域必须存在于租户的已验证域集合中。 创建帐户时,此属性是必需的。 不可变。 输入、持久化、输出
usageLocation 字符串 由于法律要求检查国家/地区的服务可用性,需要为用户分配许可证。 不可为 null。 一个两个字母国家/地区代码(ISO 标准 3166)。 例如 ,USJPGB 是的 持久化、输出
用户类型 字符串 可用于对目录中的用户类型进行分类的字符串值。 值必须为 Member。 只读。 只读 持久化、输出
用户状态(外部用户状态)3 字符串 仅适用于 Microsoft Entra B2B 帐户,并指示邀请状态为“PendingAcceptance”或“Accepted”。 持久化、输出
userStateChangedOn (externalUserStateChangeDateTime)3 日期/时间 显示 UserState 属性的最新更改的时间戳。 持久化、输出

1 Microsoft Graph 不支持
2 有关更多信息,请参阅 MFA 电话号码属性
3 不应与 Azure AD B2C 一起使用

必需属性

若要在 Azure AD B2C 目录中创建用户帐户,请提供以下必需属性:

显示名称属性

displayName这个名称将在 Azure 门户的用户管理中显示给用户,并且包含在 Azure AD B2C 返回给应用程序的访问令牌中。 此属性是必需的。

标识属性

客户帐户(可以是使用者、合作伙伴或公民)可以与以下标识类型相关联:

  • 本地 标识 - 用户名和密码存储在 Azure AD B2C 目录中。 我们通常将这些标识称为“本地帐户”。
  • 联合 标识 - 也称为 社交企业 帐户,用户的标识由联合标识提供者(如 Facebook、Microsoft、ADFS 或 Salesforce)管理。

具有客户帐户的用户可以使用多个标识登录。 例如,用户名、电子邮件、员工 ID、政府 ID 等。 单个帐户可以有多个具有相同密码的本地和社交标识。

在 Microsoft 图形 API 中,本地标识和联合标识都存储在用户 identities 属性中,该属性的类型为 objectIdentity。 该 identities 集合表示用于登录到用户帐户的一组标识。 此集合使用户能够使用其任何关联的标识登录到用户帐户。 标识属性最多可以包含 10 个 objectIdentity 对象。 每个对象包含以下属性:

名称 类型 DESCRIPTION
signInType 字符串 指定目录中的用户登录类型。 对于本地帐户:emailAddressemailAddress1emailAddress2emailAddress3userName,或者其他你喜欢的任何类型。 社交帐户必须设置为 federated
发行人 字符串 指定身份的颁发者。 对于本地帐户(其中 signInType 不是 federated),此属性是本地 B2C 租户默认域名,例如 contoso.onmicrosoft.com。 对于社交标识(其中 signInTypefederated),值是颁发者的名称,例如 facebook.com
issuerAssignedId 字符串 指定颁发者分配给用户的唯一标识符。 issuer 和 issuerAssignedId 的组合在租户中必须唯一。 对于本地帐户,当 signInType 设置为 emailAddressuserName表示用户的登录名称时。
signInType 设置为:
  • emailAddress(或以 emailAddress 开头,例如 emailAddress1),则 issuerAssignedId 必须是有效的电子邮件地址
  • userName(或任何其他值),则 issuerAssignedId 必须是有效的电子邮件地址本地部分
  • federatedissuerAssignedId 表示联合帐户的唯一标识符

以下 JSON 代码片段显示了 Identities 属性、具有登录名称的本地帐户标识、登录的电子邮件地址以及社交标识。

"identities": [
  {
    "signInType": "userName",
    "issuer": "contoso.onmicrosoft.com",
    "issuerAssignedId": "johnsmith"
  },
  {
    "signInType": "emailAddress",
    "issuer": "contoso.onmicrosoft.com",
    "issuerAssignedId": "jsmith@yahoo.com"
  },
  {
    "signInType": "federated",
    "issuer": "facebook.com",
    "issuerAssignedId": "5eecb0cd"
  }
]

对于联合标识,根据标识提供者, issuerAssignedId 是每个应用程序或开发帐户给定用户的唯一值。 使用社交提供程序或同一开发账户中其他应用程序指定的相同应用程序 ID 配置 Azure AD B2C 策略。

密码配置文件属性

对于本地标识,需要 passwordProfile 属性,并包含用户的密码。 该 forceChangePasswordNextSignIn 属性指示用户在下次登录时是否必须重置密码。 若要处理强制密码重置,请使用 设置强制密码重置流中的说明。

对于联合(社交)标识,不需要 passwordProfile 属性。

"passwordProfile" : {
    "password": "password-value",
    "forceChangePasswordNextSignIn": false
  }

密码策略属性

Azure AD B2C 密码策略(适用于本地帐户)基于Microsoft Entra ID 强密码强度 策略。 Azure AD B2C 注册或登录和密码重置策略需要此强密码强度,并且不会使密码过期。

在用户迁移方案中,如果要迁移的帐户的密码强度比 Azure AD B2C 强制实施的 强密码强度 要弱,则可以禁用强密码要求。 若要更改默认密码策略,请将 passwordPolicies 属性设置为 DisableStrongPassword. 例如,可以按如下所示修改已创建的用户请求:

"passwordPolicies": "DisablePasswordExpiration, DisableStrongPassword"

MFA 电话号码属性

使用手机进行多重身份验证(MFA)时,移动电话用于验证用户身份。 若要以编程方式添加新的电话号码、更新获取或删除电话号码,请使用 MS Graph API 电话身份验证方法

在 Azure AD B2C 自定义策略中,电话号码可通过 strongAuthenticationPhoneNumber 声明类型获得。

扩展属性

每个面向客户的应用程序都对要收集的信息具有独特的要求。 Azure AD B2C 租户附带了一组存储在属性中的内置信息,例如名字、姓氏和邮政编码。 使用 Azure AD B2C,可以扩展存储在每个客户帐户中的属性集。 有关详细信息,请参阅 在 Azure Active Directory B2C 中添加用户属性和自定义用户输入

扩展属性扩展目录中用户对象的 架构 。 扩展属性只能在应用程序对象上注册,即使它们可能包含用户的数据。 扩展属性会附加到名为 b2c-extensions-app 的应用程序。 请不要修改此应用程序,因为 Azure AD B2C 使用它来存储用户数据。 可以在 Microsoft Entra 应用注册下找到此应用程序。 详细了解 Azure AD B2Cb2c-extensions-app

注释

  • 最多可将 100 个扩展属性写入任何用户帐户。
  • 如果删除 b2c-extensions-app 应用程序,则会从所有用户中删除这些扩展属性以及它们包含的任何数据。
  • 如果应用程序删除了扩展属性,则会从所有用户帐户中删除该属性,并删除这些值。

Microsoft图形 API 中的扩展属性是使用约定 extension_ApplicationClientID_AttributeName命名的,其中:

用于创建扩展属性名称的应用程序 (客户端)ID 不包括连字符。 例如:

"extension_831374b3bd5041bfaa54263ec9e050fc_loyaltyNumber": "212342"

在架构扩展中定义属性时,支持以下数据类型:

类型 注解
布尔型 可能的值: truefalse
日期/时间 必须以 ISO 8601 格式进行指定。 该值以 UTC 格式存储。
整数 32 位值。
字符串 最多 256 个字符。

详细了解扩展属性: