Protocolos OAuth 2.0 y OpenID Connect en la Plataforma de identidad de MicrosoftOAuth 2.0 and OpenID Connect protocols on the Microsoft identity platform

El punto de conexión de la Plataforma de identidad de Microsoft para la identidad como servicio implementa la autenticación y la autorización con los protocolos estándar del sector, OpenID Connect [OIDC] y OAuth 2.0, respectivamente.The Microsoft identity platform endpoint for identity-as-a-service implements authentication and authorization with the industry standard protocols OpenID Connect (OIDC) and OAuth 2.0, respectively. Aunque el servicio sea compatible con el estándar, puede haber diferencias sutiles entre dos implementaciones cualquiera de estos protocolos.While the service is standards-compliant, there can be subtle differences between any two implementations of these protocols. La información que se describe a continuación le resultará útil si decide escribir su código mediante el envío y la administración directos de solicitudes HTTP o mediante el uso de una biblioteca de código abierto de terceros, en lugar de usar una de nuestras bibliotecas de código abierto.The information here will be useful if you choose to write your code by directly sending and handling HTTP requests or use a third-party open-source library, rather than using one of our open-source libraries.

Conceptos básicosThe basics

En casi todos los flujos de OAuth 2.0 y OpenID Connect hay cuatro partes implicadas en el intercambio:In nearly all OAuth 2.0 and OpenID Connect flows, there are four parties involved in the exchange:

Diagrama que muestra los roles de OAuth 2.0

  • El servidor de autorización es la Plataforma de identidad de Microsoft y el responsable de garantizar la identidad del usuario, conceder y revocar el acceso a los recursos y emitir tokens.The Authorization Server is the Microsoft identity platform and is responsible for ensuring the user's identity, granting and revoking access to resources, and issuing tokens. Al servidor de autorización también se le conoce como proveedor de identidad: controla de forma segura todo lo que tenga que ver con la información del usuario, su acceso y las relaciones de confianza entre las partes de un flujo.The authorization server is also known as the identity provider - it securely handles anything to do with the user's information, their access, and the trust relationships between parties in a flow.
  • El propietario del recurso suele ser el usuario final.The Resource Owner is typically the end user. Es la parte que posee los datos y tiene la capacidad de permitir que los clientes tengan acceso a esos datos o recursos.It's the party that owns the data and has the power to allow clients to access that data or resource.
  • El cliente de OAuth es su aplicación, identificada por su identificador de aplicación.The OAuth Client is your app, identified by its application ID. El cliente de OAuth suele ser la parte con la que interactúa el usuario final y solicita tokens del servidor de autorización.The OAuth client is usually the party that the end user interacts with, and it requests tokens from the authorization server. El cliente debe contar con el permiso del propietario del recurso para acceder a este.The client must be granted permission to access the resource by the resource owner.
  • El servidor de recursos es donde residen el recurso o los datos.The Resource Server is where the resource or data resides. Confía en el servidor de autorización para autenticar y autorizar al cliente de OAuth de forma segura y usa access_tokens de portador para garantizar que se puede conceder el acceso a un recurso.It trusts the Authorization Server to securely authenticate and authorize the OAuth Client, and uses Bearer access tokens to ensure that access to a resource can be granted.

Registro de aplicaciónApp registration

Todas las aplicaciones que quieren aceptar tanto cuentas personales como profesionales o educativas se deben registrar a través de la experiencia de Registros de aplicaciones en Azure Portal antes de poder iniciar la sesión de estos usuarios mediante OAuth 2.0 u OpenID Connect.Every app that wants to accept both personal and work or school accounts must be registered through the App registrations experience in the Azure portal before it can sign these users in using OAuth 2.0 or OpenID Connect. El proceso de registro de la aplicación recopilará y asignará algunos valores a la aplicación:The app registration process will collect and assign a few values to your app:

  • Un id. de aplicación que identifica de forma única su aplicaciónAn Application ID that uniquely identifies your app
  • Un URI de redireccionamiento (opcional) que puede usarse para dirigir las respuestas de nuevo a la aplicación.A Redirect URI (optional) that can be used to direct responses back to your app
  • Algunos otros valores específicos de cada escenario.A few other scenario-specific values.

Para obtener más información, aprenda a registrar una aplicación.For more details, learn how to register an app.

Puntos de conexiónEndpoints

Una vez que la aplicación se registra, se comunica con la Plataforma de identidad de Microsoft mediante el envío de solicitudes al punto de conexión:Once registered, the app communicates with the Microsoft identity platform by sending requests to the endpoint:

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token

Donde {tenant} puede adoptar uno de cuatro valores:Where the {tenant} can take one of four different values:

