Tipos de aplicativos que podem ser usados no Active Directory B2CApplication types that can be used in Active Directory B2C

O Azure Active Directory B2C (Azure AD B2C) dá suporte à autenticação para uma variedade de arquiteturas de aplicativos modernas.Azure Active Directory B2C (Azure AD B2C) supports authentication for a variety of modern application architectures. Todas elas se baseiam nos protocolos padrão da indústria, OAuth 2.0 ou OpenID Connect.All of them are based on the industry standard protocols OAuth 2.0 or OpenID Connect. Este artigo descreve os tipos de aplicativos que você pode criar, independentemente da linguagem ou da plataforma que preferir.This article describes the types of applications that you can build, independent of the language or platform you prefer. Além disso, ajuda a reconhecer cenários de alto nível antes de começar a compilar aplicativos.It also helps you understand the high-level scenarios before you start building applications.

Cada aplicativo que usa o Azure AD B2C deve estar registrado no locatário do Azure AD B2C, usando o portal do Azure.Every application that uses Azure AD B2C must be registered in your Azure AD B2C tenant by using the Azure portal. O processo de registro do aplicativo coleta e atribui valores, como:The application registration process collects and assigns values, such as:

  • Uma ID do aplicativo que identifica exclusivamente o aplicativo.An Application ID that uniquely identifies your application.
  • Um URL de resposta que pode ser usado para direcionar as respostas de volta ao seu aplicativo.A Reply URL that can be used to direct responses back to your application.

Cada solicitação enviada para Azure AD B2C especifica um fluxo de usuário (uma política interna) ou uma política personalizada que controla o comportamento de Azure ad B2C.Each request that is sent to Azure AD B2C specifies a user flow (a built-in policy) or a custom policy that controls the behavior of Azure AD B2C. Os dois tipos de política permitem que você crie um conjunto altamente personalizável de experiências de usuário.Both policy types enable you to create a highly customizable set of user experiences.

A interação de cada aplicativo segue um padrão semelhante de alto nível:The interaction of every application follows a similar high-level pattern:

  1. O aplicativo direciona o usuário para o ponto de extremidade v2.0 para executar uma política.The application directs the user to the v2.0 endpoint to execute a policy.
  2. O usuário conclui a política de acordo com a definição de política.The user completes the policy according to the policy definition.
  3. O aplicativo recebe um token de segurança do ponto de extremidade v2.0.The application receives a security token from the v2.0 endpoint.
  4. O aplicativo usa o token de segurança para acessar informações protegidas ou um recurso protegido.The application uses the security token to access protected information or a protected resource.
  5. O servidor de recurso valida o token de segurança para verificar se o acesso pode ser concedido.The resource server validates the security token to verify that access can be granted.
  6. O aplicativo atualiza periodicamente o token de segurança.The application periodically refreshes the security token.

Essas etapas podem variar um pouco com base no tipo de aplicativo que você está compilando.These steps can differ slightly based on the type of application you're building.

Aplicativos WebWeb applications

Para os aplicativos Web (incluindo .NET, PHP, Java, Ruby, Python e Node.js) hospedados em um servidor e acessados por meio de um navegador, o Azure AD B2C dá suporte ao OpenID Connect para todas as experiências de usuário.For web applications (including .NET, PHP, Java, Ruby, Python, and Node.js) that are hosted on a server and accessed through a browser, Azure AD B2C supports OpenID Connect for all user experiences. Na implementação do OpenID Connect do Azure AD B2C, o aplicativo Web inicia as experiências de usuário emitindo solicitações de autenticação para o Microsoft Azure Active Directory.In the Azure AD B2C implementation of OpenID Connect, your web application initiates user experiences by issuing authentication requests to Azure AD. O resultado da solicitação é um id_token.The result of the request is an id_token. Esse token de segurança representa a identidade do usuário.This security token represents the user's identity. Ele também fornece informações sobre o usuário na forma de declarações:It also provides information about the user in the form of claims:

