Azure AD B2C: Protocolos de autenticaciónAzure AD B2C: Authentication protocols

Azure Active Directory B2C (Azure AD B2C) proporciona identidad como servicio para sus aplicaciones gracias a la compatibilidad con dos protocolos estándar del sector: OpenID Connect y OAuth 2.0.Azure Active Directory B2C (Azure AD B2C) provides identity as a service for your apps by supporting two industry standard protocols: OpenID Connect and OAuth 2.0. Aunque el servicio cumple con la norma, pueden existir diferencias sutiles entre dos implementaciones cualesquiera de estos protocolos.The service is standards-compliant, but any two implementations of these protocols can have subtle differences.

La información de esta guía es útil si el código se escribe mediante el envío y el control directo de solicitudes HTTP, en lugar de usar una biblioteca de código abierto.The information in this guide is useful if you write your code by directly sending and handling HTTP requests, rather than by using an open source library. Se recomienda que lea esta página antes de profundizar en los detalles de cada protocolo específico.We recommend that you read this page before you dive into the details of each specific protocol. Pero si ya está familiarizado con Azure AD B2C, puede ir directamente a las guías de referencia de protocolo.But if you're already familiar with Azure AD B2C, you can go straight to the protocol reference guides.

Conceptos básicosThe basics

Todas las aplicaciones que usen Azure AD B2C deben estar registrada en su directorio B2C del Portal de Azure.Every app that uses Azure AD B2C needs to be registered in your B2C directory in the Azure portal. El proceso de registro de la aplicación recopila y asigna algunos valores a la aplicación:The app registration process collects and assigns a few values to your app:

  • Un identificador de la aplicación que identifica la aplicación de forma única.An Application ID that uniquely identifies your app.
  • Un URI de redirección o un identificador de paquete que pueda usarse para devolver las respuestas a la aplicación.A Redirect URI or package identifier 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, consulte Cómo registrar la aplicación.For more information, learn how to register your application.

Una vez registrada, la aplicación se comunica con Azure Active Directory (Azure AD) mediante el envío de solicitudes al punto de conexión:After you register your app, it communicates with Azure Active Directory (Azure AD) by sending requests to the endpoint:

https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/oauth2/v2.0/authorize
https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/oauth2/v2.0/token

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

Diagrama que muestra los cuatro roles de OAuth 2.0

  • El servidor de autorización es el punto de conexión de Azure AD.The authorization server is the Azure AD endpoint. Controla de manera segura todo lo relacionado con el acceso y la información de usuario.It securely handles anything related to user information and access. También controla las relaciones de confianza entre las partes de un flujo.It also handles the trust relationships between the parties in a flow. Es responsable de garantizar la identidad del usuario, conceder y revocar el acceso a los recursos y emitir tokens.It is responsible for verifying the user's identity, granting and revoking access to resources, and issuing tokens. También es conocido como proveedor de identidades.It is also known as the identity provider.

  • 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 terceros tengan acceso a esos datos o recursos.It is the party that owns the data, and it has the power to allow third parties to access that data or resource.

  • El cliente OAuth es su aplicación.The OAuth client is your app. Se identifica mediante su identificador de aplicación.It's identified by its Application ID. Suele ser la entidad con la que interactúan los usuarios finales.It's usually the party that end users interact with. También solicita tokens del servidor de autorizaciones.It also requests tokens from the authorization server. El propietario del recurso debe conceder al cliente el permiso para tener acceso al recurso.The resource owner must grant the client permission to access the resource.

  • El servidor de recursos es el lugar en que residen el recurso o los datos.The resource server is where the resource or data resides. Confía en el servidor de autorizaciones para autenticar y autorizar de forma segura al cliente OAuth.It trusts the authorization server to securely authenticate and authorize the OAuth client. También usa tokens de acceso de portador para asegurarse de que se puede conceder el acceso a un recurso.It also uses bearer access tokens to ensure that access to a resource can be granted.

Directivas y flujos de usuarioPolicies and user flows

