针对商业市场中的免费或试用版 SaaS 产品/服务构建登陆页

本文将指导你完成为 Microsoft 商业市场中将销售的免费或试用版 SaaS 应用构建登录页的过程。

重要

截至 2023 年 6 月 30 日,已弃用 Azure Active Directory (Azure AD) Graph。 今后,我们在 Azure AD Graph 中没有进一步的投资。 除了与安全相关的修补程序之外,Azure AD Graph API 没有 SLA 或维护承诺。 对新特性和功能的投资将仅在 Microsoft Graph 中进行。

我们将以增量步骤停用 Azure AD Graph,以便有足够的时间将应用程序迁移到 Microsoft Graph API。 稍后我们将宣布,我们将阻止使用 Azure AD Graph 创建任何新应用程序。

若要了解详细信息,请参阅 重要说明:Azure AD Graph 停用和 Powershell 模块弃用

概述

可将登陆页视为软件即服务(SaaS) 产品/服务的“大厅”。 客户选择获取应用后,商业市场会将他们定向到登录页以激活和配置其 SaaS 应用程序订阅。 创建服务型软件 (SaaS) 套餐时,可以在合作伙伴中心中选择是否通过 Microsoft 进行销售。 如果只想在 Microsoft 商业市场中列出套餐,而不想通过 Microsoft 销售,则可以指定潜在客户与套餐进行交互的方式。 如果启用“立即获取(免费)”或“免费试用”列表选项,则必须指定一个登录页 URL,用户可以通过该 URL 访问免费订阅或试用版

登录页的目的只是接收用户,以便他们可以激活免费试用版或免费订阅。 使用 Microsoft Entra ID 和 Microsoft Graph,将为用户启用单一登录(SSO),并获取可用于激活其免费试用或免费订阅(包括其姓名、电子邮件地址和组织)的重要详细信息。

由于激活订阅所需的信息有限,并且由 Microsoft Entra ID 和 Microsoft Graph 提供,因此无需请求需要比基本同意更多的信息。 如果需要需要应用程序更多许可的用户详细信息,应在订阅激活完成后请求此信息。 该操作可顺畅地为用户激活订阅并降低弃购风险。

登录页通常包含以下信息和列表选项:

  • 显示免费试用版或免费订阅的名称和详细信息。 例如,指定使用限制或试用期。
  • 显示用户的帐户详细信息,包括名字与姓氏、组织和电子邮件。
  • 提示用户确认或替换不同的帐户详细信息。
  • 激活后,指导用户执行后续步骤。 例如,接收欢迎电子邮件、管理订阅、获取支持或阅读文档。

本文中的以下部分将指导你完成生成登陆页面的过程:

  1. 为登陆页创建Microsoft Entra 应用注册
  2. 使用代码示例作为应用的起点
  3. 从 ID 令牌中编码的声明读取信息,该令牌在登录后从 Microsoft Entra ID 接收,该 ID 随请求一起发送。
  4. 根据需要使用 Microsoft Graph API 收集其他信息。

创建 Microsoft Entra 应用注册

商业市场与 Microsoft Entra ID 完全集成。 用户通过 Microsoft Entra 帐户或 Microsoft 帐户(MSA)身份到达市场。 通过仅限列表的套餐获取免费或免费试用版订阅后,用户将从商业市场转到登录页 URL,以激活和管理其 SaaS 应用程序订阅。 必须让用户使用 Microsoft Entra SSO 登录到应用程序。 (登陆页 URL 在产品/服务的技术配置页中指定。)

提示