// Partial raw id_token
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImtyaU1QZG1Cd...

// Partial content of a decoded id_token
{
    "name": "John Smith",
    "email": "john.smith@gmail.com",
    "oid": "d9674823-dffc-4e3f-a6eb-62fe4bd48a58"
    ...
}

Saiba mais sobre os tipos de tokens e declarações disponíveis para um aplicativo na referência de token do Azure AD B2C.Learn more about the types of tokens and claims available to an application in the Azure AD B2C token reference.

Em aplicativos Web, cada execução de uma política usa estas etapas de alto nível:In a web application, each execution of a policy takes these high-level steps:

  1. O usuário navega até o aplicativo web.The user browses to the web application.
  2. O aplicativo web redireciona o usuário para o Azure Active Directory B2C que indica a política para executar.The web application redirects the user to Azure AD B2C indicating the policy to execute.
  3. O usuário conclui a política.The user completes policy.
  4. O Azure Active Directory B2C retorna um id_token no navegador.Azure AD B2C returns an id_token to the browser.
  5. O id_token é postado para o URI de redirecionamento.The id_token is posted to the redirect URI.
  6. O id_token é validado e um cookie de sessão é definido.The id_token is validated and a session cookie is set.
  7. A página de segurança é retornada para o usuário.A secure page is returned to the user.

Validação do id_token usando uma chave de assinatura pública recebida do Azure AD é suficiente para verificar a identidade do usuário.Validation of the id_token by using a public signing key that is received from Azure AD is sufficient to verify the identity of the user. Esse processo também define um cookie de sessão que pode ser usado para identificar o usuário nas solicitações de página subsequentes.This process also sets a session cookie that can be used to identify the user on subsequent page requests.

Para ver esse cenário em ação, experimente um destes exemplos de código de entrada de aplicativo Web em nossa seção Introdução.To see this scenario in action, try one of the web application sign-in code samples in our Getting started section.

Além de facilitar a entrada simples, um aplicativo de servidor Web talvez precise acessar algum serviço Web back-end.In addition to facilitating simple sign-in, a web server application might also need to access a back-end web service. Nesse caso, o aplicativo Web pode executar o fluxo do OpenID Connect um pouco diferente, e adquirir tokens usando códigos de autorização e tokens de atualização.In this case, the web application can perform a slightly different OpenID Connect flow and acquire tokens by using authorization codes and refresh tokens. Este cenário é descrito na seção de APIs Weba seguir.This scenario is depicted in the following Web APIs section.

APIs da WebWeb APIs

Você pode usar o Azure AD B2C para proteger serviços Web, tais como a API Web RESTful do aplicativo.You can use Azure AD B2C to secure web services such as your application's RESTful web API. APIs Web podem usar o OAuth 2.0 para proteger seus dados, autenticando solicitações HTTP recebidas usando tokens.Web APIs can use OAuth 2.0 to secure their data, by authenticating incoming HTTP requests using tokens. O chamador de uma API Web acrescenta um token no cabeçalho de autorização de uma solicitação HTTP:The caller of a web API appends a token in the authorization header of an HTTP request:

GET /api/items HTTP/1.1
Host: www.mywebapi.com
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6...
Accept: application/json
...

A API Web pode usar o token para verificar a identidade do chamador da API e extrair informações sobre o chamador por meio de declarações codificadas no token.The web API can then use the token to verify the API caller's identity and to extract information about the caller from claims that are encoded in the token. Saiba mais sobre os tipos de tokens e declarações disponíveis para um aplicativo na referência de token do Azure AD B2C.Learn more about the types of tokens and claims available to an app in the Azure AD B2C token reference.

Uma API Web pode receber tokens de muitos tipos de clientes, incluindo aplicativos Web, aplicativos móveis e da área de trabalho, aplicativos de página única, daemons do lado do servidor e até outras APIs Web.A web API can receive tokens from many types of clients, including web applications, desktop and mobile applications, single page applications, server-side daemons, and other web APIs. Veja um exemplo do fluxo completo de um aplicativo Web que chama uma API Web:Here's an example of the complete flow for a web application that calls a web API:

  1. O aplicativo web executa uma política e o usuário conclui a experiência do usuário.The web application executes a policy and the user completes the user experience.
  2. O Azure AD B2C retorna um (OpenID Connect) id_token e um código de autorização para o navegador.Azure AD B2C returns an (OpenID Connect) id_token and an authorization code to the browser.
  3. As postagens de navegador a id_token e código de autorização ao URI de redirecionamento.The browser posts the id_token and authorization code to the redirect URI.
  4. O servidor web valida o id_token e define um cookie de sessão.The web server validates the id_token and sets a session cookie.
  5. O servidor web solicita ao Azure AD B2C um access_token, fornecendo a ele o código de autorização, a ID de cliente do aplicativo e as credenciais do cliente.The web server asks Azure AD B2C for an access_token by providing it with the authorization code, application client ID, and client credentials.
  6. O access_token e refresh_token são retornados para o servidor web.The access_token and refresh_token are returned to the web server.
  7. A API da web é chamada com o access_token em um cabeçalho de autorização.The web API is called with the access_token in an authorization header.
  8. A API da Web valida o token.The web API validates the token.
  9. Dados seguros são retornados para o aplicativo Web.Secure data is returned to the web application.

Para saber mais sobre códigos de atualização, tokens de atualização e etapas para a obtenção de tokens, leia sobre o Protocolo OAuth 2.0.To learn more about authorization codes, refresh tokens, and the steps for getting tokens, read about the OAuth 2.0 protocol.

Para saber como proteger uma API Web com o Azure AD B2C, confira os tutoriais da API Web em nossa seção Introdução.To learn how to secure a web API by using Azure AD B2C, check out the web API tutorials in our Getting started section.

Aplicativos nativos e móveisMobile and native applications

Os aplicativos instalados em dispositivos, como aplicativos móveis e da área de trabalho, geralmente precisam acessar serviços de back-end ou APIs Web em nome de usuários.Applications that are installed on devices, such as mobile and desktop applications, often need to access back-end services or web APIs on behalf of users. Você pode adicionar experiências de gerenciamento de identidade personalizadas aos aplicativos nativos e chamar com segurança serviços back-end usando o Azure AD B2C e o fluxo de código de autorização do OAuth 2.0.You can add customized identity management experiences to your native applications and securely call back-end services by using Azure AD B2C and the OAuth 2.0 authorization code flow.

Nesse fluxo, o aplicativo executa políticas e recebe um authorization_code do Azure AD depois que o usuário conclui a política.In this flow, the application executes policies and receives an authorization_code from Azure AD after the user completes the policy. O authorization_code representa a permissão do aplicativo para chamar serviços back-end em nome do usuário conectado no momento.The authorization_code represents the application's permission to call back-end services on behalf of the user who is currently signed in. O aplicativo pode trocar o authorization_code em segundo plano por um access_token e um refresh_token.The application can then exchange the authorization_code in the background for an access_token and a refresh_token. O aplicativo pode usar o access_token para autenticar em uma API Web back-end em solicitações HTTP.The application can use the access_token to authenticate to a back-end web API in HTTP requests. Ele também pode usar o refresh_token para obter um novo access_token quando o antigo expira.It can also use the refresh_token to get a new access_token when an older one expires.

Limitações atuaisCurrent limitations

Tipos de aplicativos sem suporteUnsupported application types

Aplicativos daemons/do lado do servidorDaemons/server-side applications

