category
使用Microsoft身份平台不需要在协议级别了解OAuth或OpenID Connect(OIDC)。但是,当您使用身份平台向应用程序添加身份验证时,您会遇到协议术语和概念。当您使用Microsoft Entra管理中心、我们的文档和身份验证库时,了解一些基本知识可以帮助您进行集成和整体体验。
OAuth 2.0中的角色
OAuth 2.0和OpenID Connect身份验证和授权交换通常涉及四方。这些交换通常称为身份验证流或身份验证流。
显示OAuth 2.0角色的图表
- 授权服务器-Microsoft身份平台是授权服务器。也称为身份提供者或IdP,它安全地处理最终用户的信息、他们的访问以及身份验证流中各方之间的信任关系。授权服务器在用户登录(经过身份验证)后,颁发您的应用程序和API用于授予、拒绝或撤销对资源的访问(授权)的安全令牌。
- 客户端-OAuth交换中的客户端是请求访问受保护资源的应用程序。客户端可以是运行在服务器上的web应用程序、运行在用户的web浏览器中的单页web应用程序,或者调用另一个web API的web API。您经常会看到客户端被称为客户端应用程序、应用程序或应用程序。
- 资源所有者-身份验证流中的资源所有者通常是应用程序用户,或OAuth术语中的最终用户。最终用户“拥有”您的应用程序代表他们访问的受保护资源(他们的数据)。资源所有者可以授予或拒绝您的应用程序(客户端)访问他们拥有的资源。例如,您的应用程序可能会调用外部系统的API,从用户在该系统上的配置文件中获取用户的电子邮件地址。他们的个人资料数据是最终用户在外部系统上拥有的资源,最终用户可以同意或拒绝您的应用程序访问其数据的请求。
- 资源服务器-资源服务器承载或提供对资源所有者数据的访问。大多数情况下,资源服务器是面向数据存储的web API。资源服务器依赖于授权服务器来执行身份验证,并使用授权服务器颁发的承载令牌中的信息来授予或拒绝对资源的访问。
令牌
身份验证流中的各方使用承载令牌来确保、验证和认证主体(用户、主机或服务),并授予或拒绝对受保护资源的访问(授权)。Microsoft身份平台中的承载令牌格式为JSON Web令牌(JWT)。
身份平台使用三种类型的承载令牌作为安全令牌:
- 访问令牌-访问令牌由授权服务器颁发给客户端应用程序。客户端将访问令牌传递给资源服务器。访问令牌包含授权服务器授予客户端的权限。
- ID令牌-ID令牌由授权服务器颁发给客户端应用程序。客户端在登录用户时使用ID令牌并获取有关用户的基本信息。
- 刷新令牌-客户端使用刷新令牌或RT向授权服务器请求新的访问和ID令牌。您的代码应将刷新令牌及其字符串内容视为敏感数据,因为它们仅供授权服务器使用。
应用程序注册
您的客户端应用程序需要一种方法来信任Microsoft身份平台向其颁发的安全令牌。建立信任的第一步是注册您的应用程序。当您注册应用程序时,身份平台会自动为其分配一些值,而其他值则由您根据应用程序的类型进行配置。
最常被引用的两个应用程序注册设置是:
- 应用程序(客户端)ID-也称为应用程序ID和客户端ID,此值由身份平台分配给您的应用程序。客户端ID在身份平台中唯一标识您的应用程序,并包含在平台发布的安全令牌中。
- 重定向URI-授权服务器在完成交互后使用重定向URI将资源所有者的用户代理(web浏览器、移动应用程序)定向到另一个目的地。例如,在最终用户向授权服务器进行身份验证之后。并非所有客户端类型都使用重定向URI。
您的应用程序的注册还包含有关您将在代码中用于获取ID和访问令牌的身份验证和授权端点的信息。
端点
Microsoft身份平台使用符合标准的OAuth 2.0和OpenID Connect(OIDC)1.0实现提供身份验证和授权服务。身份平台等符合标准的授权服务器提供了一组HTTP端点,供身份验证流中的各方执行流。
当您注册或配置应用程序时,会自动生成应用程序的端点URI。您在应用程序代码中使用的端点取决于应用程序的类型及其应支持的身份(帐户类型)。
两个常用的端点是授权端点和令牌端点。以下是授权和令牌端点的示例:
# Authorization endpoint - used by client to obtain authorization from the resource owner.
https://login.microsoftonline.com/<issuer>/oauth2/v2.0/authorize
# Token endpoint - used by client to exchange an authorization grant or refresh token for an access token.
https://login.microsoftonline.com/<issuer>/oauth2/v2.0/token
# NOTE: These are examples. Endpoint URI format may vary based on application type,
# sign-in audience, and Azure cloud instance (global or national cloud).
# The {issuer} value in the path of the request can be used to control who can sign into the application.
# The allowed values are **common** for both Microsoft accounts and work or school accounts,
# **organizations** for work or school accounts only, **consumers** for Microsoft accounts only,
# and **tenant identifiers** such as the tenant ID or domain name.
要查找已注册应用程序的端点,请在Microsoft Entra管理中心导航到:
Identity > Applications > App registrations > <YOUR-APPLICATION> > Endpoints
下一步
接下来,了解每种应用程序类型使用的OAuth 2.0身份验证流程以及您可以在应用程序中使用的库来执行这些流程:
我们强烈建议不要制作自己的库或原始HTTP调用来执行身份验证流。Microsoft身份验证库更安全、更简单。但是,如果您的场景阻止您使用我们的库,或者您只是想了解有关Microsoft身份平台实现的更多信息,我们有协议参考:
- Authorization code grant flow - Single-page apps (SPA), mobile apps, native (desktop) applications
- Client credentials flow - Server-side processes, scripts, daemons
- On-behalf-of (OBO) flow - Web APIs that call another web API on a user's behalf
- OpenID Connect - User sign-in, sign out, and single sign-on (SSO)
- 登录 发表评论
- 8 次浏览
最新内容
- 2 days 19 hours ago
- 2 days 21 hours ago
- 2 days 21 hours ago
- 5 days 13 hours ago
- 5 days 20 hours ago
- 5 days 21 hours ago
- 5 days 21 hours ago
- 5 days 21 hours ago
- 1 week 3 days ago
- 1 week 3 days ago