本文帮助你使用 Microsoft 标识平台的 ID 令牌、访问令牌和安全令牌将安全性构建到应用程序中。 其中介绍了可以在Microsoft Entra令牌中接收的信息,以及如何对其进行自定义。 这是独立软件开发人员(ISV)如何构建和优化其 Microsoft Entra ID应用程序的一系列文章中的第五篇文章。 在此系列中,可以了解有关以下主题的详细信息:
- Microsoft Entra ID面向独立软件开发人员介绍如何使用此基于云的标识和访问管理服务,使员工能够使用应用程序访问资源。
- 在Microsoft Entra ID生态系统中,建立应用程序描述了如何使用Microsoft Entra 管理中心或Microsoft Graph应用程序编程接口(API)来在Microsoft Entra ID租户中注册应用程序。
- 应用程序和用户身份验证介绍了应用程序如何使用 Microsoft Entra ID 对用户和应用程序进行身份验证。
- 处理应用程序、资源和工作负载的授权讨论在以下情况下的授权:个人用户与应用程序交互并指导应用程序时、API 代表用户的场景,及应用程序或服务独立运行时。
连接到 Microsoft Entra ID 的应用程序的主要操作是请求和处理令牌。 作为开发人员,您可以自定义 Microsoft Entra ID 发送给您的委派权限应用或 API 的令牌。 你不能自定义工作负载令牌。
如果应用程序实现 OpenID Connect (OIDC) 并请求 ID 令牌,则可以自定义应用的 ID 令牌。 如果实现 API,则可以自定义调用 API 的应用接收的访问令牌。 应用程序无法自定义它收到的用于授权应用访问 API 的访问令牌。
ISV 的主要令牌自定义方法是将可选声明添加到应用注册中的令牌。 可选声明参考列出了可用的可选声明。
对于多租户应用,可选声明可供每个租户使用。 可以将 API 访问令牌配置为包含可选的 onprem_sid 声明,以包含用户的本地安全标识声明。 虽然可以配置可选声明,但应用程序必须始终处理令牌不包含配置的可选声明的情况。 例如,用户可以是一个仅使用 Microsoft Entra ID 的用户,并且没有本地安全标识符。 在这种情况下,Microsoft Entra ID不包括令牌中的可选声明。 Microsoft Entra ID不返回具有空 (“”) 值的声明。
组声明是需要特殊处理的可选声明。 应用或 API 可以在令牌中包含用户的安全组和嵌套组,或者在组声明中包含具有发布列表的安全组和嵌套组。 应用程序可以使用 wids(适用于整个租户的角色)声明将用户的目录角色包含在令牌中。 将所有用户的群组和/或通讯组列表都包括在内可能会导致令牌中没有任何群组或通讯组列表。
令牌大小限制组声明中的总条目数,OAuth 2.0 应用为 200 个,SAML 应用为 150 个,使用隐式授权作为混合流一部分的应用为 6 个。 当组过多时,令牌会包含一个关于组超额的声明。 如果令牌包含组超限声明,请回退到 call Microsoft Graph 以获取用户的组。 由于你无法知道用户何时是过多组的成员,因此始终包括为应用中用户的组成员身份调用Microsoft Graph的能力。 建议使用 Microsoft Graph,而不是由于Microsoft Graph代码要求而使用组声明。
为了避免组超额,请将组声明配置为仅包括应用程序向其分配的组。 使用此方法时,组声明仅包括当用户是组成员时分配给应用或 API 的组(不支持嵌套组)。 用户必须是应用分配的组的直接成员。
避免群组超额使用的另一种方法是使用角色代替群组。 可以为令牌中收到的应用程序或 API 配置角色。 IT 管理员可以将组分配给您在具有 P1 或更高级别许可的 Microsoft Entra ID 租户中定义的角色。 分配后,您的令牌将包括一个角色声明,其中包含与用户分配角色关联的应用程序,或基于用户组成员身份分配的角色。
评估使用组或角色的权衡。 对于 ISVs,我们建议使用角色而非组。
后续步骤
- Microsoft Entra ID面向独立软件开发人员介绍如何使用此基于云的标识和访问管理服务,使员工能够使用应用程序访问资源。
- Microsoft Entra ID生态系统中的Establish 应用程序介绍了如何使用 Microsoft Entra 管理中心或Microsoft Graph API在Microsoft Entra ID租户中注册应用。
- 应用程序和用户身份验证介绍了应用程序如何使用 Microsoft Entra ID 对用户和应用程序进行身份验证。
- 授权应用程序、资源和工作负载讨论当个人与应用程序交互并指导应用程序时、API 代表用户运行时以及应用程序或服务独立运行时的授权。