다음을 통해 공유


상업용 Marketplace의 거래 가능 SaaS 제품에 대한 방문 페이지 작성

이 문서에서는 Microsoft 상업용 Marketplace에서 판매될 거래 가능한 SaaS 앱에 대한 방문 페이지를 빌드하는 과정을 안내합니다.

Important

Azure AD(Azure Active Directory) Graph는 2023년 6월 30일부터 더 이상 사용되지 않습니다. 앞으로 Azure AD Graph에 더 이상 투자하지 않습니다. Azure AD Graph API에는 보안 관련 수정 외에 SLA 또는 유지 관리 약정이 없습니다. 새로운 기능에 대한 투자는 Microsoft Graph에서만 이루어집니다.

애플리케이션을 Microsoft Graph API로 마이그레이션하는 데 충분한 시간이 있도록 증분 단계에서 Azure AD Graph를 사용 중지합니다. 나중에 발표할 예정이며, Azure AD Graph를 사용하여 새 애플리케이션 만들기를 차단합니다.

자세한 내용은 중요: Azure AD Graph 사용 중지 및 Powershell 모듈 사용 중단을 참조 하세요.

개요

방문 페이지를 SaaS(software as a service) 제품의 "로비"로 생각할 수 있습니다. 구매자가 제품을 구독하면 상업용 Marketplace가 방문 페이지로 이동하여 SaaS 애플리케이션에 대한 구독을 활성화하고 구성합니다. 이를 구매자가 구매한 항목을 확인하고 계정 정보를 확인할 수 있는 주문 확인 단계로 생각하세요. Microsoft Entra ID 및 Microsoft Graph를 사용하여 구매자에 대해 SSO(Single Sign-On)를 사용하도록 설정하고 이름, 전자 메일 주소 및 조직을 포함하여 구독을 확인하고 활성화하는 데 사용할 수 있는 구매자에 대한 중요한 세부 정보를 얻을 수 있습니다.

구독을 활성화하는 데 필요한 정보는 제한되며 Microsoft Entra ID 및 Microsoft Graph에서 제공되므로 기본 동의 이상이 필요한 정보를 요청할 필요가 없습니다. 애플리케이션에 대한 추가 동의가 필요한 사용자 세부 정보가 필요한 경우 구독 활성화가 완료된 후 이 정보를 요청해야 합니다. 이렇게 하면 구매자에 대한 마찰 없는 구독 활성화가 가능하고 중단 위험이 줄어듭니다.

방문 페이지는 일반적으로 다음을 포함합니다.

  • 구매한 제품 및 플랜의 이름과 청구 약관을 제시합니다.
  • 성과 이름, 조직 및 이메일을 포함한 구매자 계정의 세부 정보를 표시합니다.
  • 구매자에게 다른 계정 정보를 확인하거나 대체하도록 요청합니다.
  • 활성화 후 다음 단계에 구매자를 안내합니다. 예를 들어 환영 전자 메일을 받거나, 구독을 관리하거나, 지원을 받거나, 설명서를 읽습니다.

참고 항목

또한 구매자는 활성화 후 구독을 관리할 때 방문 페이지로 이동됩니다. 구매자의 구독이 활성화된 후에는 사용자가 로그인할 수 있도록 SSO를 사용해야 합니다. 사용자를 계정 프로필 또는 구성 페이지로 안내하는 것이 좋습니다.

다음 섹션에서는 방문 페이지를 빌드하는 과정을 안내합니다.

  1. 방문 페이지에 대한 Microsoft Entra 앱 등록 을 만듭니다.
  2. 코드 샘플을 앱의 시작점으로 사용합니다.
  3. 두 개의 Microsoft Entra 앱을 사용하여 프로덕션의 보안을 향상시킵니다.
  4. 상업용 Marketplace에서 URL에 추가된 마켓플레이스 구매 ID 토큰 을 확인합니다.
  5. 요청과 함께 전송된 로그인 후 Microsoft Entra ID에서 받은 ID 토큰으로 인코딩된 클레임에서 정보를 읽습니다.
  6. MICROSOFT GRAPH API를 사용하여 필요에 따라 추가 정보를 수집합니다.

Microsoft Entra 앱 등록 만들기

상업용 Marketplace는 Microsoft Entra ID와 완전히 통합되어 있습니다. 구매자는 Microsoft Entra 계정 또는 MSA(Microsoft 계정)인증된 마켓플레이스에 도착합니다. 구매 후 구매자는 상업용 마켓플레이스에서 방문 페이지 URL로 이동하여 SaaS 애플리케이션의 구독을 활성화하고 관리합니다. 구매자가 Microsoft Entra SSO를 사용하여 애플리케이션에 로그인하도록 허용해야 합니다. (방문 페이지 URL은 제품의 기술 구성 페이지에 지정되어 있음)

