探索身份验证
身份验证验证标识(用户或应用或设备)是否是它们宣称的身份。 然后,还会在整个身份验证事务中提供适当的验证和安全性级别。 标识身份验证提供:
- 跨组织进行集成的符合标准的灵活身份验证
- 不同源、应用程序和协议的集成
- 采用许多不同的符合行业标准的验证和保证方法
使用标识提供者进行身份验证提供了一种方法可确保标识安全,而不会限制用户的功能。 获得多个源来验证标识、行业协议和标识保证,且方便易行。
便捷 - 便捷功能侧重于最终用户体验 - 如何提示他们输入身份验证凭据。 此处重点是最终用户体验。 如果某些东西不方便,用户则会避免或者抱怨。
源 - 源功能围绕用户从何处获取其身份验证令牌。 许多组织拥有他们所认为的集中颁发者 (Microsoft Entra ID),但实际上大多数组织也有其他标识存储库。 联合标识是最常见的其他标识提供者。
协议 - 通常组织具有各种身份验证协议,这会导致最终用户和组织体验欠佳。 此功能的重点是帮助组织对一个或多个新式安全身份验证协议进行标准化,以实现其身份验证目标。
保证 - 身份验证保证是组织对于访问资源的个体即为他们所宣称的身份有信心。 此功能讨论组织是否使用共享帐户,他们是否使用个性化帐户,以及多重身份验证或基于风险的身份验证等解决方案是否已到位。
联合标识
联合是已建立信任的域的集合。 信任级别有所不同,但通常包括身份验证,并几乎总是包括授权。 通过此联合身份验证,可以应用来自受信任源的现有标识,例如现有的本地活动目录。
标识中的常见通信协议
协议 | 说明和用法 |
---|---|
SAML - 安全断言标记语言 | 在标识提供者和服务提供商之间交换身份验证和授权数据的开放标准。 常见的 SAML 属性: |
Principal = 通常为用户或设备,IdP = 标识提供者,SP = 服务提供商 | |
IdP = 标识提供者 | |
SP = 服务提供商 | |
WS-Fed - Web 服务联合身份验证 | Web 服务安全框架中的标识规范,通过外部标识交换和身份验证提供单一登录。 |
OIDC - OpenID Connect | OIDC 扩展了 OAuth 2.0 授权协议,使其可用作身份验证协议,这样一来就可以使用 OAuth 执行单一登录。 |
OpenID Connect
OpenID Connect (OIDC) 是在 OAuth 2.0 上构建的身份验证协议。 此协议使用户能够安全地将用户登录到应用程序。 使用 Microsoft 标识平台的 OpenID Connect 实现时,可将登录功能和 API 访问权限添加到应用中。 OpenID Connect 扩展了 OAuth 2.0 授权协议,使其可用作身份验证协议,这样一来,你就可以使用 OAuth 执行单一登录。 OpenID Connect 引入了 ID 令牌的概念,这是一种安全令牌,可让客户端验证用户的标识。 ID 令牌还可获取有关用户的基本配置文件信息。 它还引入了 UserInfo 终结点,这是一个可返回有关用户的信息的 API。
Microsoft Entra ID 中基于声明的标识
当用户登录时,Microsoft Entra ID 会发送一个 ID 令牌,其中包含有关该用户的声明集。 声明只需是一段以键值对形式表示的信息。 例如,email=bob@contoso.com。 声明中包含颁发者(在本例中为 Microsoft Entra ID),它是用于验证用户身份和创建声明的实体。 由于你信任该颁发者,因此也就信任这些声明。 (相反,如果你不信任颁发者,则不信任声明!)
在高级别中:
- 用户进行身份验证。
- 标识提供者 (IDP) 发送一组声明。
- 应用规范化或补充声明(可选)。
- 应用使用声明做出授权决策。
在 OpenID Connect 中,收到的声明集由身份验证请求的范围参数控制。 但是,Microsoft Entra ID 通过 OpenID Connect 使用安全令牌颁发一组有限声明;主要使用 JSON Web 令牌。 要了解有关用户的详细信息,需要使用 Microsoft Entra ID 的图形 API。
安全令牌
Microsoft 标识平台会对用户进行身份验证,并提供安全令牌,如访问令牌、刷新令牌和 ID 令牌。 使用安全令牌,客户端应用程序可以访问资源服务器上受保护的资源。 有三种常见的令牌类型:访问令牌、刷新令牌和 ID 令牌。
- 访问令牌 - 访问令牌是由授权服务器作为 OAuth 2.0 流的一部分颁发的安全令牌。 它包含有关令牌所针对的用户和资源的信息。 这些信息可用于访问 Web API 和其他受保护的资源。 访问令牌由资源进行验证,以授予对客户端应用的访问权限。 若要详细了解 Microsoft 标识平台如何颁发访问令牌,请参阅访问令牌。
- 刷新令牌 - 由于访问令牌只在短时间内有效,因此授权服务器有时会在颁发访问令牌的同时颁发刷新令牌。 然后,客户端应用程序可以在需要时使用此刷新令牌交换新的访问令牌。 若要详细了解 Microsoft 标识平台如何使用刷新令牌来撤销权限,请参阅刷新令牌。
- ID 令牌:ID 令牌作为 OpenID Connect 流的一部分发送到客户端应用程序。 它们可以与访问令牌一起发送,也可以代替访问令牌发送。 客户端使用 ID 令牌对用户进行身份验证。 若要详细了解 Microsoft 标识平台如何颁发 ID 令牌,请参阅 ID 令牌。
什么是 JSON Web 令牌 (JWT)?
JSON Web 令牌 (JWT) 是一种开放标准 (RFC 7519),它定义了一种紧凑的自包含的方式,用于以 JSON 对象的形式在各方之间安全地传输信息。 可以验证和信任此信息,因为该信息已进行数字签名。 可以使用机密或公钥/私钥对对 JWT 进行签名。 虽然可以加密 JWT 以在各方之间提供保密性,但我们将重点关注签名令牌。 签名令牌可以验证它所包含的声明的完整性,而加密令牌将向其他各方隐藏这些声明。 当令牌使用公钥/私钥对进行签名时,签名还会认证只有持有私钥的一方是签名方。
注意
JWT 网站提供的信息 - https://jwt.io/。
基于声明的标识中的定义
在 Microsoft Entra ID 中讨论基于声明的标识时,会使用一些常用术语。
- 声明 - 安全令牌中数据的值对。 令牌中有多个声明从定义令牌类型的声明传输到加密方法。 示例如下:
Header { "alg": "HS256", "typ": "JWT" } Content payload { "sub": "1234567890", "name": "John Doe", "aud": "https://jwt.io" }
- 断言 - 一组数据,通常采用令牌形式,用于跨安全域共享有关用户或帐户的标识和安全信息。
- 属性 - 令牌中数据的值对。
- 扩大 - 将其他声明添加到用户令牌的过程,以提供有关用户的额外详细信息。 这可能包括来自人力资源 (HR) 系统、应用程序(如 SharePoint 或其他系统)的数据。