Protocolos OAuth 2.0 e OpenID Connect na plataforma de identidade da MicrosoftOAuth 2.0 and OpenID Connect protocols on the Microsoft identity platform

O ponto final da plataforma de identidade da Microsoft para a autenticação e autorização de identidade como serviço implementa a autenticação e autorização com os protocolos padrão da indústria OpenID Connect (OIDC) e 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. Embora o serviço seja conforme com as normas, pode haver diferenças subtis entre qualquer implementação destes protocolos.While the service is standards-compliant, there can be subtle differences between any two implementations of these protocols. As informações aqui serão úteis se optar por escrever o seu código enviando e manuseando diretamente pedidos HTTP ou utilizando uma biblioteca de código aberto de terceiros, em vez de utilizar uma das nossas bibliotecas de código aberto.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.

Noções básicasThe basics

Em quase todos os fluxos OAuth 2.0 e OpenID Connect, há quatro partes envolvidas na troca:In nearly all OAuth 2.0 and OpenID Connect flows, there are four parties involved in the exchange:

Diagrama mostrando as funções OAuth 2.0

  • O Servidor de Autorização é a plataforma de identidade da Microsoft e é responsável por garantir a identidade do utilizador, conceder e revogar o acesso aos recursos e emitir fichas.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. O servidor de autorização também é conhecido como o fornecedor de identidade - lida com segurança qualquer coisa a ver com a informação do utilizador, o seu acesso e as relações de confiança entre as partes num fluxo.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.
  • O Proprietário de Recursos é normalmente o utilizador final.The Resource Owner is typically the end user. É o partido que detém os dados e tem o poder de permitir que os clientes acedam a esses dados ou recursos.It's the party that owns the data and has the power to allow clients to access that data or resource.
  • O Cliente OAuth é a sua aplicação, identificada pelo seu ID de aplicação.The OAuth Client is your app, identified by its application ID. O cliente OAuth é geralmente a parte com a qual o utilizador final interage, e solicita fichas do servidor de autorização.The OAuth client is usually the party that the end user interacts with, and it requests tokens from the authorization server. O cliente deve ter permissão para aceder ao recurso pelo proprietário do recurso.The client must be granted permission to access the resource by the resource owner.
  • O Servidor de Recursos é onde reside o recurso ou dados.The Resource Server is where the resource or data resides. Confia no Servidor de Autorização para autenticar e autorizar de forma segura o Cliente OAuth, e utiliza fichas de acesso ao Portador para garantir que o acesso a um recurso pode ser concedido.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.

Registo de aplicaçõesApp registration

Todas as aplicações que queiram aceitar contas pessoais e de trabalho ou escolares devem ser registadas através da experiência de registos da App no portal Azure antes de poder assinar estes utilizadores através da OAuth 2.0 ou 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. O processo de registo da aplicação irá recolher e atribuir alguns valores à sua aplicação:The app registration process will collect and assign a few values to your app:

  • Um ID de aplicação que identifica exclusivamente a sua aplicaçãoAn Application ID that uniquely identifies your app
  • Um URI redirecionado (opcional) que pode ser usado para direcionar respostas de volta à sua appA Redirect URI (optional) that can be used to direct responses back to your app
  • Alguns outros valores específicos do cenário.A few other scenario-specific values.

Para obter mais detalhes, saiba como registar uma aplicação.For more details, learn how to register an app.

Pontos FinaisEndpoints

Uma vez registada, a aplicação comunica com a plataforma de identidade da Microsoft enviando pedidos para o ponto final: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

Onde pode {tenant} levar um de quatro valores diferentes:Where the {tenant} can take one of four different values:

ValorValue DescriçãoDescription
common Permite que os utilizadores com contas pessoais da Microsoft e contas de trabalho/escola a partir do Azure AD assinem a aplicação.Allows users with both personal Microsoft accounts and work/school accounts from Azure AD to sign into the application.
organizations Permite que apenas utilizadores com contas de trabalho/escola da Azure AD assinem a aplicação.Allows only users with work/school accounts from Azure AD to sign into the application.
consumers Permite que apenas utilizadores com contas pessoais da Microsoft (MSA) assinem a aplicação.Allows only users with personal Microsoft accounts (MSA) to sign into the application.
8eaef023-2b34-4da1-9baa-8bc8c9d6a490 ou contoso.onmicrosoft.com8eaef023-2b34-4da1-9baa-8bc8c9d6a490 or contoso.onmicrosoft.com Permite apenas que os utilizadores com contas de trabalho/escola de um inquilino particular da AD AD se inscrevam na aplicação.Allows only users with work/school accounts from a particular Azure AD tenant to sign into the application. Ou o nome de domínio amigável do inquilino AZure AD ou o identificador GUID do inquilino podem ser usados.Either the friendly domain name of the Azure AD tenant or the tenant's GUID identifier can be used.