Puede decirse que las directivas de Azure AD B2C son las características más importantes del servicio.Arguably, Azure AD B2C policies are the most important features of the service. Azure AD B2C amplía los protocolos estándar de OAuth 2.0 y OpenID Connect mediante la introducción de las directivas.Azure AD B2C extends the standard OAuth 2.0 and OpenID Connect protocols by introducing policies. Estas permiten que Azure AD B2C realice tareas que van más allá de la mera autenticación y autorización.These allow Azure AD B2C to perform much more than simple authentication and authorization.

Para ayudarle a configurar las tareas más comunes de identidad, el portal de Azure AD B2C incluye directivas predefinidas y configurables denominadas flujos de usuario.To help you set up the most common identity tasks, the Azure AD B2C portal includes predefined, configurable policies called user flows. Los flujos de usuario describen por completo las experiencias de identidad del consumidor, como el registro, el inicio de sesión y la edición de perfiles.User flows fully describe consumer identity experiences, including sign-up, sign-in, and profile editing. Los flujos de usuario se pueden definir en una interfaz de usuario administrativa.User flows can be defined in an administrative UI. Se pueden ejecutar mediante un parámetro de consulta especial en solicitudes de autenticación de HTTP.They can be executed by using a special query parameter in HTTP authentication requests.

Las directivas y los flujos de usuario no son características estándar de OAuth 2.0 y OpenID Connect, así que debe dedicar tiempo a entenderlas.Policies and user flows are not standard features of OAuth 2.0 and OpenID Connect, so you should take the time to understand them. Para más información, consulte la guía de referencia de flujos de usuario de Azure AD B2C.For more information, see the Azure AD B2C user flow reference guide.

TokensTokens

La implementación de Azure AD B2C de OAuth 2.0 y OpenID Connect hace un uso generalizado de tokens de portador, incluidos los representados como tokens web JSON (JWT).The Azure AD B2C implementation of OAuth 2.0 and OpenID Connect makes extensive use of bearer tokens, including bearer tokens that are represented as JSON web tokens (JWTs). Un token de 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.

El "portador" es cualquier parte que pueda presentar el token.The bearer is any party that can present the token. Para que una parte pueda recibir un token de portador, es necesario que Azure AD la autentique previamente.Azure AD must first authenticate a party before it can receive a bearer token. Pero si no se realizan los pasos necesarios para proteger el token durante la transmisión y el almacenamiento, puede ser interceptado y usado por usuarios no previstos.But 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.

Algunos tokens de seguridad tienen mecanismos integrados que impiden que partes no autorizadas puedan usarlos, pero los tokens de portador no disponen de este mecanismo.Some security tokens have built-in mechanisms that prevent unauthorized parties from using them, but bearer tokens do not have this mechanism. Deberán ser transportados en un canal seguro, como la seguridad de la capa de transporte (HTTPS).They must be transported in a secure channel, such as a transport layer security (HTTPS).

Si un token de portador se transmite fuera de un canal seguro, un usuario malintencionado puede utilizar un ataque de tipo "man in the middle" para adquirir el token y usarlo para obtener acceso sin autorización a un recurso protegido.If a bearer token is transmitted outside a secure channel, a malicious party can use a man-in-the-middle attack to acquire the token and use it to gain unauthorized access to a protected resource. Los mismos principios de seguridad se aplican cuando los tokens de portador se almacenan o guardan en caché para su uso posterior.The same security principles apply when bearer tokens are stored or cached 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 ver más consideraciones de seguridad relativas a los tokens de portador, consulte la sección 5 de RFC 6750.For additional bearer token security considerations, see RFC 6750 Section 5.

En Azure AD B2C: referencia de tokens encontrará más información sobre los distintos tipos de tokens que se usan en Azure AD B2C.More information about the different types of tokens that are used in Azure AD B2C are available in the Azure AD token reference.

ProtocolosProtocols

Cuando esté listo para revisar algunas solicitudes de ejemplo, puede comenzar con uno de los siguientes tutoriales.When you're ready to review some example requests, you can start with one of the following tutorials. Cada uno de ellos corresponde a un escenario de autenticación determinado.Each corresponds to a particular authentication scenario. Si necesita ayuda para determinar qué flujo es el más apropiado en su caso, consulte los tipos de aplicaciones que puede compilar con Azure AD B2C.If you need help determining which flow is right for you, check out the types of apps you can build by using Azure AD B2C.