Microsoft 인증 라이브러리를 사용하여 사용자 로그인

완료됨

Microsoft Entra ID로 웹 애플리케이션을 등록했습니다. 이제 애플리케이션에서 사용자를 로그인하는 인증 코드를 추가할 준비가 되었으며 인증 세부 정보를 처리할 수 있는 SDK를 사용하려고 합니다. 이 단원에서는 MSAL4J(Java용 Microsoft 인증 라이브러리)와 이 기능이 인증에 어떻게 유용한지에 대해 알아봅니다.

Java용 Microsoft 인증 라이브러리

MSAL4J(Microsoft 인증 라이브러리 for Java)를 사용하면 애플리케이션이 Microsoft ID(Microsoft Entra ID, Microsoft 계정 및 Azure Active Directory B2C 계정)를 사용하여 사용자 또는 앱에 로그인하고 토큰을 가져와 Microsoft API 또는 Microsoft Entra ID에 등록된 자체 API를 호출할 수 있습니다. 업계 표준 OAuth2 및 OpenID Connect 프로토콜을 사용하여 빌드됩니다.

라이브러리는 다양한 형식의 애플리케이션에 대해 Microsoft Entra ID로 인증할 수 있는 편리한 API를 제공합니다.

  • 웹 애플리케이션
  • 디먼 서비스
  • 명령줄 애플리케이션
  • 데스크톱 애플리케이션

MSAL 개체 초기화

MSAL을 사용하려면 먼저 애플리케이션 코드에서 MSAL 개체를 초기화하고 구성해야 합니다.

MSAL은 클라이언트 애플리케이션을 퍼블릭 클라이언트 및 기밀 클라이언트로 나타내며, 권한 부여 서버를 사용하여 안전하게 인증을 받고 클라이언트 자격 증명의 기밀성을 유지하는 차별화된 기능을 제공합니다.

기밀 클라이언트 애플리케이션은 서버(웹앱, 웹 API 앱 또는 서비스/디먼 앱)에서 실행되는 앱입니다. 기밀 클라이언트는 구성 타임 애플리케이션 비밀을 보유할 수 있습니다.

다음과 같이 기밀 클라이언트의 인스턴스를 만들 수 있습니다.

IClientCredential credential = ClientCredentialFactory.createFromSecret(CLIENT_SECRET);
ConfidentialClientApplication app = ConfidentialClientApplication
                                        .builder(CLIENT_ID, credential)
                                        .authority(AUTHORITY)
                                        .build();
  • CLIENT_ID: 클라이언트 ID는 앱이 등록될 때 Microsoft Entra ID에서 앱에 할당한 고유 애플리케이션(클라이언트) ID입니다.
  • CLIENT_SECRET: 앱을 등록할 때 만들어지는 기밀 클라이언트 앱의 클라이언트 암호입니다.
  • AUTHORITY: 인증 기관은 MSAL이 토큰을 요청할 수 있는 디렉터리를 나타내는 URL입니다. 앱의 ID 공급자 인스턴스 및 로그인 대상으로 구성됩니다.

MSAL을 사용하여 인증 토큰 획득

MSAL은 인증 흐름을 시작하고 인증 토큰이 포함된 AuthenticationResult를 반환하는 acquireToken 메서드를 제공합니다.

사용자가 로그인을 완료하면 사용자 계정 이름, 메일 등과 같은 몇 가지 기본 인증 클레임을 포함하는 인증 결과에 ID 토큰이 반환됩니다.

MSAL을 사용하여 토큰을 획득하는 예는 다음과 같습니다.

final AuthorizationCodeParameters authParams = AuthorizationCodeParameters
                                                    .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES))
                                                    .build();

final IAuthenticationResult result = app.acquireToken(authParams).get();
  • REDIRECT_URI: 리디렉션 URI는 ID 공급자가 보안 토큰을 다시 보내는 URI입니다. Microsoft Entra 앱 등록의 리디렉션 URI와 일치해야 합니다.
  • SCOPES: 범위는 애플리케이션이 요청한 권한입니다. 일반적으로 세 가지 범위 openid profile offline_access는 사용자 로그인에 대한 ID 토큰 응답을 받는 데 충분하며 이러한 범위는 기본적으로 MSAL에서 설정됩니다.

사용자에 대한 로그인 흐름을 시작하고 API를 호출하여 데이터에 액세스할 때 애플리케이션에서 acquireToken 메서드를 사용합니다.