Microsoft Authentication Library (MSAL) для Go

Note

Microsoft Authentication Library (MSAL) для Go — это новое дополнение к семейству библиотек MSAL. Он был доступен в рабочей предварительной версии, чтобы оценить интерес клиентов и собрать отзывы от сообщества. Мы приветствуем всех участников (см. рекомендации по вкладу в репозитории библиотеки), чтобы помочь нам улучшить библиотеку.

Microsoft Authentication Library (MSAL) для Go является частью платформа удостоверений Майкрософт для разработчиков. Он позволяет выполнять вход пользователей и приложений с помощью удостоверений Microsoft (Azure AD и учетные записи Microsoft) и получать токены для вызова API, такие как Microsoft Graph или ваши собственные API, зарегистрированные в платформе удостоверений Майкрософт. Он построен с использованием стандартных протоколов OAuth2 и OpenID Connect.

Последняя версия кода находится в devветке в GitHub-репозитории библиотеки.

Installation

Настройка Go

Чтобы установить Go, перейдите по этой ссылке.

Установка MSAL Go

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

Usage

Перед использованием MSAL Go необходимо зарегистрировать приложение с помощью платформа удостоверений Майкрософт.

Общедоступная поверхность

Публичный API библиотеки можно найти в следующих каталогах в apps.

  • confidential — API конфиденциального приложения
  • public — API общедоступного приложения
  • cache — интерфейс кеша, который можно использовать для реализации постоянного хранения учетных данных в кеше
  • managedidentity — API управляемой идентификации

Получение токенов с помощью MSAL Go обычно выполняется по следующей общей трехэтапной схеме. В других сценариях получения токенов могут быть небольшие различия. Ниже приведен базовый пример:

  1. MSAL отделяет общедоступные и конфиденциальные клиентские приложения. Итак, вы должны создать экземпляр PublicClientApplication и ConfidentialClientApplication и использовать его на протяжении всего времени работы приложения.

    • Инициализация общедоступного клиента:
    publicClientApp, err := public.New("client_id", public.WithAuthority("https://login.microsoftonline.com/Enter_The_Tenant_Name_Here"))
    
    • Инициализация конфиденциального клиента:
    // 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"))
    

    Сведения об использовании приложения управляемого удостоверения см. в разделе "Управляемое удостоверение"

  2. MSAL поставляется с кэшем в памяти. Использование кэша является необязательным, но мы настоятельно рекомендуем его использовать.

    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
    }
    

    Если в кэше нет подходящего маркера или вы решили пропустить этот шаг, отправьте запрос на Azure AD для получения маркера. Существуют различные способы получения токена в зависимости от типа приложения и сценария использования. Здесь мы демонстрируем поток заполнителей.

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

Вы можете посмотреть примеры приложений для разработчиков, чтобы узнать, как использовать MSAL Go с различными типами приложений в разных сценариях.

Релизы

Полный список выпусков библиотек см. в разделе "Выпуски " в репозитории исходного кода библиотеки.

Помощь сообщества и поддержка

Мы используем Stack Overflow для работы с сообществом по поддержке Azure Active Directory и его пакетов SDK, включая этот! Мы настоятельно рекомендуем задать свои вопросы в Stack Overflow. Вы также можете просмотреть существующие вопросы, чтобы узнать, столкнулся ли кто-то с проблемой раньше. При появлении вопросов используйте azure-ad-msal тег.

Если вы нашли ошибку или запрос на функцию, откройте новую проблему в разделе "Проблемы ".

Отправка отзывов

Если у вас есть отзывы о библиотеке, отправьте запросы на функции и отчеты об ошибках на GitHub.

Библиотека безопасности

Эта библиотека управляет тем, как пользователи входят в систему и получают доступ к службам. Мы рекомендуем использовать последнюю версию библиотеки в приложении, когда это возможно. Мы используем семантическое управление версиями , чтобы управлять риском, связанным с обновлением приложения. Например, если вы всегда скачиваете последнюю минорную версию (например, x.y.x), это гарантирует, что вы получаете последние обновления безопасности и новые функции, при этом интерфейс API остается прежним. Заметки о последней версии и выпуске всегда отображаются на вкладке "Выпуски" GitHub.

Отчеты о безопасности

Если вы найдете проблему безопасности с нашими библиотеками или службами, сообщите о ней secure@microsoft.com максимально подробно. Ваша отправка может иметь право на награду в рамках программы Microsoft Bounty . Пожалуйста, не публикуйте проблемы, связанные с безопасностью, в GitHub Issues или на любом другом общедоступном сайте. Мы свяжемся с вами вскоре после получения информации. Мы рекомендуем получать уведомления о возникновении инцидентов безопасности, перейдя на эту страницу и подписавшись на оповещения рекомендаций по безопасности.