Azure Active Directory 开发人员词汇表

本文包含一些核心 Azure Active Directory (AD) 开发人员概念的定义,帮助你了解 Azure AD 的应用程序开发。

访问令牌

授权服务器颁发的一种安全令牌,可供客户端应用程序用来访问受保护的资源服务器。 该令牌的形式通常是 JSON Web 令牌 (JWT),包含资源所有者授予客户端的授权,用于获得所请求的访问级别。 该令牌包含所有适用的主体相关声明,可让客户端应用程序将其作为某种形式的凭据来访问给定的资源。 并使得资源所有者不必对客户端公开凭据。

根据提供的凭据,访问令牌有时称为“用户+应用”或“仅限应用”。 例如,如果客户端应用程序:

  • 使用“授权代码”授权,则最终用户先以资源所有者的身份进行身份验证,将授权委托给客户端来访问资源。 然后,客户端在获取访问令牌时进行身份验证。 令牌有时可以更具体地称为“用户+应用”令牌,因为它同时代表授权客户端应用程序的用户,以及应用程序。
  • 使用“客户端凭据”授权,则客户端提供唯一的身份验证,在没有资源所有者身份验证/授权的情况下运行,因此该令牌有时可以称为“仅限应用”令牌。

有关详细信息,请参阅 Azure AD Token Reference (Azure AD 令牌参考)。

应用程序 ID(客户端 ID)

Azure AD 向应用程序注册颁发的唯一标识符,用于标识特定应用程序和关联的配置。 执行身份验证请求时将使用此应用程序 ID(客户端 ID),开发时会向身份验证库提供它。 应用程序 ID(客户端 ID)不是机密。

应用程序清单

Azure 门户提供的一项功能,可生成以 JSON 表示的应用程序标识配置,作为其关联 Application 实体和 ServicePrincipal 实体的更新机制。 如需更多详细信息,请参阅了解 Azure Active Directory 应用程序清单

应用程序对象

Azure 门户中注册/更新应用程序时,门户将为该租户同时创建/更新应用程序对象和对应的服务主体对象。 应用程序对象可全局(在其能够访问的所有租户中)定义应用程序的标识配置,并可提供模板来派生出其对应的服务主体对象,在运行时于本地(在特定租户中)使用。

如需更多详细信息,请参阅应用程序和服务主体对象

应用程序注册

要允许某个应用程序与标识和访问管理功能集成并将这些功能委托给 Azure AD,必须向 Azure AD 租户注册该应用程序。 向 Azure AD 注册应用程序时,必须提供应用程序的标识配置,以允许它与 Azure AD 集成并使用如下所述的功能:

有关详细信息,请参阅 Integrating applications with Azure Active Directory(将应用程序与 Azure Active Directory 集成)。

授权

向访问方质询合法凭据的措施,提供创建用于标识和访问控制的安全主体的基础。 例如,在 OAuth2 授权期间,访问方身份验证根据使用的授权填充资源所有者客户端应用程序角色。

authorization

授权经过身份验证的安全主体执行某项操作的措施。 在 Azure AD 编程模型中有两个主要用例:

授权代码

在四个 OAuth2 授权之一的“授权代码”流程中,由授权终结点提供给客户端应用程序的短期“令牌”。 为响应资源所有者的身份验证,将授权代码返回给客户端应用程序,指出资源所有者已进行所请求资源的访问授权委托。 在执行流程的过程中,稍后会将授权代码兑换为访问令牌

授权终结点

授权服务器实现的终结点之一,用来与资源所有者进行交互,以便在 OAuth2 授权流程期间提供授权。 根据使用的授权流程,实际提供的授权可能不同,这包括授权代码安全令牌

如需更多详细信息,请参阅 OAuth2 规范的授权类型授权终结点部分以及 OpenIDConnect 规范

授权

授予客户端应用程序的凭据,代表资源所有者对其受保护资源访问权限的授权。 根据客户端类型/要求,客户端应用程序可以使用 OAuth2 授权框架定义的四种授权类型之一来获取授权:“授权代码授予”、“客户端凭据授予”、“隐式授予”和“资源所有者密码凭据授予”。 根据使用的授权类型,返回给客户端的凭据是访问令牌授权代码(稍后用于交换访问令牌)。

授权服务器

根据 OAuth2 授权框架的定义,这是在成功验证资源所有者并获取其授权之后,负责向客户端颁发访问令牌的服务器。 客户端应用程序在运行时根据 OAuth2 定义的权限授予,通过其权限令牌终结点来与授权服务器交互。

对于 Azure AD 应用程序集成,Azure AD 为 Azure AD 应用程序和 Microsoft 服务 API(例如 Microsoft 图形 API)实现授权服务器角色。

声明

安全令牌包含声明,声明将有关某个实体(例如客户端应用程序资源所有者)的断言提供给另一个实体(例如资源服务器)。 声明是中继令牌主体(例如,由授权服务器进行身份验证的安全主体)相关事实的名称/值对。 给定令牌中的声明依赖于几个变量,包括令牌类型、用于验证主体身份的凭据类型和应用程序配置等。