ValueValue DescripciónDescription
common Permite que los usuarios con cuentas personales de Microsoft y con cuentas profesionales o educativas de Azure AD inicien sesión en la aplicación.Allows users with both personal Microsoft accounts and work/school accounts from Azure AD to sign into the application.
organizations Permite que solo los usuarios con cuentas profesionales o educativas de Azure AD inicien sesión en la aplicación.Allows only users with work/school accounts from Azure AD to sign into the application.
consumers Permite que solo los usuarios con cuentas personales de Microsoft (MSA) inicien sesión en la aplicación.Allows only users with personal Microsoft accounts (MSA) to sign into the application.
8eaef023-2b34-4da1-9baa-8bc8c9d6a490 o contoso.onmicrosoft.com8eaef023-2b34-4da1-9baa-8bc8c9d6a490 or contoso.onmicrosoft.com Permite que solo los usuarios con cuentas profesionales o educativas de un inquilino específico de Azure AD inicien sesión en la aplicación.Allows only users with work/school accounts from a particular Azure AD tenant to sign into the application. Puede usarse el nombre de dominio descriptivo del inquilino de Azure AD o bien el identificador de GUID del inquilino.Either the friendly domain name of the Azure AD tenant or the tenant's GUID identifier can be used.

Para obtener información sobre cómo interactuar con estos puntos de conexión, elija un tipo de aplicación en particular en la sección Protocolos y siga los vínculos para obtener más información.To learn how to interact with these endpoints, choose a particular app type in the Protocols section and follow the links for more info.

Sugerencia

Cualquier aplicación registrada en Azure AD puede usar la Plataforma de identidad de Microsoft, incluso si no inician sesión en cuentas personales.Any app registered in Azure AD can use the Microsoft identity platform, even if they don't sign in personal accounts. De este modo, puede migrar las aplicaciones existentes a la Plataforma de identidad de Microsoft y MSAL sin volver a crear la aplicación.This way, you can migrate existing applications to the Microsoft identity platform and MSAL without re-creating your application.

TokensTokens

OAuth 2.0 y OpenID Connect hacen un uso intensivo de tokens de portador, que generalmente se representan como JWT (tokens web JSON).OAuth 2.0 and OpenID Connect make extensive use of bearer tokens, generally represented as JWTs (JSON Web Tokens). Un token portador es un token de seguridad ligero que concede al "portador" acceso a un recurso protegido.A bearer token is a lightweight security token that grants the “bearer” access to a protected resource. En este sentido, el "portador" es cualquier persona que obtenga una copia del token.In this sense, the “bearer” is anyone that gets a copy of the token. Aunque una parte debe autenticarse primero con la Plataforma de identidad de Microsoft para recibir el token portador, si no se realizan los pasos necesarios para asegurar el token en la transmisión y el almacenamiento, este puede interceptarse y ser utilizado por un usuario no deseado.Though a party must first authenticate with the Microsoft identity platform to receive the bearer token, if the required steps are not taken to secure the token in transmission and storage, it can be intercepted and used by an unintended party. Mientras que algunos tokens de seguridad disponen de un mecanismo integrado para evitar ser usados por partes no autorizadas, los tokens portadores no tienen este mecanismo y deben transportarse en un canal seguro como, por ejemplo, la seguridad de la capa de transporte (HTTPS).While some security tokens have a built-in mechanism for preventing unauthorized parties from using them, bearer tokens do not have this mechanism and must be transported in a secure channel such as transport layer security (HTTPS). Si un token de portador se transmite sin cifrar, un usuario malintencionado puede utilizar un ataque de tipo "Man in the middle" para adquirir el token y usarlo para obtener acceso no autorizado a un recurso protegido.If a bearer token is transmitted in the clear, a malicious party can use a man-in-the-middle attack to acquire the token and use it for unauthorized access to a protected resource. Los mismos principios de seguridad se aplican al almacenamiento o almacenamiento en caché de tokens portadores para su uso posterior.The same security principles apply when storing or caching bearer tokens for later use. Asegúrate siempre de que la aplicación transmite y almacena los tokens de portador de manera segura.Always ensure that your app transmits and stores bearer tokens in a secure manner. Para otras consideraciones sobre la seguridad de los tokens portadores, consulte la Sección 5 de RFC 6750.For more security considerations on bearer tokens, see RFC 6750 Section 5.

Existen principalmente tres tipos de tokens que se usan en OAuth 2.0/OIDC:There are primarily 3 types of tokens used in OAuth 2.0 / OIDC:

  • Tokens de acceso: tokens que recibe un servidor de recursos de un cliente, con los permisos que se han concedido al cliente.Access tokens - tokens that a resource server receives from a client, containing permissions the client has been granted.
  • Tokens de identificador: tokens que un cliente recibe del servidor de autorización, que se usan para que un usuario inicie sesión y obtener información básica sobre el usuario.ID tokens - tokens that a client receives from the authorization server, used to sign in a user and get basic information about them.
  • Tokens de actualización: los usa un cliente para obtener nuevos tokens de acceso y de identificador a lo largo del tiempo.Refresh tokens - used by a client to get new access and ID tokens over time. Se trata de cadenas opacas y solo las entiende el servidor de autorización.These are opaque strings, and are only understandable by the authorization server.

ProtocolosProtocols

Si está listo para ver algunas solicitudes de ejemplo, comience con uno de los documentos de protocolo siguientes.If you're ready to see some example requests, get started with one of the below protocol documents. Cada uno de ellos corresponde a un escenario de autenticación determinado.Each one corresponds to a particular authentication scenario. Si necesita ayuda para determinar cuál es el flujo correcto para usted, vea Tipos de aplicaciones que puede compilar con la Plataforma de identidad de Microsoft.If you need help with determining which is the right flow for you, check out the types of apps you can build with Microsoft identity platform.