在登陆页面 URL 中不要包含井号字符 (#)。 否则,客户将无法访问登陆页面。

使用标识的第一步是确保登陆页注册为 Microsoft Entra 应用程序。 通过注册应用程序,可以使用 Microsoft Entra ID 对用户进行身份验证并请求访问用户资源。 此操作可被视为应用程序的定义,可让服务知道如何根据应用的设置向应用颁发令牌。

使用 Azure 门户注册新应用程序

若要开始,请按照有关注册新应用程序的说明操作。 若要让其他公司的用户访问该应用,你必须选择 任何组织目录中(任何Microsoft Entra 目录(多租户)和个人Microsoft帐户(如Skype或 Xbox), 当被问及谁可以使用该应用程序时。

如果你打算查询 Microsoft Graph API,请配置新应用程序以访问 Web API。 当你为此应用程序选择 API 权限时,默认值 User.Read 足以收集有关用户的基本信息,从而顺畅地自动执行加入过程。 请勿请求标记为 需要管理员许可的任何 API 权限,因为这会阻止所有非管理员用户访问登陆页面。

如果你确实需要提升的权限作为载入或预配过程的一部分,请考虑使用 Microsoft Entra ID 的增量同意 功能,以便从市场发送的所有用户最初能够与登陆页进行交互。

使用代码示例作为起点

Microsoft提供了几个示例应用,这些应用实现了启用了 Microsoft Entra 登录的简单网站。 在Microsoft Entra ID 中注册应用程序后, “快速入门 ”边栏选项卡提供了常见应用程序类型和开发堆栈的列表(图 1)。 选择与环境匹配的项,并按照说明进行下载和设置。

图 1:Azure 门户中的“快速入门”边栏选项卡

演示 Azure 门户中的“快速入门”边栏选项卡。

下载代码并设置开发环境后,在应用中更改配置设置,以反映你在前面的过程中记录的应用程序 ID、租户 ID 和客户端机密。 具体步骤因所使用的示例而异。

从 ID 令牌中编码的声明读取信息

作为 OpenID Connect 流的一部分,Microsoft Entra ID 会在用户发送到登陆页时向请求添加 ID 令牌。 该令牌包含激活过程中可能用到的多条基本信息,包括下表中显示的信息。

说明
aud 此令牌的目标受众。 在本例中,它应与应用程序 ID 匹配并经过验证。
preferred_username 进行访问的用户的主用户名。 可以是电子邮件地址、电话号码或其他标识符。
电子邮件 用户的电子邮件地址。 此字段可以为空。
name 用户可读值,用于标识令牌使用者。 在本例中,它是用户名。
oid Microsoft 标识系统中的标识符,用于在不同的应用程序中唯一标识用户。 Microsoft Graph 将返回此值作为给定用户帐户的 ID 属性。
tid 表示用户来自Microsoft Entra 租户的标识符。 对于 MSA 标识,此值始终为 9188040d-6c67-4c5b-b112-36a304b66dad。 有关详细信息,请参阅下一部分“使用 Microsoft Graph API”中的说明。
sub 唯一标识此特定应用程序中的用户的标识符。

使用 Microsoft Graph API

ID 令牌包含用于标识用户的基本信息,但激活过程可能需要更多详细信息(如用户的公司)才能完成载入过程。 使用 Microsoft Graph API 请求这些信息,以避免强制用户再次输入这些详细信息。 默认情况下,标准 User.Read 权限包含以下信息

Description
displayName 用户通讯簿中显示的名称。
givenName 用户的名字。
jobTitle 用户的职务。
mail 用户的 SMTP 地址。
mobilePhone 用户的主要手机号码。
preferredLanguage 用户首选语言的 ISO 639-1 代码。
surname 用户的姓氏。

可以选择更多属性(如用户公司的名称或用户的位置(国家/地区)以包含在请求中。 有关详细信息,请参阅 用户资源类型的属性。

注册到 Microsoft Entra ID 的大多数应用都授予委派权限,以从公司Microsoft Entra 租户中读取用户的信息。 向 Microsoft Graph 发出针对该信息的任何请求都必须附带一个访问令牌用于身份验证。 生成访问令牌的具体步骤取决于所用的技术堆栈,但示例代码将包含示例。 有关详细信息,请参阅代表用户获取访问权限

注意

来自 MSA 租户(租户 ID 为 9188040d-6c67-4c5b-b112-36a304b66dad)的帐户返回的信息不会超过已使用 ID 令牌收集的信息。 因此你可以跳过对这些帐户进行的 Graph API 调用。