有关详细信息,请参阅 Azure AD token reference (Azure AD 令牌参考)。

客户端应用程序

根据 OAuth2 授权框架的定义,这是代表资源所有者发出受保护资源请求的应用程序。 “客户端”一词并不代表任何特定的硬件实现特征(例如,应用程序是在服务器、台式机还是其他设备上执行)。

客户端应用程序向资源所有者请求授权,以参与 OAuth2 授权流程,并可代表资源所有者访问 API/数据。 OAuth2 授权框架根据客户端是否能够维护其凭据的机密性定义两种类型的客户端:“机密”和“公共”。 应用程序可实现在 Web 服务器上运行的 Web 客户端(机密)、安装在设备上的本机客户端(公共),或者在设备浏览器中运行的基于用户代理的客户端(公共)

资源所有者授权给客户端应用程序,让其通过特定权限代表资源所有者访问受保护资源的过程。 根据客户端请求的权限,要求管理员或用户同意分别允许其组织/个人数据的访问权限。 请注意,在多租户方案中,应用程序的服务主体也会记录在同意方用户的租户中。

ID 令牌

授权服务器授权终结点提供的 OpenID Connect 安全令牌,其中包含与最终用户资源所有者的身份验证相关的声明。 与访问令牌一样,ID 令牌也以数字签名的 JSON Web 令牌 (JWT) 来表示。 不过,与访问令牌不同的是,ID 令牌的声明并不用于与资源访问相关的用途(具体地说,是访问控制)。

有关详细信息,请参阅 Azure AD token reference (Azure AD 令牌参考)。

多租户应用程序

一类应用程序,允许在任何 Azure AD 租户(包括在其中注册了客户端的租户以外的租户)中预配的用户进行登录和同意操作。 本机客户端应用程序默认为多租户,而 Web 客户端Web 资源/API 应用程序则可在单租户和多租户之间做出选择。 相反,注册为单租户的 Web 应用程序只允许来自应用程序注册所在相同租户中预配的用户帐户的登录。

如需更多详细信息,请参阅如何使用多租户应用程序模式将任何 Azure AD 用户登录

本机客户端

设备上本机安装的 客户端应用程序 类型。 由于所有代码都在设备上执行,因此设备因为无法隐私/秘密地存储凭据而被视为“公共”客户端。 有关详细信息,请参阅 OAuth2 client types and profiles (OAuth2 客户端类型和配置文件)。

权限

客户端应用程序通过声明权限请求来获取资源服务器访问权限。 有两种权限类型:

权限也会在同意过程中出现,让管理员或资源所有者有机会允许/拒绝客户端对其租户中的资源进行访问。

Azure 门户的“应用程序”/“配置”选项卡的“必需权限”下,选择所需的“委托的权限”和“应用程序权限”来配置权限请求(后者需要全局管理员角色中的成员资格)。 公共客户端无法安全地维护凭据,因此它只能请求委托的权限,而机密客户端则可以请求委托的权限和应用程序权限。 客户端的应用程序对象将声明的权限存储在其 requiredResourceAccess 属性中。

资源所有者

根据 OAuth2 授权框架的定义,这是能够授予受保护资源访问权限的实体。 如果资源所有者是个人,则称为最终用户。 例如,当客户端应用程序想要通过 Microsoft 图形 API 访问用户的邮箱时,需要从邮箱的资源所有者获取权限。

资源服务器

根据 OAuth2 授权框架的定义,这是托管受保护资源的服务器,能够接受并响应出示访问令牌客户端应用程序所发出的受保护资源请求。 它也称为受保护的资源服务器或资源应用程序。

资源服务器使用 OAuth 2.0 授权框架公开 API,并通过范围角色强制实施其受保护资源的访问权限。 示例包括可访问 Azure AD 租户数据的 Azure AD Graph API,以及可访问邮件和日历等数据的 Office 365 API。 这两项也可通过 Microsoft Graph API进行访问。

与客户端应用程序一样,资源应用程序的标识配置是通过 Azure AD 租户中的 注册 来建立的,可提供应用程序和服务主体对象。 Microsoft 提供的某些 API(例如 Azure AD 图形 API)在预配期间将预先注册的服务主体设置为在所有租户中可用。

角色

范围一样,角色提供某种方式让资源服务器控制其受保护资源的访问权限。 有两种类型的角色:“用户”角色为需要资源访问权限的用户/组实现基于角色的访问控制,“应用程序”角色为需要访问权限的 客户端应用程序 实现相同的访问控制。

角色是资源定义的字符串(例如“开支审批人”、“只读”、“Directory.ReadWrite.All”),在 Azure 门户中通过资源的应用程序清单进行管理,并且存储在资源的 appRoles 属性中。 也可通过 Azure 门户为用户分配“用户”角色,并配置用于访问“应用程序”角色的客户端应用程序权限

