应用程序对象的 authenticationBehaviors 属性允许配置与令牌颁发相关的重大更改行为。 应用程序可以通过启用行为来采用新的重大更改,也可以通过禁用行为来继续使用预先存在的行为。
可以配置以下行为:
- 对基于浏览器的身份验证响应控制 Cross-Origin-Opener-Policy (COOP) 强制。
- 允许或阻止向未经验证的域所有者发布电子邮件声明。
- 启用或禁用延长的 Azure AD Graph 访问权限,直到 2025 年 8 月 31 日,届时 Azure AD Graph 将完全停用。
- 要求多租户应用程序在资源租户中有一个服务主体,作为授权检查的一部分,然后才能向其授予访问令牌。
注意
包括 coopEnforcement) 在内的 authenticationBehaviors 属性 (在全局服务的 Microsoft Graph v1.0 和 beta 版中可用。 coopEnforcement 在国家云部署中不可用。
读取应用程序的 authenticationBehaviors 设置
authenticationBehaviors 属性仅在请求时$select返回。
若要读取租户中所有应用的属性和其他指定属性,请运行以下示例请求。 请求返回响应 200 OK 代码和应用程序对象的 JSON 表示形式,该对象仅显示所选属性。
GET https://graph.microsoft.com/v1.0/applications?$select=id,displayName,appId,authenticationBehaviors
若要只读取单个应用的 authenticationBehaviors 属性,请运行以下示例请求。
GET https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e/authenticationBehaviors
还可以按如下所示使用 appId 属性:
GET https://graph.microsoft.com/v1.0/applications(appId='37bf1fd4-78b0-4fea-ac2d-6c82829e9365')/authenticationBehaviors
控制跨域打开器策略强制执行
coopEnforcement 属性控制应用程序的Microsoft Entra身份验证响应是否包括强制执行的 Cross-Origin-Opener-Policy (COOP) 标头。 COOP 将浏览器窗口与跨域开启器访问隔离开来,并帮助保护基于浏览器的身份验证流。 当每应用 COOP 替代评估可用于请求时,服务应用此每应用设置。
使用弹出式身份验证的应用程序应首先采用与 COOP 兼容的身份验证流。 如果应用程序使用 MSAL.js,请迁移到 MSAL.js v5 或更高版本,并配置其支持的重定向网桥。 有关详细信息,请参阅 从 MSAL 浏览器 v4 迁移到 v5 和在MSAL 浏览器中设置重定向网桥页。 如果 SDK 或托管平台拥有弹出窗口和回调,请更新到兼容的平台版本或向该平台的所有者报告问题。
该属性支持以下值:
-
true:显式对应用程序强制实施 COOP。 -
false:将 COOP 强制作为临时兼容性例外显式禁止。 -
null:删除显式替代并使用服务默认值。
注意
coopEnforcement 仅在全球服务中可用,在国家云部署中不可用。
重要
在将 coopEnforcement 设置为 true之前,测试应用程序的完整身份验证流程,包括弹出窗口关闭和将身份验证结果传递到主机应用程序。 将属性设置为 false 是修正应用程序或拥有平台时的临时兼容性异常;这不是安全修正。 异常不会自动过期。 将属性重置为 null 或设置为 true 修正后。
显式启用 COOP 强制执行
以下示例显式为应用程序启用 COOP 强制。
选项 1
这种在请求 URL 中指定属性的模式允许 仅 更新请求中的指定属性。
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e/authenticationBehaviors
Content-Type: application/json
{
"coopEnforcement": true
}
选项 2
这种在请求正文中指定属性的模式允许你更新同一请求中的其他对等属性。
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e
Content-Type: application/json
{
"authenticationBehaviors": {
"coopEnforcement": true
}
}
如果成功,这些请求将返回响应 204 No Content 。
暂时禁止 COOP 强制执行
以下示例在应用程序所有者修正不兼容的身份验证流时显式禁止 COOP 强制。
选项 1
这种在请求 URL 中指定属性的模式允许 仅 更新请求中的指定属性。
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e/authenticationBehaviors
Content-Type: application/json
{
"coopEnforcement": false
}
选项 2
这种在请求正文中指定属性的模式允许你更新同一请求中的其他对等属性。
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e
Content-Type: application/json
{
"authenticationBehaviors": {
"coopEnforcement": false
}
}
如果成功,这些请求将返回响应 204 No Content 。 COOP Report-Only 标头可能仍存在。 修正应用程序或拥有平台后,将属性 true 设置为受控验证,或将其重置为 null 使用服务默认值。
还原默认服务
以下示例删除显式替代。
选项 1
这种在请求 URL 中指定属性的模式允许 仅 更新请求中的指定属性。
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e/authenticationBehaviors
Content-Type: application/json
{
"coopEnforcement": null
}
选项 2
这种在请求正文中指定属性的模式允许你更新同一请求中的其他对等属性。
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e
Content-Type: application/json
{
"authenticationBehaviors": {
"coopEnforcement": null
}
}
如果成功,这些请求将返回响应 204 No Content 。 要确认重置状态,请使用 $select=id,appId,authenticationBehaviors. 如果应用程序没有其他显式身份验证行为,则 authenticationBehaviors 为 null。 如果配置了另一个身份验证行为,则复杂对象将仍然存在,并且省略 coopEnforcement 。
注意
在当前 beta 版中,如果 coopEnforcement 已经不存在,则另一个重置请求可能会返回 400 Request_BadRequest。 首先读取应用程序,并将省略的属性视为已重置。
阻止向未经验证的域所有者发布电子邮件声明
如 Microsoft 安全通报 Microsoft Entra 应用程序中特权提升的潜在风险中所述,应用切勿将电子邮件声明用于授权目的。 如果应用程序将电子邮件声明用于授权或主要用户标识目的,则会受到帐户和特权提升攻击。 这种未经授权访问的风险在以下情况下尤其明显:
- 当用户对象的 mail 属性包含一个具有未经验证的域所有者的电子邮件地址时
- 对于多租户应用,其中一个租户中的用户可以通过修改其 邮件 属性来提升其访问另一个租户中资源的权限
目前,默认行为是在声明中删除包含未经验证的域所有者的电子邮件地址,单租户应用和之前具有未经验证电子邮件的登录活动的多租户应用除外。 如果你的应用属于上述任一例外,并且你想要删除未经验证的电子邮件地址,请将 authenticationBehaviorstrue 的 removeUnverifiedEmailClaim 属性设置为以下示例所示。 请求会返回 204 No Content 响应代码。
从声明中删除包含未经验证的域所有者的电子邮件地址
选项 1
这种在请求 URL 中指定属性的模式允许 仅 更新请求中的指定属性。
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e/authenticationBehaviors
Content-Type: application/json
{
"removeUnverifiedEmailClaim": true
}
选项 2
这种在请求正文中指定属性的模式允许你更新同一请求中的其他对等属性。
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e
Content-Type: application/json
{
"authenticationBehaviors": {
"removeUnverifiedEmailClaim": true
}
}
接受声明中包含未经验证的域所有者的电子邮件地址
选项 1
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e/authenticationBehaviors
Content-Type: application/json
{
"removeUnverifiedEmailClaim": false
}
选项 2
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e
Content-Type: application/json
{
"authenticationBehaviors": {
"removeUnverifiedEmailClaim": false
}
}
还原默认行为
选项 1
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e/authenticationBehaviors
Content-Type: application/json
{
"removeUnverifiedEmailClaim": null
}
选项 2
PATCH https://graph.microsoft.com/v1.0/applications/03ef14b0-ca33-4840-8f4f-d6e91916010e/
Content-Type: application/json
{
"authenticationBehaviors": {
"removeUnverifiedEmailClaim": null
}
}
允许延长 Azure AD Graph 访问期至 2025 年 8 月 31 日
默认情况下,2024 年 8 月 31 日之后创建的应用程序在向 Azure AD Graph API 发出请求时会收到错误403 Unauthorized,除非它们配置为允许扩展的 Azure AD Graph 访问。 此外,必须配置在 2024 年 8 月 31 日之前创建的现有应用,并向 Azure AD Graph API 发出请求,以允许在 2025 年 2 月 1 日之前扩展 Azure AD Graph 访问。 此扩展访问权限仅在 2025 年 6 月 30 日之前可用,届时 Azure AD Graph 将完全停用。 在此日期之后,所有应用在向 Azure AD Graph API 发出请求时都会收到错误,403 Unauthorized无论其扩展访问配置如何。 有关详细信息,请参阅有关 Azure AD 图形 API 停用的 2024 年 6 月更新。
以下请求演示如何更新应用以启用扩展的 Azure AD Graph 访问权限。 本示例中使用的 ID 是应用程序的对象 ID,而不是应用程序 ID。 请求会返回 204 No Content 响应代码。
选项 1
PATCH https://graph.microsoft.com/v1.0/applications/5c142e6f-0bd3-4e58-b510-8a106704f44f/authenticationBehaviors
Content-Type: application/json
{
"blockAzureADGraphAccess": false
}
选项 2
PATCH https://graph.microsoft.com/v1.0/applications/5c142e6f-0bd3-4e58-b510-8a106704f44f
Content-Type: application/json
{
"authenticationBehaviors": {
"blockAzureADGraphAccess": false
}
}