방문 페이지 URL에 파운드 기호 문자(#)를 포함하지 마세요. 그렇지 않으면 고객은 방문 페이지에 액세스할 수 없습니다.

ID를 사용하는 첫 번째 단계는 방문 페이지가 Microsoft Entra 애플리케이션으로 등록되었는지 확인하는 것입니다. 애플리케이션을 등록하면 Microsoft Entra ID를 사용하여 사용자를 인증하고 사용자 리소스에 대한 액세스를 요청할 수 있습니다. 앱의 설정에 따라 앱에 토큰을 발급하는 방법을 서비스에서 알 수 있도록 하는 애플리케이션의 정의로 간주될 수 있습니다.

Azure Portal을 사용하여 새 애플리케이션 등록

시작하려면 새 애플리케이션을 등록하기 위한 지침을 따릅니다. 다른 회사의 사용자가 앱을 방문할 수 있도록 하려면 애플리케이션을 사용할 수 있는 사람을 설정할 때 다중 테넌트 옵션 중 하나를 선택해야 합니다.

Microsoft Graph API를 쿼리하려는 경우 웹 API 에 액세스하도록 새 애플리케이션을 구성합니다. 이 애플리케이션에 대한 API 권한을 선택하면 User.Read기본값은 구매자에 대한 기본 정보를 수집하여 온보딩 프로세스를 원활하고 자동으로 만들기에 충분합니다. 관리자 동의가 필요한 레이블이 지정된 API 권한을 요청하지 마세요. 관리자가 아닌 모든 사용자가 방문 페이지를 방문하지 못하도록 차단합니다.

온보딩 또는 프로비저닝 프로세스의 일부로 상승된 권한이 필요한 경우 마켓플레이스에서 보낸 모든 구매자가 처음에 방문 페이지와 상호 작용할 수 있도록 Microsoft Entra ID의 증분 동의 기능을 사용하는 것이 좋습니다.

코드 샘플을 시작점으로 사용

Microsoft Entra 로그인을 사용하도록 설정된 간단한 웹 사이트를 구현하는 몇 가지 샘플 앱을 제공했습니다. 애플리케이션이 Microsoft Entra ID 에 등록되면 빠른 시작 블레이드는 그림 1과 같이 일반적인 애플리케이션 유형 및 개발 스택 목록을 제공합니다. 사용자 환경과 일치하는 항목을 선택하고 다운로드 및 설정 지침을 따릅니다.

그림 1: Azure Portal의 빠른 시작 블레이드

Azure Portal의 빠른 시작 블레이드를 보여 줍니다.

코드를 다운로드하고 개발 환경을 설정한 후 이전 절차에서 기록한 애플리케이션 ID, 테넌트 ID 및 클라이언트 암호를 반영하도록 앱의 구성 설정을 변경합니다. 정확한 단계는 사용 중인 샘플에 따라 달라집니다.

두 개의 Microsoft Entra 앱을 사용하여 프로덕션의 보안 향상

이 문서에서는 상업용 Marketplace SaaS 제품에 대한 방문 페이지를 구현하기 위한 아키텍처의 간소화된 버전을 제공합니다. 프로덕션 환경에서 페이지를 실행하는 경우 다른 보안 애플리케이션을 통해서만 SaaS 처리 API와 통신하여 보안을 개선하는 것이 좋습니다. 이렇게 하려면 두 개의 새 애플리케이션을 만들어야 합니다.

  • 먼저 SaaS 처리 API에 연결하는 기능이 없는 경우를 제외하고 이 시점까지 설명된 다중 테넌트 방문 페이지 애플리케이션입니다. 이 기능은 아래에 설명된 대로 다른 애플리케이션으로 오프로드됩니다.
  • 둘째로, SaaS 처리 API와의 통신을 소유하는 애플리케이션입니다. 이 애플리케이션은 단일 테넌트여야 하며, 조직에서만 사용해야 하며, 액세스 제어 목록을 설정하여 이 앱에서만 API에 대한 액세스를 제한할 수 있습니다.

이렇게 하면 문제의 분리 원칙을 관찰하는 시나리오에서 솔루션을 사용할 수 있습니다. 예를 들어 방문 페이지는 등록된 첫 번째 Microsoft Entra 앱을 사용하여 사용자를 로그인합니다. 사용자가 로그인한 후 방문 페이지는 두 번째 Microsoft Entra ID를 사용하여 액세스 토큰을 요청하여 SaaS 처리 API를 호출하고 확인 작업을 호출합니다.

마켓플레이스 구매 ID 토큰 확인

구매자가 방문 페이지로 전송되면 토큰이 URL 매개 변수에 추가됩니다. 이 토큰은 Microsoft Entra ID 발급 토큰 및 서비스 간 인증에 사용되는 액세스 토큰과 다르며, 구독의 세부 정보를 가져오기 위해 SaaS 처리 API 확인 호출에 대한 입력으로 사용됩니다. SaaS 처리 API에 대한 모든 호출과 마찬가지로 서비스 간 요청은 서비스 간 인증을 위해 앱의 Microsoft Entra 애플리케이션 ID 사용자를 기반으로 하는 액세스 토큰으로 인증됩니다.

참고 항목

대부분의 경우 두 번째 단일 테넌트 애플리케이션에서 이 호출을 하는 것이 좋습니다. 이 문서의 앞부분에 있는 프로덕션 환경에서 보안을 강화하려면 두 개의 Microsoft Entra 앱을 사용하세요.

액세스 토큰 요청

SaaS 처리 API를 사용하여 애플리케이션을 인증하려면 Microsoft Entra ID OAuth 엔드포인트를 호출하여 생성할 수 있는 액세스 토큰이 필요합니다. 게시자의 권한 부여 토큰을 가져오는 방법을 참조하세요.

확인 엔드포인트 호출

SaaS 처리 AAPI는 확인 엔드포인트를 구현하며, 이는 마켓플레이스 토큰의 유효성을 확인하고 구독 정보를 반환하기 위해 호출될 수 있습니다.

ID 토큰에 인코딩된 클레임에서 정보를 읽습니다.

OpenID Connect 흐름의 일부로 https://login.microsoftonline.com/{tenant}/v2.0에 수신하는 테넌트 ID 값을 넣습니다. Microsoft Entra ID는 구매자가 방문 페이지로 전송되는 경우 요청에 ID 토큰 을 추가합니다. 이 토큰에는 이 표에 표시된 정보를 비롯하여 활성화 프로세스에서 유용하게 쓰일 수 있는 여러 가지 기본 정보가 포함되어 있습니다.

설명
aud 이 토큰의 대상 그룹입니다. 이 경우 애플리케이션 ID와 일치하고 유효성을 검사해야 합니다.
preferred_username 방문한 사용자의 기본 사용자 이름입니다. 전자 메일 주소, 전화 번호 또는 기타 식별자일 수 있습니다.
이메일 사용자의 이메일 주소입니다. 이 필드는 비어 있을 수 있습니다.
name 토큰의 주체를 식별하는 사람이 읽을 수 있는 값입니다. 이 경우 구매자의 이름이 됩니다.
oid 애플리케이션에서 사용자를 고유하게 식별하는 Microsoft ID 시스템의 식별자입니다. Microsoft Graph는 이 값을 지정된 사용자 계정의 ID 속성으로 반환합니다.
tid 구매자가 보낸 Microsoft Entra 테넌트 식별자입니다. MSA ID의 경우 이는 항상 9188040d-6c67-4c5b-b112-36a304b66dad입니다. 자세한 내용은 다음 섹션의 참고 사항을 참조하세요. Microsoft Graph API를 사용합니다.
sub 이 특정 애플리케이션에서 사용자를 고유하게 식별하는 식별자입니다.

Microsoft Graph API 사용

ID 토큰에는 구매자를 식별하는 기본 정보가 포함되어 있지만 활성화 프로세스에 구매자의 회사와 같은 추가 세부 정보가 필요할 수 있습니다. 사용자가 이러한 세부 정보를 다시 입력하도록 강제하지 않도록 Microsoft Graph API를 사용하여 이 정보를 요청합니다. 표준 User.Read 권한에는 기본적으로 다음 정보가 포함됩니다.

Description
displayName 사용자의 주소록에 표시되는 이름입니다.
givenName 사용자의 이름입니다.
jobTitle 사용자의 직종입니다.
mail 사용자의 SMTP 주소입니다.
mobilePhone 사용자의 기본 셀룰러 전화 번호입니다.
preferredLanguage 사용자의 기본 설정 언어에 대한 ISO 639-1 코드입니다.
surname 사용자의 성입니다.

사용자 회사 이름 또는 사용자의 위치(국가/지역)와 같은 추가 속성을 선택하여 요청에 포함할 수 있습니다. 자세한 내용은 사용자 리소스 종류에 대한 속성을 참조하세요.

Microsoft Entra ID에 등록된 대부분의 앱은 회사의 Microsoft Entra 테넌트에서 사용자의 정보를 읽을 수 있는 위임된 권한을 부여합니다. 해당 정보에 대한 Microsoft Graph에 대한 모든 요청에는 인증을 위한 액세스 토큰이 함께 있어야 합니다. 액세스 토큰을 생성하는 특정 단계는 사용 중인 기술 스택에 따라 다르지만 샘플 코드에 예제가 포함되어 있습니다. 자세한 내용은 사용자를 대신하여 액세스 권한 가져오기를 참조하세요.

참고 항목

MSA 테넌트(테넌트 ID 9188040d-6c67-4c5b-b112-36a304b66dad포함)의 계정은 ID 토큰으로 이미 수집된 것보다 더 많은 정보를 반환하지 않습니다. 따라서 이러한 계정에 대한 Graph API 호출을 건너뛸 수 있습니다.

비디오 튜토리얼