有关 Azure AD 图形 API 公开的应用程序角色的详细介绍,请参阅 Graph API Permission Scopes(图形 API 权限范围)。 有关分步实现示例,请参阅 Role based access control in cloud applications using Azure AD(使用 Azure AD 在云应用程序中执行基于角色的访问控制)。

范围

角色一样,范围提供某种方式让资源服务器控制其受保护资源的访问权限。 对于已获得资源所有者委托资源访问权限的客户端应用程序,范围可用于实现基于范围的访问控制。

范围是资源定义的字符串(例如“Mail.Read”、“Directory.ReadWrite.All”),在 Azure 门户中通过资源的应用程序清单进行管理,并且存储在资源的 oauth2Permissions 属性中。 也可通过 Azure 门户配置用于访问范围的客户端应用程序委托权限

命名约定最佳实践是使用“resource.operation.constraint”格式。 有关 Azure AD 图形 API 公开的范围的详细介绍,请参阅 Graph API Permission Scopes(图形 API 权限范围)。 有关 Office 365 服务公开的范围,请参阅 Office 365 API permissions reference(Office 365 API 权限参考)。

安全令牌

包含 OAuth2 令牌或 SAML 2.0 断言等声明的已签名文档。 对于 OAuth2 授权访问令牌 (OAuth2) 和 ID 令牌都是安全令牌类型,并且这两种类型都已作为 JSON Web 令牌 (JWT) 实现。

应用程序对象

Azure 门户中注册/更新应用程序时,门户将为该租户同时创建/更新应用程序对象和对应的服务主体对象。 应用程序对象可全局(在关联的应用程序已获授予访问权限的所有租户中)定义应用程序的标识配置,并可作为模板来派生出其对应的服务主体对象,以便在运行时于本地(在特定租户)使用。

如需更多详细信息,请参阅应用程序和服务主体对象

登录

客户端应用程序启动最终用户身份验证并捕获相关状态,以便获取安全令牌并将应用程序会话局限在该状态的过程。 状态可以包括多种项目,例如用户配置文件信息,以及派生自令牌声明的信息。

应用程序的登录功能通常用于实现单一登录 (SSO)。 该功能前面可能还会有一个“注册”功能,作为用户访问应用程序(在首次登录时)的入口点。 注册功能用于收集和保存用户特定的其他状态,并且可能需要用户同意

注销

使最终用户变成未身份验证状态的过程,解除用户在登录期间与客户端应用程序会话关联的状态

租户

Azure AD 目录的实例称为 Azure AD 租户。 它提供的一些功能包括:

  • 适用于集成应用程序的注册表服务
  • 对用户帐户和已注册应用程序进行身份验证
  • 为各种协议(包括 OAuth2 和 SAML)提供支持所需的 REST 终结点,包括授权终结点令牌终结点以及多租户应用程序使用的“通用”终结点。

在注册期间创建 Azure AD 租户/将 Azure AD 租户与 Azure 和 Office 365 订阅相关联,以便为该订阅提供标识和访问管理功能。 Azure 订阅管理员还可通过 Azure 门户创建其他 Azure AD 租户。 有关访问租户的各种方式的详细信息,请参阅如何获取 Azure Active Directory 租户。 若要了解订阅和 Azure AD 租户之间的详细关系,请参阅 How Azure subscriptions are associated with Azure Active Directory (Azure 订阅与 Azure Active Directory 的关联方式)。

令牌终结点

授权服务器为了支持 OAuth2 权限授予而实现的终结点之一。 根据具体的授权,可将其用于获取客户端访问令牌(和相关的“刷新”令牌)或 ID 令牌(使用 OpenID Connect 协议时)。

基于用户代理的客户端

一种客户端应用程序,例如单页应用程序 (SPA),可从 Web 服务器下载代码并在用户代理(例如 Web 浏览器)中执行。 由于所有代码都在设备上执行,因此设备因为无法隐私/秘密地存储凭据而被视为“公共”客户端。 如需更多详细信息,请参阅 OAuth2 客户端类型和配置文件

用户主体

与服务主体对象用于表示应用程序实例的方式一样,用户主体对象是另一种类型的安全主体,它代表用户。 Azure AD Graph 用户实体定义用户对象的架构,包括用户相关属性,例如姓名、用户主体名称、目录角色成员身份等。这样即可提供 Azure AD 的用户标识配置,用于在运行时建立用户主体。 用户主体用于代表经身份验证的用户执行单一登录、记录同意委托、做出访问控制决策等操作。

Web 客户端

一类客户端应用程序 ,可在 Web 服务器上执行所有代码,并可将凭据安全地存储在服务器上,充当“机密”客户端。 有关详细信息,请参阅 OAuth2 client types and profiles (OAuth2 客户端类型和配置文件)。

后续步骤

Azure AD 开发人员指南是用于所有 Azure AD 开发相关主题的登陆页,包括应用程序集成的概述和 Azure AD 身份验证与支持的身份验证方案基本知识。 另外,还可在 Github 上找到关于如何快速启动和运行的代码示例及教程。

请使用以下评论部分提供反馈,帮助我们改进和编写内容,包括有关新定义或更新现有定义的要求!