Explore a Biblioteca de Autenticação da Microsoft
A Biblioteca de Autenticação da Microsoft (MSAL) permite que os desenvolvedores adquiram tokens de segurança da plataforma de identidade da Microsoft para autenticar usuários e acessar APIs da Web seguras. Ele pode ser usado para fornecer acesso seguro ao Microsoft Graph, outras APIs da Microsoft, APIs da Web de terceiros ou sua própria API da Web A MSAL suporta muitas arquiteturas e plataformas de aplicativos diferentes, incluindo .NET, JavaScript, Java, Python, Android e iOS.
O MSAL oferece muitas maneiras de obter tokens, com uma API consistente para muitas plataformas. O uso do MSAL oferece os seguintes benefícios:
- Não há necessidade de usar diretamente as bibliotecas OAuth ou código em relação ao 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 tokens e atualiza os tokens para você quando eles 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 seu aplicativo entre.
- Ajuda você a configurar seu aplicativo a partir de arquivos de configuração.
- Ajuda você a solucionar problemas do seu aplicativo expondo exceções, registro em log e telemetria acionáveis.
Tipos de aplicação e cenários
Dentro do MSAL, um token pode ser adquirido de muitos tipos de aplicativos: aplicativos Web, APIs da Web, aplicativos de página única (JavaScript), aplicativos móveis e nativos e daemons e aplicativos do lado do servidor. Atualmente, a MSAL suporta as plataformas e estruturas listadas na tabela a seguir.
Biblioteca | Plataformas e estruturas suportadas |
---|---|
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 (Pré-visualização) | Windows, macOS, Linux |
MSAL Java | Windows, macOS, Linux |
MSAL.js | Estruturas 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 | Aplicações Web com Express, aplicações de ambiente de trabalho com Electron, aplicações de consola multiplataforma |
MSAL Python | Windows, macOS, Linux |
MSAL Reagir | Aplicativos de página única com bibliotecas baseadas em React e React (Next.js, Gatsby.js) |
Fluxos de autenticação
A tabela a seguir mostra alguns dos diferentes fluxos de autenticação fornecidos pela Microsoft Authentication Library (MSAL). Esses fluxos podem ser usados em vários cenários de aplicativos.
Fluxo de autenticação | Habilita | Tipos de aplicativos suportados |
---|---|---|
Código de autorização | Login do usuário e acesso a APIs da Web em nome do usuário. | Desktop, Mobile, aplicativo de página única (SPA) (requer PKCE), Web |
Credenciais de cliente | Acesso a APIs da Web usando a identidade do próprio aplicativo. Normalmente usado para comunicação entre servidores e scripts automatizados que não exigem interação do usuário. | Daemon |
Código do dispositivo | Login do usuário e acesso a APIs da Web em nome do usuário em dispositivos com restrição de entrada, como smart TVs e dispositivos IoT. Também usado por aplicativos de interface de linha de comando (CLI). | Desktop, Móvel |
Concessão implícita | Login do usuário e acesso a APIs da Web em nome do usuário. O fluxo de concessão implícito não é mais recomendado - use o código de autorização com PKCE. | Aplicativo de página única (SPA), Web |
Em nome de (OBO) | Acesso a partir de uma API Web "upstream" para uma API Web "downstream" em nome do utilizador. A identidade do usuário e as permissões delegadas são passadas para a API downstream a partir da API upstream. | API da Web |
Nome de utilizador/palavra-passe (ROPC) | Permite que um aplicativo entre no usuário manipulando diretamente sua senha. O fluxo ROPC NÃO é recomendado. | Desktop, Móvel |
Autenticação integrada do Windows (IWA) | Permite que aplicativos no domínio ou computadores ingressados no Microsoft Entra adquiram um token silenciosamente (sem qualquer interação da interface do usuário do usuário). | Desktop, Móvel |
Aplicações de clientes públicos e confidenciais
A Microsoft Authentication Library (MSAL) define dois tipos de clientes; clientes públicos e clientes 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 em sua capacidade de autenticar com segurança com o servidor de autorização e de manter informações confidenciais de comprovação de identidade para que não possam ser acessadas ou conhecidas por um usuário dentro do escopo de seu acesso.
Ao examinar a natureza pública ou confidencial de um determinado cliente, estamos avaliando a capacidade desse cliente de provar sua identidade ao 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.
Os aplicativos cliente públicos são executados em dispositivos, como desktop, APIs sem navegador, aplicativos de navegador móveis ou do lado do cliente. Eles não podem ser confiáveis para manter segredos de aplicativos com segurança, portanto, só podem acessar APIs da Web em nome do usuário. Sempre que a fonte, ou bytecode compilado de um determinado aplicativo, é transmitida em qualquer lugar que possa ser lida, desmontada ou inspecionada por partes não confiáveis. Como eles também suportam apenas fluxos de clientes públicos e não podem manter segredos de tempo de configuração, eles não podem ter segredos de cliente.
Os aplicativos cliente confidenciais são executados em servidores, como aplicativos Web, aplicativos de API da Web ou aplicativos de serviço/daemon. Eles são considerados de difícil acesso por usuários ou invasores e, portanto, podem armazenar adequadamente segredos de tempo de configuração para afirmar a prova de sua identidade. O ID do cliente é exposto através do navegador da web, mas o segredo é passado apenas no canal traseiro e nunca diretamente exposto.