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

用户配置文件属性

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

Microsoft Graph 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>)中使用
名称 日期类型 说明 在 Azure 门户中可用 用于用户流 用于自定义策略
accountEnabled Boolean 用户帐户是已启用还是已禁用:如果已启用帐户,则为“true”,否则为“false” 。 持久化、输出
ageGroup 字符串 用户的年龄组。 可能的值:null、Undefined、Minor、Adult、NotAdult。 持久化、输出
alternativeSecurityId(标识 字符串 来自外部标识提供者的单个用户标识。 输入、持久化、输出
alternativeSecurityIds(标识 备用 securityId 集合 来自外部标识提供者的用户标识集合。 持久化、输出
city 字符串 用户的居住城市.. 最大长度为 128。 持久化、输出
consentProvidedForMinor 字符串 是否为未成年人提供了许可。 允许的值:null、granted、denied 或 notRequired。 持久化、输出
country 字符串 用户的居住国家/地区.. 例如:USUK。 最大长度为 128。 持久化、输出
createdDateTime DateTime 创建用户对象的日期。 只读。 持久化、输出
creationType 字符串 如果用户帐户是作为 Azure Active Directory B2C 租户的本地帐户创建的,则值为 LocalAccount 或 nameCoexistence。 只读。 持久化、输出
dateOfBirth Date 出生日期。 持久化、输出
department 字符串 用户所在部门的名称。 最大长度为 64。 持久化、输出
displayName 字符串 用户的显示名称。 最大长度为 256。 不允许使用 <> 字符。 持久化、输出
facsimileTelephoneNumber1 字符串 用户的业务传真号码。 持久化、输出
givenName 字符串 用户的名字(名)。 最大长度为 64。 持久化、输出
jobTitle 字符串 用户的职务。 最大长度为 128。 持久化、输出
immutableId 字符串 通常用于从本地 Active Directory 迁移的用户的标识符。 持久化、输出
legalAgeGroupClassification 字符串 法定年龄组分类。 基于 ageGroup 和 consentProvidedForMinor 属性计算的只读属性。 允许的值:null、minorWithOutParentalConsent、minorWithParentalConsent、minorNoParentalConsentRequired、notAdult 和 adult。 持久化、输出
legalCountry1 字符串 用于法律目的的国家/地区。 持久化、输出
mailNickName 字符串 用户的邮件别名。 最大长度为 64。 持久化、输出
mobile (mobilePhone) 字符串 用户的主要手机号码。 最大长度为 64。 持久化、输出
netId 字符串 网络 ID。 持久化、输出
objectId 字符串 全局唯一标识符 (GUID)(用户的唯一标识符)。 示例:12345678-9abc-def0-1234-56789abcde。 只读,不可变。 只读 输入、持久化、输出
otherMails 字符串集合 用户的其他电子邮件地址的列表。 示例:[“bob@contoso.com”、“Robert@fabrikam.com”]。 注意:不允许使用强调字符。 是(备用电子邮件) 持久化、输出
password 字符串 创建用户期间用于本地帐户的密码。 持久化
passwordPolicies 字符串 密码策略。 它是由逗号分隔的不同策略名称构成的字符串。 例如,“DisablePasswordExpiration, DisableStrongPassword”。 持久化、输出
physicalDeliveryOfficeName (officeLocation) 字符串 用户营业地点的办公室位置。 最大长度为 128。 持久化、输出
postalCode 字符串 用户邮政地址的邮政编码。 该邮政编码特定于用户所在的国家/地区。 在美国,此属性包含邮政编码。 最大长度为 40。 持久化、输出
preferredLanguage 字符串 用户的首选语言。 首选语言格式基于 RFC 4646。 名称是一个与语言相关的 ISO 639 双小写字母的区域性代码和一个与国家或地区相关的 ISO 3166 双大写字母子区域性代码的组合。 例如:“en-US”或“es-ES”。 持久化、输出
refreshTokensValidFromDateTime (signInSessionsValidFromDateTime) DateTime 在此时间之前颁发的所有刷新令牌无效,使用无效刷新令牌获取新的访问令牌时,应用会收到错误。 在这种情况下,应用需要通过向授权终结点发出请求来获取新的刷新令牌。 只读。 输出
signInNames(标识 字符串 目录中任何类型的本地帐户用户的唯一登录名。 使用此属性可以获取具有登录值的用户,而无需指定本地帐户类型。 输入
signInNames.userName(标识 字符串 目录中本地帐户用户的唯一用户名。 使用此属性可以创建或获取具有特定登录用户名的用户。 在 Patch 操作期间仅在 PersistedClaims 中指定此属性将删除其他类型的 signInNames。 若要添加新的 signInNames 类型,还需要保存现有的 signInNames。 注意:用户名中不允许使用强调字符。 输入、持久化、输出
signInNames.phoneNumber(标识 字符串 目录中本地帐户用户的唯一电话号码。 使用此属性可以创建或获取具有特定登录电话号码的用户。 在 Patch 操作期间仅在 PersistedClaims 中指定此属性将删除其他类型的 signInNames。 若要添加新的 signInNames 类型,还需要保存现有的 signInNames。 输入、持久化、输出
signInNames.emailAddress(标识 字符串 目录中本地帐户用户的唯一电子邮件地址。 使用此属性可以创建或获取具有特定登录电子邮件地址的用户。 在 Patch 操作期间仅在 PersistedClaims 中指定此属性将删除其他类型的 signInNames。 若要添加新的 signInNames 类型,还需要保存现有的 signInNames。 输入、持久化、输出
state 字符串 用户地址中的省/自治区/直辖市。 最大长度为 128。 持久化、输出
streetAddress 字符串 用户营业地点的街道地址。 最大长度为 1024。 持久化、输出
strongAuthentication AlternativePhoneNumber1 字符串 用户的次要电话号码,用于多重身份验证。 持久化、输出
strongAuthenticationEmailAddress1 字符串 用户的 SMTP 地址。 示例:“bob@contoso.com”。此属性在通过用户名策略进行登录时用于存储用户电子邮件地址。 然后,该电子邮件地址将在密码重置流中使用。 此属性中不允许使用强调字符。 持久化、输出
strongAuthenticationPhoneNumber2 字符串 用户的主要电话号码,用于多重身份验证。 持久化、输出
surname 字符串 用户的姓(家族名或姓氏)。 最大长度为 64。 持久化、输出
telephoneNumber(businessPhones 的第一个条目) 字符串 用户营业地点的主要电话号码。 持久化、输出
userPrincipalName 字符串 用户的用户主体名称 (UPN)。 UPN 是用户的 Internet 样式登录名,基于 Internet 标准 RFC 822。 域必须存在于租户的已验证域集合中。 创建帐户时必须使用此属性。 不可变。 输入、持久化、输出
usageLocation 字符串 由于法律要求而获分配许可证的用户需要检查国家/地区的服务可用性。 不可为 Null。 双字母国家/地区代码(ISO 标准 3166)。 例如,USJPGB 持久化、输出
userType 字符串 一个字符串值,可用于分类目录中的用户类型。 值必须为 Member。 只读。 只读 持久化、输出
userState (externalUserState)3 字符串 仅适用于 Microsoft Entra B2B 帐户,指示邀请是 PendingAcceptance 还是 Accepted。 持久化、输出
userStateChangedOn (externalUserStateChangeDateTime)2 DateTime 显示 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 Graph API 中,本地标识和联合标识都存储在 objectIdentity 类型的用户 identities 特性中。 identities 集合表示用于登录到用户帐户的一组标识。 此集合使用户能够使用其关联的任何标识登录到用户帐户。 identities 属性最多可以包含 10 个 objectIdentity 对象。 每个对象包含以下属性:

名称 Type 说明
signInType string 指定目录中的用户登录类型。 对于本地帐户:emailAddressemailAddress1emailAddress2emailAddress3userName,或所需的任何其他类型。 社交帐户必须设置为 federated
颁发者 string 指定标识的颁发者。 例如,对于本地帐户(signInType 不是 federated),此属性是本地 B2C 租户的默认域名,例如 contoso.onmicrosoft.com。 对于社交标识(其中 signInType 为 federated),该值是颁发者的名称,例如 facebook.com
issuerAssignedId string 指定由颁发者分配给用户的唯一标识符。 issuerissuerAssignedId 的组合在租户中必须唯一。 对于本地帐户,当 signInType 设置为 emailAddressuserName 时,它表示用户的登录名。
如果 signInType 设置为:
  • emailAddress(或以 emailAddress 开头,例如 emailAddress1),则 issuerAssignedId 必须是有效的电子邮件地址
  • userName(或任何其他值),则 issuerAssignedId 必须是有效的电子邮件地址本地部分
  • federated,则 issuerAssignedId 表示联合帐户唯一标识符

以下 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 应用程序,则将删除所有用户的这些扩展属性及其包含的任何数据。
  • 如果应用程序删除了某个扩展属性,则将从所有用户帐户中删除该属性,同时会删除值。

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

  • ApplicationClientIDb2c-extensions-app 应用程序的应用程序(客户端)ID。 了解如何查找扩展应用
  • AttributeName 是扩展属性的名称。

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

"extension_831374b3bd5041bfaa54263ec9e050fc_loyaltyNumber": "212342"

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

类型 备注
Boolean 可能的值:“true”或“false” 。
DateTime 必须以 ISO 8601 格式指定。 值存储在 UTC 中。
Integer 32 位值。
字符串 最多 256 个字符。

后续步骤

了解有关扩展属性的详细信息: