Explorar a Biblioteca de Autenticação da Microsoft

Concluído

A MSAL (Biblioteca de Autenticação da Microsoft) permite que os desenvolvedores adquiram tokens de segurança a partir da plataforma de identidade da Microsoft para autenticar usuários e acessar APIs Web seguras. Ele pode ser usado para fornecer acesso seguro ao Microsoft Graph, a outras APIs da Microsoft, APIs Web de terceiros ou à sua própria API. O MSAL dá suporte a diversas arquiteturas e plataformas de aplicativos, incluindo .NET, JavaScript, Java, Python, Android e iOS.

A MSAL oferece muitas maneiras de obter tokens, com uma API consistente para várias plataformas. O uso da MSAL oferece os seguintes benefícios:

  • Não é necessário usar diretamente as bibliotecas OAuth ou o código no protocolo em seu aplicativo.
  • Adquire tokens em nome de um usuário ou em nome de um aplicativo (quando aplicável à plataforma).
  • Mantém um cache de token e atualiza tokens para você quando estão perto de expirar. Você não precisa lidar com a expiração de token por conta própria.
  • Ajuda a especificar em qual público você deseja que o aplicativo se conecte.
  • Ajuda você a configurar seu aplicativo com base nos arquivos de configuração.
  • Ajuda você a solucionar problemas do aplicativo expondo exceções, log e telemetria acionáveis.

Tipos e cenários de aplicativos

Na MSAL, um token pode ser adquirido de vários tipos de aplicativos: aplicativos da Web, APIs da Web, aplicativos de página única (JavaScript), aplicativos móveis e nativos, daemons e aplicativos do lado do servidor. Atualmente, a MSAL dá suporte às plataformas e estruturas listadas na tabela a seguir.

Biblioteca Plataformas e estruturas compatíveis
MSAL para Android Android
MSAL Angular Aplicativos de página única com estruturas Angular e Angular.js
MSAL para iOS e macOS iOS e macOS
MSAL Go (visualização) Windows, macOS, Linux
MSAL Java Windows, macOS, Linux
MSAL.js Estruturas de JavaScript/TypeScript, como Vue.js, Ember.js ou Durandal.js
MSAL.NET .NET Framework, .NET, .NET MAUI, WINUI, Xamarin Android, Xamarin iOS, Plataforma Universal do Windows
Nó MSAL Aplicativos Web com Expresso, aplicativos da área de trabalho com Electron, aplicativos de console de plataforma cruzada
MSAL Python Windows, macOS, Linux
MSAL React Aplicativos de página única com bibliotecas baseadas em reagir e reagir (Next.js, Gatsby.js)

Fluxos de autenticação

A tabela a seguir mostra alguns dos diferentes fluxos de autenticação fornecidos pela MSAL (Biblioteca de Autenticação da Microsoft). Esses fluxos podem ser usados em uma variedade de cenários de aplicativo diferentes.

Fluxo de autenticação Habilita Tipos de aplicativos com suporte
Código de Autorização Entrada do usuário e acesso a APIs Web em nome do usuário. Desktop, móvel, SPA (aplicativo de página única) (exige PKCE), Web
Credenciais de cliente Acesso a APIs Web usando a identidade do próprio aplicativo. Normalmente usado para comunicação de servidor para servidor e scripts automatizados que não exigem interação com o usuário. Daemon
Código do dispositivo Entrada do usuário e acesso a APIs Web em nome do usuário em dispositivos com restrições de entrada, como smart TVs e dispositivos IoT. Também usado por aplicativos de CLI (interface de linha de comando). Desktop, Móvel
Concessão implícita Entrada do usuário e acesso a APIs Web em nome do usuário. O fluxo de concessão implícita não é mais recomendado – use o código de autorização com PKCE. Web, SPA (aplicativo de página única)
OBO (On-Behalf-Of) Acesse em uma API Web "upstream" para uma API Web "downstream" em nome do usuário. A identidade do usuário e as permissões delegadas são passadas da API upstream para a API downstream. API Web
Nome de usuário/senha (ROPC) Permite que um aplicativo conecte o usuário, processando diretamente a senha dele. O fluxo ROPC não é recomendado. Desktop, Móvel
IWA (Autenticação Integrada do Windows) Permite que os aplicativos em computadores ingressados no domínio ou no Microsoft Entra adquiram um token silenciosamente (sem qualquer interação com a interface do usuário). Desktop, Móvel

Aplicativos cliente públicos e confidenciais

A Biblioteca de Autenticação da Microsoft (MSAL) define dois tipos de clientes: públicos e confidenciais. Um cliente é uma entidade de software que tem um identificador exclusivo atribuído por um provedor de identidade. Os tipos de cliente diferem com base na sua capacidade de se autenticar com segurança com o servidor de autorização e de armazenar informações confidenciais que comprovam a identidade, de modo que essas informações não possam ser acessadas ou conhecidas por um usuário dentro do seu escopo de acesso.

Ao examinar a natureza pública ou confidencial de um determinado cliente, estamos avaliando a capacidade desse cliente de provar sua identidade para o servidor de autorização. Isso é importante porque o servidor de autorização deve ser capaz de confiar na identidade do cliente para emitir tokens de acesso.

  • Aplicativos cliente públicos executados em dispositivos, como desktop, APIs sem navegador, aplicativos de navegador móvel ou do lado do cliente. Eles não podem ser confiáveis para manter segredos do aplicativo com segurança, portanto, podem acessar apenas APIs Web em nome do usuário. Sempre que o código-fonte ou o código de bytes compilado de um aplicativo é transmitido para qualquer lugar onde possa ser lido, desmontado ou inspecionado por partes não confiáveis. Como também oferecem suporte apenas a fluxos de clientes públicos e não podem conter segredos de tempo de configuração, não podem ter segredos de clientes.

  • Aplicativos cliente confidenciais são executados em servidores, como aplicativos Web, aplicativos de API Web ou aplicativos de serviço/daemon. Eles são considerados difíceis de acessar por usuários ou invasores e, portanto, podem conter adequadamente segredos de tempo de configuração para afirmar a prova de sua identidade. A ID do cliente é exposta por meio do navegador da Web, mas o segredo é transmitido apenas no canal de apoio e nunca exposto diretamente.