Go용 MSAL(Microsoft 인증 라이브러리)

메모

GO용 MSAL(Microsoft 인증 라이브러리)은 MSAL 라이브러리 제품군에 새로 추가되었습니다. 프로덕션 준비 미리 보기로 제공되어 고객의 관심을 측정하고 커뮤니티에서 피드백을 수집할 수 있습니다. 라이브러리를 개선하는 데 도움이 되는 모든 기여자( 라이브러리 리포지토리의 기여 지침 참조)를 환영합니다.

Go용 Microsoft 인증 라이브러리(MSAL)는 개발자용 Microsoft ID 플랫폼 일부입니다. 이를 통해 Microsoft ID(Azure AD 및 Microsoft계정)를 사용하여 사용자 또는 앱에 로그인하고 Microsoft Graph 또는 Microsoft ID 플랫폼 등록된 사용자 고유의 API와 같은 API를 호출하는 토큰을 가져올 수 있습니다. 업계 표준 OAuth2 및 OpenID Connect 프로토콜을 사용하여 빌드됩니다.

최신 코드는 dev의 분기에 있습니다.

설치

Go 설정하기

Go를 설치하려면 이 링크를 방문하세요.

MSAL Go 설치

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

사용량

MSAL Go를 사용하기 전에 Microsoft ID 플랫폼 애플리케이션을 등록해야 합니다.

공용 표면

라이브러리의 공용 API는 아래의 다음 디렉터리 apps에서 찾을 수 있습니다.

  • confidential - 기밀 애플리케이션 API
  • public - 공용 애플리케이션 API
  • cache - 자격 증명의 지속성 캐시 스토리지를 제공하기 위해 구현할 수 있는 캐시 인터페이스
  • managedidentity - 관리 ID API

MSAL Go를 사용하여 토큰을 획득하는 것은 이 일반적인 3단계 패턴을 따릅니다. 다른 토큰 획득 흐름에 약간의 차이가 있을 수 있습니다. 기본 예제는 다음과 같습니다.

  1. MSAL은 공용 및 기밀 클라이언트 애플리케이션을 구분합니다. 따라서 인스턴스 PublicClientApplicationConfidentialClientApplication 를 만들고 애플리케이션의 수명 동안 이를 사용합니다.

    • 퍼블릭 클라이언트 초기화:
    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"))
    

    관리 ID 애플리케이션을 사용하려면 관리 ID를 참조하세요.

  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를 사용하여 커뮤니티와 협력하여 이 SDK를 포함하여 Azure Active Directory 및 해당 SDK를 지원합니다. Stack Overflow에 대한 질문을 하는 것이 좋습니다. 기존 질문을 탐색하여 이전에 문제가 발생한 적이 있는지 확인할 수도 있습니다. 질문을 할 때 태그를 azure-ad-msal 사용하세요.

버그를 찾거나 기능 요청이 있는 경우 문제 섹션에서 새 문제를 여세요.

피드백 제출

라이브러리 피드백이 있는 경우 GitHub 대한 기능 요청 및 버그 보고서를 제출해야 합니다.

보안 라이브러리

이 라이브러리는 사용자가 로그인하고 서비스에 액세스하는 방법을 제어합니다. 가능하면 앱에서 최신 버전의 라이브러리를 사용하는 것이 좋습니다. 앱 업데이트와 관련된 위험을 제어할 수 있도록 의미 체계 버전 관리를 사용합니다. 예를 들어 항상 최신 부 버전 번호(예: x.y.x)를 다운로드하면 최신 보안 및 기능 향상을 얻을 수 있지만 API 표면은 동일하게 유지됩니다. GitHub 릴리스 탭에서 항상 최신 버전 및 릴리스 정보를 볼 수 있습니다.

보안 보고

당사의 라이브러리 또는 서비스에서 보안 문제를 발견하신 경우, 가능한 한 자세한 내용을 포함하여 secure@microsoft.com로 신고해 주세요. 제출은 Microsoft 장려금 프로그램을 통해 장려금을 받을 수 있습니다. GitHub 문제 또는 기타 공용 사이트에 보안 문제를 게시하지 마세요. 정보를 받는 즉시 연락을 드립니다. 이 페이지를 방문하여 보안 권고 경고를 구독하여 보안 인시던트가 발생하는 경우 알림을 받는 것이 좋습니다.