Microsoft Graph 요청 해석
이 연습에서는 Java 웹 애플리케이션이 Microsoft Graph 로그인한 사용자의 프로필을 읽는 방법을 설명합니다. 요청, Java 조각 및 아래 응답은 실제 API 요청을 보내기 위한 랩 또는 요구 사항이 아니라 설명이 포함된 설명 샘플입니다.
구성, 범위 및 동의 관련
참조 서블릿 샘플은 위임된 User.Read을 사용합니다. 해당 aad.scopes 구성 속성은 로그인하는 동안 인증 코드가 요청하는 값을 Config.SCOPES제공합니다.
앱 등록의 API 권한 목록은 구성된 사용 권한을 설명합니다. 다음 스크린샷은 등록을 변경하는 명령이 아니라 해당 보기의 예입니다.
세 가지 사실은 권한 부여 컨텍스트를 설명합니다.
- Microsoft Graph 위해 위임된
User.Read코드 요청입니다. - 테넌트 정책 및 기존 권한 부여에 따라 사용자 또는 권한 있는 관리자가 동의할 수 있습니다.
- 등록에 사용 권한을 추가해도 자체에서 동의를 부여하거나 코드의 요청된 범위를 변경하지 않습니다.
샘플은 로그인하는 동안 이 권한을 요청하므로 모든 그래프 요청에 동의 프롬프트가 표시된다는 별도의 가정은 없습니다.
HTTP 요청 읽기
다음 HTTP 샘플은 프로필 요청의 필수 부분을 보여줍니다.
<graph-access-token> 는 도구에 가져오거나 붙여넣을 토큰이 아닌 설명 자리 표시자입니다.
GET /v1.0/me HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer <graph-access-token>
요청은 HTTPS를 사용하여 https://graph.microsoft.com/v1.0/me에 도달합니다.
/me 위임된 컨텍스트에서 로그인한 사용자를 식별합니다. 헤더는 Authorization Microsoft Graph 위한 액세스 토큰을 전달합니다. 애플리케이션의 ID 토큰, 권한 부여 코드 또는 클라이언트 암호를 전달하지 않습니다.
User.Read 는 로그인한 사용자의 프로필을 읽는 설명된 작업에 충분합니다. 다른 사용자의 정보에 대한 임의 액세스 권한은 부여하지 않습니다.
사용자 가져오기 API 참조는 엔드포인트 및 사용 권한을 설명합니다.
해당하는 Java SDK를 읽습니다.
기록 샘플 CallGraphServlet 은 자체 /call_graph 경로를 처리하고 Microsoft Graph SDK를 사용하여 API 요청을 만듭니다. 다음 조각에서는 토큰 획득 후 호출이 성공했음을 보여 줍니다.
User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();
GraphHelper 는 기본 제공 MSAL4J API가 아니라 샘플에서 정의한 도우미입니다. 샘플의 인증된 컨텍스트에서 로그인한 사용자의 Graph 액세스 토큰을 제공하는 인증 공급자가 있는 GraphServiceClient를 생성합니다.
contextAdapter 는 현재 요청을 해당 애플리케이션 컨텍스트에 연결합니다.
이 SDK 버전 me() 에서 로그인한 사용자 엔드포인트를 선택하고, buildRequest() 요청을 만들고, 전송하고get(), 응답을 Microsoft Graph User 모델로 역직렬화합니다. 조각은 주변 서블렛, 가져오기, 세션 처리 및 오류 처리를 생략합니다. 완전한 애플리케이션이 아닙니다.
메모
이 코드 조각은 이전 샘플의 Microsoft Graph SDK for Java 5.5.0 구문을 반영한 것입니다. v6 SDK는 요청 패턴, 클라이언트 생성, 인증 통합 및 모델 액세스를 변경합니다. Microsoft Graph Java SDK v6 업그레이드 가이드에서는 이러한 차이점을 설명합니다. v6 전용 요청 식은 샘플의 v5 종속성 및 도우미 코드와 호환되지 않습니다.
예시 응답 해석
단축된 예제 응답에는 다음 프로필 필드가 포함될 수 있습니다. 값은 허구이며 학습자가 재현해야 하는 출력이 아닙니다.
{
"displayName": "Avery Rivera",
"jobTitle": "Service specialist",
"mail": "avery@example.com"
}
애플리케이션은 이러한 필드를 사용하여 프로필 정보를 표시할 수 있습니다. 실제 값은 사용자의 디렉터리 프로필에 따라 달라지며 필드가 없거나 null일 수 있습니다. 프로필 필드는 고용 증명이나 애플리케이션의 권한 부여 정책 대신 사용할 수 없습니다.
책임의 전반적인 분할은 중요합니다. Microsoft Entra ID 해당 권한 및 동의 규칙에 따라 토큰을 발급하고, MSAL4J는 해당 토큰을 획득하고, Graph SDK 또는 HTTP 클라이언트는 이를 사용하여 데이터를 요청합니다. Graph 클라이언트를 생성하기만 해도 액세스 권한이 부여되지 않습니다.