Biblioteca de Autenticação da Microsoft (MSAL) para Go

Note

A Biblioteca de Autenticação da Microsoft (MSAL) para Go é uma nova adição à família de bibliotecas MSAL. Foi disponibilizado em pré-visualização pronta para produção para avaliar o interesse dos clientes e recolher feedback da comunidade. Convidamos todos os colaboradores (veja as diretrizes de contribuição no repositório da biblioteca) para nos ajudar a melhorar a biblioteca.

A Biblioteca de Autenticação da Microsoft (MSAL) para Go faz parte da plataforma de identidades da Microsoft para programadores. Permite-lhe iniciar sessão com utilizadores ou aplicações com identidades Microsoft (Azure AD e Microsoft Accounts) e obter tokens para chamar APIs como o Microsoft Graph ou as suas próprias APIs registadas na plataforma de identidades da Microsoft. É construído utilizando os protocolos padrão da indústria OAuth2 e OpenID Connect.

O código mais recente encontra-se no ramo dev no repositório GitHub da biblioteca.

Instalação

Preparação do Go

Para instalar o Go, visite este link.

Instalação do MSAL Go

go get -u github.com/AzureAD/microsoft-authentication-library-for-go/

Utilização

Antes de usar o MSAL Go, terá de registar a sua aplicação na plataforma de identidades da Microsoft.

Superfície pública

A API pública da biblioteca pode ser encontrada nos seguintes diretórios sob apps.

  • confidential - A API de aplicação confidencial
  • public - A API de aplicações públicas
  • cache - A interface de cache que pode ser implementada para fornecer armazenamento de persistência de credenciais
  • managedidentity - A API de Identidade Gerida

Adquirir tokens com MSAL Go segue este padrão geral de três passos. Pode haver algumas pequenas diferenças para outros fluxos de aquisição de tokens. Aqui está um exemplo básico:

  1. O MSAL separa as aplicações clientes públicas e confidenciais. Assim, criaria uma instância de PublicClientApplication e ConfidentialClientApplication e utilizá-la-ia ao longo de todo o ciclo de vida da sua aplicação.

    • Inicializar um cliente público:
    publicClientApp, err := public.New("client_id", public.WithAuthority("https://login.microsoftonline.com/Enter_The_Tenant_Name_Here"))
    
    • Inicializar um cliente confidencial:
    // Initializing the client credential
    cred, err := confidential.NewCredFromSecret("client_secret")
    if err != nil {
        return nil, fmt.Errorf("could not create a cred from a secret: %w", err)
    }
    confidentialClientApp, err := confidential.New("client_id", cred, confidential.WithAuthority("https://login.microsoftonline.com/Enter_The_Tenant_Name_Here"))
    

    para usar a aplicação de Identidade Gerida, veja Identidade Gerida

  2. O MSAL vem embalado com uma cache em memória. Utilizar a cache é opcional, mas recomendamos vivamente.

    var userAccount public.Account
    accounts := publicClientApp.Accounts()
    if len(accounts) > 0 {
        // Assuming the user wanted the first account
        userAccount = accounts[0]
        // found a cached account, now see if an applicable token has been cached
        result, err := publicClientApp.AcquireTokenSilent(context.Background(), []string{"your_scope"}, public.WithSilentAccount(userAccount))
        accessToken := result.AccessToken
    }
    

    Se não houver um token adequado na cache, ou optar por saltar este passo, envie um pedido ao Azure AD para obter um token. Existem diferentes métodos para obter um token consoante o tipo de aplicação e o cenário. Aqui, demonstramos um fluxo provisório.

    result, err := publicClientApp.AcquireTokenByOneofTheActualMethods([]string{"your_scope"}, ...(other parameters depending on the function))
    if err != nil {
        log.Fatal(err)
    }
    accessToken := result.AccessToken
    

Pode ver as aplicações de exemplo para programadores sobre como usar o MSAL Go com vários tipos de aplicações em diferentes cenários.

Lançamentos

Para uma lista completa de lançamentos da biblioteca, consulte a secção Releases no repositório de código-fonte da biblioteca.

Ajuda e apoio da comunidade

Usamos o Stack Overflow para trabalhar com a comunidade no suporte ao Azure Active Directory e aos seus SDKs, incluindo este! Recomendamos vivamente que coloque as suas perguntas no Stack Overflow. Também pode consultar perguntas existentes para ver se alguém já se deparou com o problema antes. Por favor, use a azure-ad-msal etiqueta ao colocar as suas perguntas.

Se encontrar um erro ou tiver um pedido de nova funcionalidade, crie uma nova questão na secção Issues.

Enviar feedback

Se tiveres algum feedback sobre bibliotecas, certifica-te de submeter os teus pedidos de funcionalidades e relatórios de bugs no GitHub.

Biblioteca de segurança

Esta biblioteca controla como os utilizadores iniciam sessão e acedem aos serviços. Recomendamos usar a versão mais recente da nossa biblioteca na sua aplicação sempre que possível. Usamos versão semântica para que possa controlar o risco associado à atualização da sua aplicação. Por exemplo, descarregar sempre o número de versão menor mais recente (por exemplo, x.y.x) garante as últimas melhorias de segurança e funcionalidades, mas a nossa superfície de API mantém-se a mesma. Pode sempre ver a versão mais recente e as notas de lançamento no separador Releases no GitHub.

Relatórios de segurança

Se encontrar algum problema de segurança nas nossas bibliotecas ou serviços, por favor reporte-o secure@microsoft.com com o maior detalhe possível. A sua submissão pode ser elegível para uma recompensa através do programa Microsoft Bounty. Por favor, não publiquem problemas de segurança no GitHub Issues ou em qualquer outro site público. Entraremos em contacto consigo em breve após receber a informação. Incentivamo-lo a receber notificações quando ocorrem incidentes de segurança, visitando esta página e subscrevendo o Security Advisory Alerts.