Spring 웹앱에 Microsoft Entra 계정으로 로그인 추가
이 문서에서는 Microsoft Entra 계정의 로그인을 지원하는 Spring 웹앱을 개발하는 방법을 보여 줍니다. 이 문서의 모든 단계를 완료하면 웹앱이 익명으로 액세스되면 Microsoft Entra 로그인 페이지로 리디렉션됩니다. 다음 스크린샷은 Microsoft Entra 로그인 페이지를 보여줍니다.
필수 조건
이 문서의 단계를 완료하려면 다음 필수 구성 요소가 필요합니다.
- 지원되는 JDK(Java Development Kit) Azure에서 개발할 때 사용할 수 있는 JDK에 대한 자세한 내용은 Azure 및 Azure Stack에 대한 Java 지원을 참조하세요.
- Apache Maven, 버전 3.0 이상.
- Azure 구독 Azure 구독이 아직 없는 경우 무료 계정을 만듭니다.
Important
이 문서의 단계를 완료하려면 Spring Boot 버전 2.5 이상이 필요합니다.
Spring Initializr를 사용하여 앱 만들기
https://start.spring.io/ 으로 이동합니다.
Java를 사용하여 Maven 프로젝트를 생성하도록 지정하고 애플리케이션의 그룹 및 아티팩트 이름을 입력합니다.
Spring Web, Microsoft Entra ID 및 OAuth2 클라이언트에 대한 종속성을 추가합니다.
페이지 아래쪽에서 GENERATE 단추를 선택합니다.
메시지가 표시되면 로컬 컴퓨터의 경로에 프로젝트를 다운로드합니다.
Microsoft Entra 인스턴스 만들기
Active Directory 인스턴스 만들기
기존 인스턴스의 관리자인 경우 이 프로세스를 건너뛸 수 있습니다.
에 로그인합니다 https://portal.azure.com.
모든 서비스, ID 및 Microsoft Entra ID를 선택합니다.
조직 이름과 초기 도메인 이름을 입력합니다. 디렉터리의 전체 URL을 복사합니다. 이 자습서의 뒷부분에서 URL을 사용하여 사용자 계정을 추가합니다. (예:
azuresampledirectory.onmicrosoft.com
.)디렉터리의 전체 URL을 복사합니다. 이 자습서의 뒷부분에서 URL을 사용하여 사용자 계정을 추가합니다. (예:
azuresampledirectory.onmicrosoft.com
.).작업을 마쳤으면 만들기를 선택합니다. 새 리소스를 만드는 데 몇 분 정도 걸립니다.
완료되면 표시된 링크를 선택하여 새 디렉터리에 액세스합니다.
Tenant ID(테넌트 ID)를 복사합니다. ID 값은 이 자습서의 뒷부분에서 application.properties 파일을 구성하는 데 사용됩니다.
Spring Boot 앱에 대한 애플리케이션 등록 추가
포털 메뉴에서 앱 등록 선택한 다음 애플리케이션 등록을 선택합니다.
애플리케이션을 지정한 다음, 등록을 선택합니다.
앱 등록 페이지가 나타나면 애플리케이션(클라이언트) ID와 디렉터리(테넌트) ID를 복사합니다. 이러한 값을 사용하여 이 자습서의 뒷부분에서 application.properties 파일을 구성합니다.
탐색 창에서 인증서 및 비밀을 선택합니다. 그런 다음 새 클라이언트 암호를 선택합니다.
설명을 추가하고 만료 목록에서 기간을 선택합니다. 추가를 선택합니다. 키 값이 자동으로 채워집니다.
클라이언트 비밀 값을 복사하고 저장하여 이 자습서의 뒷부분에서 application.properties 파일을 구성합니다. (나중에 이 값을 검색할 수 없습니다.)
앱 등록의 기본 페이지에서 인증을 선택하고 플랫폼 추가를 선택합니다. 그런 다음 웹 애플리케이션을 선택합니다.
새 리디렉션 URI로 입력 http://localhost:8080/login/oauth2/code/ 한 다음 구성을 선택합니다.
3.0.0 이전 버전의 Microsoft Entra starter 버전을 사용하도록 pom.xml 파일을 수정한 경우: 암시적 허용 및 하이브리드 흐름에서 ID 토큰(암시적 및 하이브리드 흐름에 사용됨)을 선택한 다음 저장을 선택합니다.
디렉터리에 사용자 계정을 추가하고 appRole에 해당 계정을 추가합니다.
Active Directory의 개요 페이지에서 사용자를 선택한 다음 새 사용자를 선택합니다.
사용자 패널이 표시되면 사용자 이름과 이름을 입력합니다. 그런 다음 만들기를 선택합니다.
참고 항목
사용자 이름을 입력하려면 자습서의 앞부분에 나온 디렉터리 URL을 지정해야 합니다. 예시:
test-user@azuresampledirectory.onmicrosoft.com
앱 등록의 기본 페이지에서 앱 역할을 선택한 다음, 앱 역할 만들기를 선택합니다. 양식 필드에 값을 입력하고 이 앱 역할을 사용하도록 설정하시겠습니까?를 선택한 다음, 적용을 선택합니다.
Microsoft Entra 디렉터리의 개요 페이지에서 엔터프라이즈 애플리케이션을 선택합니다.
모든 애플리케이션을 선택한 다음 이전 단계에서 앱 역할을 추가한 애플리케이션을 선택합니다.
사용자 및 그룹을 선택한 다음 사용자/그룹 추가를 선택합니다.
사용자 아래에서 선택된 항목 없음을 선택합니다. 이전에 만든 사용자를 선택하고 선택을 선택한 다음 할당을 선택합니다. 이전에 앱 역할을 여러 개 만든 경우 역할을 선택합니다.
사용자 패널로 돌아가서 테스트 사용자를 선택한 다음, 암호 재설정을 선택하고 암호를 복사합니다. 이 자습서의 뒷부분에서 애플리케이션에 로그인할 때 암호를 사용합니다.
앱 구성 및 컴파일
이 자습서의 앞부분에서 작성하고 다운로드한 프로젝트 아카이브의 파일을 디렉터리로 추출합니다.
프로젝트의 src/main/resources 폴더로 이동한 다음 텍스트 편집기에서 application.properties 파일을 엽니다.
이전에 만든 값을 사용하여 앱 등록에 대한 설정을 지정합니다. 예시:
# Enable related features. spring.cloud.azure.active-directory.enabled=true # Specifies your Active Directory ID: spring.cloud.azure.active-directory.profile.tenant-id=<tenant-ID> # Specifies your App Registration's Application ID: spring.cloud.azure.active-directory.credential.client-id=<client-ID> # Specifies your App Registration's secret key: spring.cloud.azure.active-directory.credential.client-secret=<client-secret>
매개 변수에 대한 설명은 다음과 같습니다.
매개 변수 설명 spring.cloud.azure.active-directory.enabled
spring-cloud-azure-starter-active-directory에서 제공하는 기능을 사용하도록 설정합니다. spring.cloud.azure.active-directory.profile.tenant-id
이전의 Active Directory 디렉터리 ID 를 포함합니다. spring.cloud.azure.active-directory.credential.client-id
앞에서 완료한 앱 등록의 애플리케이션 ID를 포함합니다. spring.cloud.azure.active-directory.credential.client-secret
이전에 완료한 앱 등록 키의 값을 포함합니다. application.properties 파일을 저장하고 닫습니다.
애플리케이션의 Java 원본 폴더에 컨트롤러라는 폴더를 만듭니다. 예: src/main/java/com/wingtiptoys/security/controller.
컨트롤러 폴더에 HelloController.java이라는 새 Java 파일을 만들고 텍스트 편집기에서 엽니다.
다음 코드를 입력한 다음 파일을 저장하고 닫습니다.
package com.wingtiptoys.security; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.security.access.prepost.PreAuthorize; @RestController public class HelloController { @GetMapping("Admin") @ResponseBody @PreAuthorize("hasAuthority('APPROLE_Admin')") public String Admin() { return "Admin message"; } }
앱 빌드 및 테스트
명령 프롬프트를 열고 디렉터리를 앱의 pom.xml 파일이 위치한 폴더로 변경합니다.
Maven을 사용하여 Spring Boot 애플리케이션을 빌드하고 실행합니다. 예시:
mvn clean package mvn spring-boot:run
Maven에서 애플리케이션을 빌드하고 시작한 후 웹 브라우저에서 엽니다
http://localhost:8080/Admin
. 사용자 이름 및 암호를 입력하라는 프롬프트가 표시됩니다.참고 항목
새 사용자 계정에 대한 첫 번째 로그인인 경우 암호를 변경하라는 메시지가 표시될 수 있습니다.
성공적으로 로그인한 후에는 컨트롤러에서 샘플 "관리자 메시지" 텍스트가 표시됩니다.
요약
이 자습서에서는 Microsoft Entra Starter를 사용하여 새 Java 웹 애플리케이션을 만들고, 새 Microsoft Entra 테넌트를 구성하고, 테넌트에 새 애플리케이션을 등록한 다음, Spring 주석 및 클래스를 사용하여 웹앱을 보호하도록 애플리케이션을 구성했습니다.
참고 항목
- 새 UI 옵션에 대한 자세한 내용은 새 Azure Portal 앱 등록 교육 가이드를 참조 하세요.
다음 단계
Spring과 Azure에 대한 자세한 사항은 Azure의 Spring 설명서 센터를 참조합니다.