应用的主要Microsoft Entra ID功能是身份验证,用户使用个人标识符(例如用户名或电子邮件地址)声明其标识的过程。 身份证明已提供。 证明可以是密码、多重身份验证项目、生物识别或无密码同意。
本文介绍了应用程序如何使用Microsoft Entra ID对用户和应用程序进行身份验证。 这是独立软件开发人员(ISV)如何为Microsoft Entra ID生成和优化其应用程序的系列文章中的第三篇文章。 在此系列中,可以了解有关以下主题的详细信息:
- Microsoft Entra ID面向独立软件开发人员介绍如何使用此基于云的标识和访问管理服务,使员工能够使用应用程序访问资源。
- 在Microsoft Entra ID生态系统中,建立应用程序描述了如何使用Microsoft Entra 管理中心或Microsoft Graph应用程序编程接口(API)来在Microsoft Entra ID租户中注册应用程序。
- 授权应用程序、资源和工作负载讨论当个人与应用程序交互并指导应用程序时、API 代表用户操作时的授权。 此外,还介绍了应用程序或服务何时独立工作。
- 自定义令牌 可帮助您使用来自 Microsoft Entra ID 的 ID 令牌和访问令牌构建安全的应用程序。 其中介绍了可以在Microsoft Entra ID令牌中接收的信息,以及如何对其进行自定义。
请求令牌
应用程序从Microsoft Entra ID请求令牌。 应用收到令牌后,可以使用该令牌中的信息来标识用户。 在Microsoft Entra ID的基础上生成时,用户可以使用单个已注册Microsoft Entra ID帐户(SSO)对许多应用程序进行身份验证。 SSO 身份验证方法允许用户使用一组凭据登录到多个独立软件系统。
开发人员可用于从Microsoft Entra ID请求令牌的协议使用浏览器将用户连接到Microsoft Entra ID网站。 此网站允许用户与Microsoft Entra ID进行私人对话。 应用程序不是该专用对话中的参与者。 应用会启动 Microsoft Entra ID 网站,用户可以在该网站上开始身份验证过程。 身份验证过程完成后,Microsoft Entra ID使用或不使用令牌将用户重定向回应用程序。
用户应很少需要完成身份验证过程,这一点很重要。 用户越频繁被强制这样做,就越容易受到网络钓鱼攻击等攻击的影响。
减少登录提示
SSO 可以减少或消除登录提示。 开发人员在减少和消除登录提示方面发挥了重要作用。 所有应用都必须共享访问用户执行身份验证过程Microsoft Entra ID网站的浏览器。 如果你的应用是基于浏览器的单页应用程序 (SPA) 或 Web 应用,则无需开发人员步骤。 浏览器中的所有应用共享浏览器。 对于在桌面和移动设备上运行的本机应用程序,开发人员必须主动减少或消除登录提示。
减少或消除登录提示的最佳方法是使用 Microsoft 身份验证库 (MSAL),或基于 MSAL 构建的库和中转站身份验证。 此方法可最大程度地减少登录提示,并提供最无缝的体验。 如果无法构建 MSAL,则应用程序应使用系统浏览器将登录提示降到最低。
对于在 iOS 或 Android 中运行的应用,移动平台提供商具有一些功能,可使此体验更加无缝。 Google 为Chrome 自定义选项卡提供了有关 Android 应用程序的指南。 Apple 提供了有关通过 iOS 应用程序中的 Web 服务对用户进行身份验证的指导。 避免使用嵌入式 WebView,因为它们可能不允许跨应用或系统浏览器共享。
用户身份验证的两种协议是安全断言标记语言 (SAML) 2.0 和 OpenID Connect (OIDC)。 Microsoft Entra ID完全支持使用这两种协议的应用,因此开发人员可以根据他们的要求选择其中一个。
这些参考资料详细说明了Microsoft Entra ID对SAML的支持。
- Microsoft Entra联合元数据介绍了特定于租户和独立于租户的元数据的联合元数据和元数据终结点。 它涵盖 SAML 和旧版 WS 联合标准的元数据。 虽然它完全受支持,但我们不建议为新应用程序使用 WS 联合身份验证。
MICROSOFT ENTRA ID SAML 支持方面存在一些限制。 具体而言,无法迁移需要这些协议功能的应用:对 WS-Trust ActAs 模式和 SAML 项目解析的支持。
虽然 Microsoft Entra ID 完全支持基于 SAML 协议构建的应用程序,但 Microsoft 身份平台不提供程序库或其他开发工具用于使用 SAML 开发应用程序。 对于新的应用程序开发,我们建议使用 OpenID Connect (OIDC) 进行身份验证。
Microsoft Entra ID完全支持 OpenID Connect。 Microsoft提供 MSAL、Microsoft 标识 Web 和Azure SDK库,以简化 OIDC 应用程序开发。 Microsoft 标识平台上的 OpenID Connect (OIDC) 详细介绍了 Microsoft Entra ID 对 OIDC 的支持。 MSAL 自动支持 OIDC。 MSAL 始终会与每次令牌请求一同请求 OIDC ID 令牌,包括应用访问资源的授权请求。
令牌生存期
MSAL 根据访问令牌的过期时间缓存 ID 令牌和访问令牌。 由于Microsoft Entra ID以不同的方式设置 ID 令牌和访问令牌的生存期,因此,当访问令牌仍处于有效生存期内时,可能会从过期的 MSAL 缓存收到过期的 ID 令牌。
MSAL 不会自动续订 ID 令牌。 当应用程序请求令牌时,MSAL 会在访问令牌的生命周期结束或接近时续订访问令牌。 此时,MSAL 会请求新的 ID 令牌。 若要实现 OIDC,请使用 ID 令牌中的 exp(过期)声明,并在 MSAL 中使用 ForceRefresh 标志来安排 ID 令牌请求。
当无法在 MSAL 上或在基于 MSAL 构建的库上进行构建时,可以使用 OpenID Connect 标准对当前用户进行身份验证。 如果不使用 MSAL,则可能无法在本机应用程序中使用某些功能,例如确保本机应用在托管设备上运行。 请查看提高你开发的客户端应用程序中身份验证和授权的复原能力,以获得关于非基于 MSAL 构建的指导。
Microsoft Entra ID 实现 UserInfo 端点,这是 Microsoft Entra ID OIDC 标准支持的一部分,并通过特定的 Microsoft Graph 路径(https://microsoftgraph.chinacloudapi.cn/oidc/userinfo)实现。 无法添加或自定义 UserInfo 终结点返回的信息。 由于 ID 令牌中的信息是调用 UserInfo 终结点返回的信息的超集,因此我们建议使用 ID 令牌而不是调用 UserInfo 终结点。
对用户进行身份验证
应用程序与Microsoft Entra ID租户交互以对用户进行身份验证。 若要对用户进行身份验证,应用程序会将浏览器定向到 https://login.partner.microsoftonline.cn/{tenant}/v2.0,而 {tenant} 是租户的 ID 或域。 但是,我们建议 ISV 使用Microsoft Entra ID生成可支持最广泛的客户的多租户应用程序。 对于多租户应用程序,应用可能不知道用户来自哪个租户,直到用户进行身份验证后,才能使用特定的租户终结点。
若要启用多租户应用,Microsoft Entra ID提供两个独立于租户的 OIDC/OAuth 2.0 终结点:
-
https://login.partner.microsoftonline.cn/common/v2.0允许用户在他们来自任何Microsoft Entra ID租户,或拥有来自如outlook.com、skype.com、xbox.com、live.com或Hotmail.com等网站的Microsoft消费者帐户时,对应用进行身份验证。 -
https://login.partner.microsoftonline.cn/organizations/v2.0允许用户在任何Microsoft Entra ID租户中对应用进行身份验证。
这些终结点允许来自任何Microsoft Entra ID租户的任何用户对应用程序进行身份验证。 如果只想允许来自特定租户的用户,请实现逻辑,以仅允许来自这些租户的用户访问应用。 正常实现是根据令牌中的 iss(颁发者)或 tid(租户 ID)声明筛选用户,以筛选你维护的租户的允许列表。
Microsoft Entra ID 租户支持用户,该用户可以是租户的常规成员或来宾用户。 默认情况下,租户中的来宾用户的功能有限。 例如,来宾用户无法查看租户中其他用户的完整个人资料。 来宾用户,有时称为企业对企业(B2B)用户,使不同的组织能够与 Microsoft Entra ID 保护的工具和服务进行协作。 示例方案是邀请组织外部的用户访问租户中的SharePoint文件。 通常,B2B 用户使用其电子邮件地址作为其 userid。 但是,他们可以使用与主租户中的 userid 相同的地址。 默认情况下,Microsoft Entra ID当用户输入其 userid 时,将用户登录到其主租户。
若要以 B2B 用户身份登录用户,应用程序必须使用用户是来宾的特定租户终结点。 尽管用户可以在应用程序使用 https://login.partner.microsoftonline.cn/organizations/v2.0 终结点时指定要访问的租户,但他们可能会觉得很难找到这个功能。
后续步骤
- Microsoft Entra ID面向独立软件开发人员介绍如何使用此基于云的标识和访问管理服务,使员工能够使用应用程序访问资源。
- Microsoft Entra ID生态系统中的Establish 应用程序介绍了如何使用 Microsoft Entra 管理中心或Microsoft Graph API在Microsoft Entra ID租户中注册应用。
- 授权应用程序、资源和工作负载讨论当个人与应用程序交互并指导应用程序时、API 代表用户运行时以及应用程序或服务独立运行时的授权。
- 自定义令牌可帮助你使用 ID 令牌和访问令牌从 Microsoft Entra ID 在应用程序中构建安全性。 其中介绍了可以在Microsoft Entra ID令牌中接收的信息,以及如何对其进行自定义。