多重身份验证要求

我们已要求 Microsoft Advertising 联机进行多重身份验证。 多重身份验证是一个安全过程,要求你以两种不同的方式验证身份。

重要

从 2022 年 6 月 1 日开始,我们逐步要求通过第三方应用程序登录的客户进行 多重身份验证 ,以使用必应广告 API、内容 API 和酒店 API。

必须使用新msads.manage范围更新应用程序才能获得用户同意。 所有应用程序开发人员都必须采取措施才能使用新范围。

msads.manage 范围 需要应用程序的所有用户的续订同意。 无论用户是否启用了多重身份验证,都必须使用新 msads.manage 范围提示用户同意。 这可确保他们在向应用程序授予许可时提供第二种形式的标识或证明。

必需的操作

必须更新应用程序,并通过 Microsoft 标识平台 终结点使用范围提示用户同意msads.manage。 所有 Microsoft Advertising 开发人员都必须采取措施才能使用新范围。

对于每个 API 请求,我们将检查访问令牌,以确保用户通过新msads.manage范围授予同意。 强制实施多重身份验证后,将不接受预配的任何访问令牌。

建议尽快进行必要的更改。

我们还建议通知和指导应用程序的用户 设置 MFA ,以便在他们授予任何应用程序的权限时需要第二次证明。 对于 Microsoft 广告要求,他们打开 MFA 是不够的。 无论采用哪种方式,都必须通过提示范围 msads.manage 来获得用户同意。

强制实施后

强制实施 MFA 后,我们将仅代表通过msads.manageMicrosoft 标识平台终结点上的范围向应用程序授予同意的用户对访问令牌进行身份验证。

  • 强制实施 MFA 之前,Microsoft 标识平台终结点支持ads.manage范围。 将不再接受通过 ads.manage 范围为用户获取的访问令牌。

  • 强制实施 MFA 之前,Live Connect终结点支持范围bingads.manageLive Connect终结点已弃用,不再受支持。 将不再接受通过 bingads.manage 范围为用户获取的访问令牌。

SDK 支持

从必应广告 SDK (.NET、Java、Python 和 PHP) 版本 13.0.10 开始,支持新 msads.manage 范围。

默认使用新 msads.manage 范围。 为了向后兼容,在强制实施日期之前, ads.manage 可以使用 或 bingads.manage 范围和简短的解决方法。

var oAuthDesktopMobileAuthCodeGrant = new OAuthDesktopMobileAuthCodeGrant(
    Settings.Default["ClientId"].ToString(),
    apiEnvironment,
    OAuthScope.ADS_MANAGE // temporary workaround; remove or use MSADS_MANAGE instead
);
OAuthDesktopMobileAuthCodeGrant oAuthDesktopMobileAuthCodeGrant = new OAuthDesktopMobileAuthCodeGrant(
    ClientId, 
    ApiEnvironment,
    OAuthScope.ADS_MANAGE // temporary workaround; remove or use MSADS_MANAGE instead
);
$authentication = (new OAuthDesktopMobileAuthCodeGrant())
    ->withClientId(ClientId)
    ->withEnvironment(ApiEnvironment)
    ->withOAuthScope(OAuthScope::ADS_MANAGE); // temporary workaround; remove or use MSADS_MANAGE instead
oauth_web_auth_code_grant = OAuthDesktopMobileAuthCodeGrant(
    client_id=CLIENT_ID,
    env=ENVIRONMENT,
    oauth_scope="ads.manage" # temporary workaround; remove or use "msads.manage" instead
)

示例场景

下面是可能适用于业务的示例方案。

示例:通过使用不同的范围刷新来获取新的访问令牌

访问令牌表示用户代表其执行操作的权限,但权限有限,具体取决于范围。 请求同意管理其帐户时,请将范围参数设置为 ads.managemsads.manage。 你确实需要一个用户访问令牌,该令牌对范围定义的任何操作具有权限。

重要

强制执行多重身份验证后,仅当通过 msads.manage 范围预配或刷新访问令牌时,才会接受访问令牌。 可以通过 ads.manage 继续刷新令牌,但必应广告 API 将不接受它们。

若要确认在强制实施多重身份验证时是否接受访问令牌,可以检查响应范围。 如果范围包括 msads.manage ,则将接受它。

例如,假设用户当前同意应用程序通过 ads.managemsads.manage 范围管理 其帐户。 他们可能在上个月通过 ads.manage 授予同意,然后通过 msads.manage 本月授予同意。

如果使用 ads.manage 刷新令牌,则令牌刷新响应将包括 ads.manage 范围。 强制执行多重身份验证后,将不接受“MyAccessToken-1”。

{
    "token_type":"Bearer",
    "scope":"https://ads.microsoft.com/ads.manage",
    "expires_in":3600,
    "ext_expires_in":3600,
    "access_token":"MyAccessToken-1",
    "refresh_token":"MyRefreshToken-1"
}

如果使用 msads.manage 刷新令牌,令牌刷新响应将同时包括 ads.managemsads.manage 作用域。 强制执行多重身份验证后,将接受“MyAccessToken-2”。

{
    "token_type":"Bearer",
    "scope":"https://ads.microsoft.com/msads.manage https://ads.microsoft.com/ads.manage",
    "expires_in":3600,
    "ext_expires_in":3600,
    "access_token":"MyAccessToken-2",
    "refresh_token":"MyRefreshToken-2"
}

如果尝试使用用户当前未同意的任何范围刷新令牌,将返回 invalid_grant 错误。

{
    "error":"invalid_grant",
    "error_description":"AADSTS70000: The request was denied because one or more scopes requested are unauthorized or expired. The user must first sign in and grant the client application access to the requested scope."
}

另请参阅

OAuth 常见问题解答请求用户同意