빠른 시작: Java 웹앱에서 사용자 로그인 및 Microsoft Graph API 호출
이 빠른 시작에서는 애플리케이션이 사용자를 로그인하고 Microsoft Graph API를 호출할 수 있는 방법을 보여주는 코드 샘플을 다운로드하고 실행합니다. Microsoft Entra 조직의 사용자는 애플리케이션에 로그인할 수 있습니다.
자세한 내용은 샘플 작동 방식을 참조하세요.
필수 조건
이 샘플을 실행하려면 다음이 필요합니다.
빠른 시작 앱 등록 및 다운로드
팁
이 문서의 단계는 시작하는 포털에 따라 조금씩 다를 수 있습니다.
빠른 시작 애플리케이션을 시작하는 방법에는 기본(옵션 1) 및 수동(옵션 2)이라는 두 가지 방법이 있습니다.
옵션 1: 앱을 등록하고 자동으로 구성한 다음, 코드 샘플을 다운로드합니다.
- 최소한 클라우드 애플리케이션 관리자 자격으로 Microsoft Entra 관리 센터 - 앱 등록 빠른 시작 환경으로 이동합니다.
- 애플리케이션 이름을 입력한 다음, 등록을 선택합니다.
- 포털의 빠른 시작 환경에 있는 지침에 따라 자동으로 구성된 애플리케이션 코드를 다운로드합니다.
옵션 2: 애플리케이션 및 코드 샘플을 등록하고 수동으로 구성
1단계: 애플리케이션 등록
애플리케이션을 등록하고 앱의 등록 정보를 수동으로 추가하려면 다음 단계를 따르세요.
- 최소한 클라우드 애플리케이션 관리자로 Microsoft Entra 관리 센터에 로그인합니다.
- 여러 테넌트에 액세스할 수 있는 경우 위쪽 메뉴의 설정 아이콘을 사용하여 디렉터리 + 구독 메뉴에서 애플리케이션을 등록하려는 테넌트로 전환합니다.
- ID>애플리케이션>앱 등록으로 이동하고 신규 등록을 선택합니다.
- 애플리케이션의 이름을 입력합니다(예: java-webapp). 앱 사용자에게 이 이름이 표시될 수 있습니다. 나중에 변경할 수 있습니다.
- 등록을 선택합니다.
- 개요 페이지에서 애플리케이션(클라이언트) ID와 디렉터리(테넌트) ID를 기록해 둡니다. 나중에 이러한 값이 필요합니다.
- 관리에서 인증을 선택합니다.
- 플랫폼 추가>웹을 선택합니다.
- 리디렉션 URI 섹션에서
https://localhost:8443/msal4jsample/secure/aad
을 입력합니다. - 구성을 선택합니다.
- 웹 섹션의 리디렉션 URI에서
https://localhost:8443/msal4jsample/graph/me
를 두 번째 리디렉션 URI로 입력합니다. - 관리에서 인증서 및 비밀을 선택합니다. 클라이언트 비밀 섹션에서 새 클라이언트 비밀을 선택합니다.
- 키 설명(예: 앱 비밀)을 입력하고, 기본 만료를 그대로 유지하고, 추가를 선택합니다.
- 클라이언트 암호의 값을 기록해 둡니다. 나중에 필요합니다.
2단계: 코드 샘플 다운로드
3단계: 코드 샘플 구성
zip 파일을 로컬 폴더에 추출합니다.
선택 사항. 통합 개발 환경을 사용하는 경우 해당 환경에서 샘플을 엽니다.
application.properties 파일을 엽니다. 이는 src/main/resources/ 폴더에서 찾을 수 있습니다.
aad.clientId
,aad.authority
및aad.secretKey
필드의 값을 각각 애플리케이션 ID, 테넌트 ID 및 클라이언트 암호 값으로 바꿉니다. 다음과 같이 표시되어야 합니다.aad.clientId=Enter_the_Application_Id_here aad.authority=https://login.microsoftonline.com/Enter_the_Tenant_Info_Here/ aad.secretKey=Enter_the_Client_Secret_Here aad.redirectUriSignin=https://localhost:8443/msal4jsample/secure/aad aad.redirectUriGraph=https://localhost:8443/msal4jsample/graph/me aad.msGraphEndpointHost="https://graph.microsoft.com/"
위의 코드에서:
Enter_the_Application_Id_here
는 등록한 애플리케이션의 애플리케이션 ID입니다.Enter_the_Client_Secret_Here
는 등록한 애플리케이션의 인증서 및 비밀에서 만든 클라이언트 암호입니다.Enter_the_Tenant_Info_Here
는 등록한 애플리케이션의 디렉터리(테넌트) ID 값입니다.
- localhost와 함께 HTTPS를 사용하려면
server.ssl.key
속성을 제공합니다. 자체 서명된 인증서를 생성하려면 JRE에 포함된 keytool 유틸리티를 사용합니다.
예를 들면 다음과 같습니다.
keytool -genkeypair -alias testCert -keyalg RSA -storetype PKCS12 -keystore keystore.p12 -storepass password
server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=password
server.ssl.key-alias=testCert
- 생성된 키 저장소 파일을 resources 폴더에 배치합니다.
4단계: 코드 샘플 실행
프로젝트를 실행하려면 다음 단계 중 하나를 수행합니다.
- 포함된 Spring Boot 서버를 사용하여 IDE에서 직접 실행합니다.
- Maven을 사용하여 WAR 파일에 패키징한 다음, Apache Tomcat과 같은 J2EE 컨테이너 솔루션에 배포합니다.
IDE에서 프로젝트 실행
IDE에서 웹 애플리케이션을 실행하려면 실행을 선택한 다음, 프로젝트의 홈페이지로 이동합니다. 이 샘플의 경우 표준 홈 페이지 URL이 https://localhost:8443.입니다.
전면 페이지에서 로그인 단추를 선택하여 사용자를 Microsoft Entra ID로 리디렉션하고 자격 증명을 입력하라는 메시지를 표시합니다.
사용자가 인증되면
https://localhost:8443/msal4jsample/secure/aad
로 리디렉션됩니다. 이제 사용자가 로그인되었으며, 사용자 계정에 대한 정보가 페이지에 표시됩니다. 샘플 UI에는 다음과 같은 단추가 있습니다.- 로그아웃: 애플리케이션에서 현재 사용자를 로그아웃하고 홈페이지로 리디렉션합니다.
- 사용자 정보 표시: Microsoft Graph에 대한 토큰을 획득하고, 로그인한 사용자에 대한 기본 정보를 반환하는 토큰을 포함하는 요청을 사용하여 Microsoft Graph를 호출합니다.
Tomcat에서 프로젝트 실행
웹 샘플을 Tomcat에 배포하려면 소스 코드를 몇 가지 변경합니다.
ms-identity-java-webapp/src/main/java/com.microsoft.azure.msalwebsample/MsalWebSampleApplication을 엽니다.
모든 소스 코드를 삭제하고 다음 코드로 바꿉니다.
package com.microsoft.azure.msalwebsample; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MsalWebSampleApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MsalWebSampleApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MsalWebSampleApplication.class); } }
Tomcat의 기본 HTTP 포트는 8080이지만 포트 8443을 통한 HTTPS 연결이 필요합니다. 이 설정을 구성하려면 다음을 수행합니다.
tomcat/conf/server.xml로 이동합니다.
<connector>
태그를 검색하고 기존 커넥터를 다음 커넥터로 바꿉니다.<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="C:/Path/To/Keystore/File/keystore.p12" keystorePass="KeystorePassword" clientAuth="false" sslProtocol="TLS"/>
명령 프롬프트 창을 엽니다. 이 샘플의 루트 폴더(
pom.xml
파일이 있는 위치)로 이동하고mvn package
을(를) 실행하여 프로젝트를 빌드합니다.- 이 명령은
/targets
디렉터리에msal-web-sample-0.1.0.war
파일을 생성합니다. - 이 파일의 이름을
msal4jsample.war
(으)로 변경 - Tomcat 또는 기타 J2EE 컨테이너 솔루션을 사용하여 WAR 파일을 배포합니다.
msal4jsample.war
파일을 배포하려면 Tomcat 설치의/webapps/
디렉터리에 복사한 다음 Tomcat 서버를 시작합니다.
- 이 명령은
파일이 배포된 후 브라우저를 사용하여
https://localhost:8443/msal4jsample
로 이동합니다.
Important
이 빠른 시작 애플리케이션에서는 클라이언트 암호를 사용하여 자체를 기밀 클라이언트로 식별합니다. 클라이언트 암호는 보안상의 이유로 프로젝트 파일에 일반 텍스트로 추가되므로, 이 애플리케이션을 프로덕션 환경으로 사용하기 전에 클라이언트 암호 대신 인증서를 사용하는 것이 좋습니다. 인증서를 사용하는 방법에 대한 자세한 내용은 애플리케이션 인증을 위한 인증서 자격 증명을 참조하세요.
자세한 정보
샘플 작동 방법
MSAL 가져오기
Java용 MSAL(MSAL4J)은 사용자를 로그인시키고 Microsoft ID 플랫폼으로 보호되는 API 액세스에 사용되는 토큰을 요청할 때 사용되는 Java 라이브러리입니다.
Maven이나 Gradle을 사용하여 MSAL4J를 애플리케이션에 추가하고 애플리케이션의 pom.xml(Maven) 또는 build.gradle(Gradle) 파일을 다음과 같이 변경하여 종속성을 관리합니다.
pom.xml에서:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>msal4j</artifactId>
<version>1.0.0</version>
</dependency>
build.gradle에서:
compile group: 'com.microsoft.azure', name: 'msal4j', version: '1.0.0'
MSAL 초기화
MSAL4J를 사용할 파일의 시작 부분에 다음 코드를 추가하여 Java용 MSAL에 대한 참조를 추가합니다.
import com.microsoft.aad.msal4j.*;
도움말 및 지원
도움이 필요하거나, 문제를 보고하거나, 지원 옵션에 대해 알아보려면 개발자를 위한 도움말 및 지원을 참조하세요.
다음 단계
Microsoft ID 플랫폼에서 사용자를 로그인시키는 웹앱을 빌드하는 방법에 대한 자세한 내용은 다중 파트 시나리오 시리즈를 참조하세요.