연습 - MSAL을 사용하여 Microsoft Graph API에 대한 액세스 권한 부여
이 연습에서는 권한으로 애플리케이션을 구성하고 MSAL을 사용하여 MS Graph(Microsoft Graph) API에서 사용자 프로필 정보에 액세스합니다.
앱 등록에 Microsoft Graph 권한 추가
Microsoft Entra ID로 보호되는 웹 서비스는 해당 서비스에서 노출되는 API 기능 및 데이터에 대한 액세스를 제공하는 권한 집합을 정의합니다. 애플리케이션이 데이터에 액세스하거나 사용자를 대신하여 작업을 수행하려면 이러한 사용 권한을 사용자가 승인하도록 요청해야 합니다. Azure Portal에서 앱 등록에 이러한 API 권한을 할당할 수 있습니다. 애플리케이션에 Microsoft Graph API 권한을 할당하는 단계는 다음과 같습니다.
앱 등록 화면에서 API 권한을 선택하여 애플리케이션에 필요한 API에 대한 액세스 권한을 추가합니다.
애플리케이션 실행
이전 연습에서 실행한 애플리케이션에서 Graph API 호출을 시도할 수 있습니다.
브라우저를 열고
http://localhost:8080/msal4j-servlet-graph/
로 이동합니다. 아직 로그인하지 않은 경우 Microsoft Entra ID로 로그인하도록 리디렉션됩니다. 성공적으로 로그인하면 다음 이미지에 표시된 페이지가 표시됩니다.Graph 호출을 선택하여 Microsoft Graph의
/me
엔드포인트를 호출하고 표시된 사용자 세부 정보를 확인합니다.
Microsoft Graph 액세스에 대한 코드 개요
샘플 프로젝트의 msal4j/callgraphwebapp/ 디렉터리에 있는 서블릿 클래스 CallGraphServlet.java
에서 Microsoft Graph API에 액세스하는 코드를 찾을 수 있습니다. 이 코드는 로그인한 사용자의 프로필 정보를 검색하기 위해 Microsoft Graph API https://graph.microsoft.com/v1.0/me
엔드포인트에 대한 권한 있는 호출을 만드는 애플리케이션의 /call_graph
엔드포인트를 정의합니다. Graph 액세스 코드에 대한 자세한 내용은 다음과 같습니다.
./src/main/resources/authentication.properties 파일에서
aad.scopes
의 값은 User.Read 범위로 설정됩니다.범위는 애플리케이션이 요청하는 액세스 수준을 Microsoft Entra ID에 알려주고 앱 등록의 권한에 매핑합니다. 요청된 범위에 따라 Microsoft Entra ID는 로그인 시 사용자에게 동의 대화를 표시합니다. 사용자가 하나 이상의 범위에 동의하면 인증 응답에 반환된 결과
access_token
으로 인코딩됩니다.사용자가
/call_graph
로 이동하면 애플리케이션은 IGraphServiceClient(Microsoft Graph SDK Java)의 인스턴스를 만들고 로그인한 사용자의 액세스 토큰을 전달합니다. 여기서 Graph 클라이언트는 요청의 권한 부여 헤더에 액세스 토큰을 추가합니다. 그런 다음, 앱은 Graph 클라이언트에 Microsoft Graph의/me
엔드포인트를 호출하여 현재 로그인한 사용자에 대한 세부 정보를 생성하도록 요청합니다.User.Read
범위가 있는 Graph Service에 대한 유효한 액세스 토큰이 이미 있는 경우 애플리케이션 개발자는/me
엔드포인트에 액세스하기 위해 다음 코드만 작성하면 됩니다.//CallGraphServlet.java User user = GraphHelper.getGraphClient(contextAdapter).me().buildRequest().get();