Os aplicativos que contêm processos de longa duração ou que operam sem a presença de um usuário também precisam encontrar uma maneira de acessar os recursos protegidos, tais como APIs Web.Applications that contain long-running processes or that operate without the presence of a user also need a way to access secured resources such as web APIs. Esses aplicativos podem autenticar e obter tokens usando a identidade do aplicativo (em vez da identidade delegada de um usuário) e usando o fluxo de credenciais do cliente OAuth 2.0.These applications can authenticate and get tokens by using the application's identity (rather than a user's delegated identity) and by using the OAuth 2.0 client credentials flow. O fluxo de credenciais do cliente não é o mesmo que o fluxo em nome e o fluxo em nome não deve ser usado para autenticação de servidor para servidor.Client credential flow is not the same as on-behalf-flow and on-behalf-flow should not be used for server-to-server authentication.

Embora o fluxo de credenciais do cliente atualmente não tenha suporte pelo Azure AD B2C, é possível configurar o fluxo de credencial do cliente usando o Azure AD.Although client credential flow is not currently supported by Azure AD B2C, you can set up client credential flow using Azure AD. Um locatário do Azure AD B2C compartilha algumas funcionalidades com os locatários corporativos do Azure AD.An Azure AD B2C tenant shares some functionality with Azure AD enterprise tenants. O fluxo de credencial do cliente tem suporte usando a funcionalidade do Azure AD do locatário do Azure AD B2C.The client credential flow is supported using the Azure AD functionality of the Azure AD B2C tenant.

Para configurar o fluxo de credencial do cliente, consulte Azure Active Directory v2.0 e o fluxo de credencial do cliente OAuth 2.0.To set up client credential flow, see Azure Active Directory v2.0 and the OAuth 2.0 client credentials flow. Uma autenticação com êxito resulta no recebimento de um token formatado para poder ser usado pelo Azure AD, conforme descrito na referência de token do Azure AD.A successful authentication results in the receipt of a token formatted so that it can be used by Azure AD as described in Azure AD token reference.

Cadeias de API Web (fluxo Em nome de)Web API chains (on-behalf-of flow)

Muitas arquiteturas incluem uma API Web que precisa chamar outra API Web downstream, ambas protegidas pelo AD B2C do Azure.Many architectures include a web API that needs to call another downstream web API, where both are secured by Azure AD B2C. Esse cenário é comum em clientes nativos que têm um back-end de API Web que chama um serviço online da Microsoft, como a API do Graph do Azure AD.This scenario is common in native clients that have a Web API back-end and calls a Microsoft online service such as the Azure AD Graph API.

Esse cenário de API Web encadeado pode ter suporte usando a concessão credencial de portador JWT do OAuth 2.0, também conhecida como fluxo Em nome de.This chained web API scenario can be supported by using the OAuth 2.0 JWT bearer credential grant, also known as the on-behalf-of flow. No entanto, o fluxo em nome de não está implementado atualmente no Azure AD B2C.However, the on-behalf-of flow is not currently implemented in the Azure AD B2C.

Aplicativos com falhaFaulted apps

Não edite aplicativos Azure AD B2C das seguintes maneiras:Do not edit Azure AD B2C applications in these ways:

Se você editar o aplicativo do Azure AD B2C fora do portal do Azure, ele se tornará um aplicativo com falha e não poderá mais ser usado com o Azure AD B2C.If you edit the Azure AD B2C application outside of the Azure portal, it becomes a faulted application and is no longer usable with Azure AD B2C. Exclua o aplicativo e crie-o novamente.Delete the application and create it again.

Para excluir o aplicativo, acesse o Portal de Registro de Aplicativos e exclua o aplicativo lá.To delete the application, go to the Application Registration Portal and delete the application there. Para que o aplicativo fique visível, você precisa ser o proprietário do aplicativo (e não apenas um administrador do locatário).In order for the application to be visible, you need to be the owner of the application (and not just an admin of the tenant).

Próximas etapasNext steps

Saiba mais sobre as políticas internas fornecidas pelos fluxos de usuário no Azure Active Directory B2C.Find out more about the built-in policies provided by User flows in Azure Active Directory B2C.