注册 SaaS 应用程序

本文介绍如何使用 Microsoft Azure 门户注册 SaaS 应用程序,以及如何获取发布者的访问令牌(Microsoft Entra 访问令牌)。 发布者将使用此令牌通过调用 SaaS 履行 API 对 SaaS 应用程序进行身份验证。 履行 API 使用 OAuth 2.0 客户端凭据授予 Microsoft Entra ID (v1.0) 终结点上的流,以发出服务到服务访问令牌请求。

Azure 市场不会对你的 SaaS 服务用于最终用户的身份验证方法施加任何限制。 下面的流仅用于在 Azure 市场 中对 SaaS 服务进行身份验证。

有关 Microsoft Entra ID(Active Directory)的详细信息,请参阅 什么是身份验证

注册 Microsoft Entra ID 保护的应用

任何想要使用 Microsoft Entra ID 功能的应用程序都必须首先在 Microsoft Entra 租户中注册。 此注册过程涉及为 Microsoft Entra 提供有关应用程序的一些详细信息。 若要使用 Azure 门户注册新应用程序,请执行以下步骤:

  1. 登录 Azure 门户

  2. 如果帐户有权访问多个租户,请在右上角选择该帐户。 然后将门户会话设置为所需的 Microsoft Entra 租户。

  3. 在左侧导航窗格中,选择 Microsoft Entra ID 服务,选择应用注册,然后选择“新建应用程序注册”。

    SaaS Entra 应用注册屏幕的屏幕截图。

  4. 在“创建”页上,输入应用程序的注册信息:

    • 名称:输入有意义的应用程序名称

    • 支持的帐户类型

      仅选择此组织目录中的帐户(单租户)。

  5. 完成后,选择“注册”。 Microsoft Entra ID 为新应用程序分配唯 一的应用程序 ID 。 必须注册一个仅访问 API 的应用,并将其注册为单个租户

  6. 若要创建客户端密码,请导航到“证书和机密”页,然后选择“+ 新建客户端密码”。 请确保复制该机密值,以便在代码中使用。

Microsoft Entra 应用 ID 与发布者 ID 相关联,因此请确保在所有产品/服务中使用相同的应用 ID

注意

如果发布者在合作伙伴中心有两个或更多不同的帐户,则 Microsoft Entra 应用注册详细信息只能在一个帐户中使用。 不支持使用相同的租户 ID,不支持在不同发布者帐户下为产品/服务配对应用 ID 对。

注意

必须在用于创建令牌的租户中创建已注册应用的服务主体。 请参阅本文档 ,了解如何为应用注册创建服务主体。

如何获取发布者的授权令牌

注册应用程序后,可以编程方式请求发布者的授权令牌(使用 Azure AD v1 终结点的 Microsoft Entra 访问令牌)。 发布者在调用各种 SaaS 履行 API 时必须使用此令牌。 此令牌仅在 1 小时内有效。

有关这些令牌的详细信息,请参阅 Microsoft Entra 访问令牌。 在以下流中,使用了 V1 终结点令牌。

使用 HTTP POST 获取令牌

HTTP 方法

过帐

请求 URL

https://login.microsoftonline.com/*{tenantId}*/oauth2/token

URI 参数
参数名称 必须 说明
tenantId True 已注册的 Microsoft Entra 应用程序的租户 ID。
请求标头
标头名称 必须 说明
content-type True 与请求关联的内容类型。 默认值为 application/x-www-form-urlencoded
请求正文
属性名称 必须 说明
grant_type True 授权类型。 使用 "client_credentials"
client_id True 与 Microsoft Entra 应用关联的客户端/应用标识符。
client_secret True 与 Microsoft Entra 应用关联的机密。
resource True 为其请求令牌的目标资源。 使用 20e940b3-4c77-4b0b-9a53-9e16a1b010a7,因为在本例中市场 SaaS API 始终是目标资源。
响应
名称 Type 说明
200 OK TokenResponse 请求成功。
TokenResponse

示例响应:

{
      "token_type": "Bearer",
      "expires_in": "3600",
      "ext_expires_in": "0",
      "expires_on": "15251…",
      "not_before": "15251…",
      "resource": "20e940b3-4c77-4b0b-9a53-9e16a1b010a7",
      "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayIsImtpZCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayJ9…"
  }
元素 说明
access_token 此元素是 <access_token>,在调用所有 SaaS 履行和市场计量 API 时,该值将作为授权参数传递。 调用受保护 REST API 时,该令牌将作为“持有者”令牌嵌入在 Authorization 请求标头字段中,使 API 能够对调用方进行身份验证。
expires_in 访问令牌在过期之前保持有效的秒数,从颁发时间开始算起。 可在令牌的 iat 声明中找到颁发时间。
expires_on 访问令牌过期的时间范围。 该日期表示为自“1970-01-01T0:0:0Z UTC”开始的秒数(对应于令牌的 exp 声明)。
not_before 访问令牌生效且可被接受的时间范围。 该日期表示为自“1970-01-01T0:0:0Z UTC”开始的秒数(对应于令牌的 nbf 声明)。
resource 请求访问令牌时所针对的资源,与请求的 resource 查询字符串参数匹配。
token_type 令牌的类型,这是一个“持有者”访问令牌,意味着资源可向此令牌的持有者授予访问权限。

后续步骤

Microsoft Entra ID 保护的应用现在可以使用 SaaS 履行订阅 API 版本 2SaaS 履行操作 API 版本 2

视频教程