Para aprender a interagir com estes pontos finais, escolha um determinado tipo de aplicação na secção Protocolos e siga os links para obter mais informações.To learn how to interact with these endpoints, choose a particular app type in the Protocols section and follow the links for more info.

Dica

Qualquer aplicação registada no Azure AD pode utilizar a plataforma de identidade da Microsoft, mesmo que não assine em contas pessoais.Any app registered in Azure AD can use the Microsoft identity platform, even if they don't sign in personal accounts. Desta forma, pode migrar as aplicações existentes para a plataforma de identidade da Microsoft e PARA a MSAL sem recriar novamente a sua aplicação.This way, you can migrate existing applications to the Microsoft identity platform and MSAL without re-creating your application.

TokensTokens

OAuth 2.0 e OpenID Connect utilizam extensivamente os tokens portadores, geralmente representados como JWTs (JSON Web Tokens).OAuth 2.0 and OpenID Connect make extensive use of bearer tokens, generally represented as JWTs (JSON Web Tokens). Um símbolo de portador é um símbolo de segurança leve que concede ao "portador" acesso a um recurso protegido.A bearer token is a lightweight security token that grants the “bearer” access to a protected resource. Neste sentido, o "portador" é qualquer um que recebe uma cópia do símbolo.In this sense, the “bearer” is anyone that gets a copy of the token. Embora uma parte tenha primeiro de autenticar com a plataforma de identidade da Microsoft para receber o token do portador, se não forem tomadas as medidas necessárias para garantir o token na transmissão e armazenamento, pode ser intercetado e utilizado por uma parte não intencional.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. Embora alguns tokens de segurança tenham um mecanismo incorporado para impedir que as partes não autorizadas as utilizem, as fichas ao portador não têm este mecanismo e devem ser transportadas num canal seguro, como a segurança da camada 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). Se um símbolo portador for transmitido de forma clara, uma parte maliciosa pode usar um ataque homem-no-meio para adquirir o símbolo e usá-lo para acesso não autorizado a um 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. Os mesmos princípios de segurança aplicam-se ao armazenar ou caching tokens portadores para posterior utilização.The same security principles apply when storing or caching bearer tokens for later use. Certifique-se sempre de que a sua aplicação transmite e armazena fichas ao portador de forma segura.Always ensure that your app transmits and stores bearer tokens in a secure manner. Para obter mais considerações de segurança sobre fichas ao portador, consulte a secção 5 do RFC 6750.For more security considerations on bearer tokens, see RFC 6750 Section 5.

Existem principalmente 3 tipos de fichas utilizadas em OAuth 2.0 / OIDC:There are primarily 3 types of tokens used in OAuth 2.0 / OIDC:

  • Tokens de acesso - fichas que um servidor de recursos recebe de um cliente, contendo permissões que o cliente foi concedido.Access tokens - tokens that a resource server receives from a client, containing permissions the client has been granted.
  • Fichas de ID - fichas que um cliente recebe do servidor de autorização, usado para assinar num utilizador e obter informações básicas sobre eles.ID tokens - tokens that a client receives from the authorization server, used to sign in a user and get basic information about them.
  • Refresh tokens - usado por um cliente para obter novos acessos e fichas de identificação ao longo do tempo.Refresh tokens - used by a client to get new access and ID tokens over time. Estas são cordas opacas, e só são compreensíveis pelo servidor de autorização.These are opaque strings, and are only understandable by the authorization server.

ProtocolosProtocols

Se estiver pronto para ver alguns pedidos de exemplo, inicie com um dos documentos do protocolo abaixo.If you're ready to see some example requests, get started with one of the below protocol documents. Cada um corresponde a um cenário de autenticação particular.Each one corresponds to a particular authentication scenario. Se precisar de ajuda para determinar qual é o fluxo certo para si, confira os tipos de aplicações que pode construir coma plataforma de identidade da 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.