CSP(클라우드 솔루션 공급자) 또는 CPV(제어판 공급업체)에 대한 응용 프로그램을 만들어 보안 응용 프로그램 모델 프레임워크를 구현할 수 있습니다.
중요합니다
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 모듈 사용 중단을 참조하세요.
파트너 센터 서비스 주체 만들기
먼저 다중 테넌트 애플리케이션을 만들 CSP 파트너의 테넌트에서 Microsoft 파트너 센터 서비스 주체를 만듭니다.
CSP 파트너 테넌트의 경우 이 서비스 주체가 이미 있어야 합니다. 그렇지 않은 경우 다음 단계를 사용하여 만듭니다.
관리자 PowerShell 창에서 다음 명령을 실행합니다.
- AzureAD 모듈을 설치합니다.
Install-Module Microsoft.Graph - Connect-MgGraph를 실행하면 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다. 테넌트 관리자 자격 증명을 입력합니다.
Connect-MgGraph - Microsoft 파트너 센터 서비스 주체를 만듭니다.
New-MgServicePrincipal -DisplayName "Microsoft Partner Center" -AppId 00001111-aaaa-2222-bbbb-3333cccc4444
CSP 파트너의 테넌트에서 다중 테넌트 응용 프로그램 만들기
다음 단계를 사용하여 새로 만든 다중 테넌트 응용 프로그램에 대해 다음 응용 프로그램 속성이 설정되어 있는지 확인합니다.
- portal.azure.com 에 로그인
- Microsoft Entra ID 및 앱 등록을 선택하여 다중 테넌트를 사용하여 새 등록을 만듭니다.
- 응용 프로그램의 사용자 대상 표시 이름을 선택합니다.
- 지원되는 계정 유형: 모든 조직 디렉터리의 계정(모든 Microsoft Entra 디렉터리 - 다중 테넌트)을 선택합니다.
- 플랫폼 유형 "웹"을 선택합니다.
- 리디렉션 URL은 파트너에게 동의 성공 메시지를 표시하고 새로 고침 토큰을 수집하는 애플리케이션 리디렉션 URL이어야 합니다. 앱의 리디렉션 URL이 라이브 웹앱이 실행 중인 엔드포인트로 설정되어 있는지 확인합니다. 이 앱은 Microsoft Entra 로그인 호출에서 권한 부여 코드를 수락해야 합니다.
- 클라이언트 암호 탭에서인증서 및 비밀>관리>+새 클라이언트 암호로 이동합니다.
비고
Microsoft Entra ID의 웹앱 설정에서 다음 정보가 필요합니다.
- 애플리케이션 ID
- 애플리케이션 비밀
권한 적용
다중 테넌트 응용 프로그램에 대해 다음 권한이 설정되어 있는지 확인합니다.
API 권한 섹션에서:
다중 테넌트 응용 프로그램에 대한 직접적인 응용 프로그램 권한이 없어야 합니다.
Microsoft Graph에 대한 위임된 권한을 추가하려면 아래 경로를 따르세요.
-
API 권한>권한> 추가마이크로소프트 API>마이크로소프트 그래프>위임된 권한
DelegatedAdminRelationship.ReadWrite.All User.Read.All
-
위임된 권한에서 Microsoft 파트너 센터 - 권한 부여 액세스 파트너 센터 권한에 대한 위임된 권한을 추가하려면 아래 경로를 따릅니다.
- API 권한>권한> 추가내 조직에서 사용하는> APIMicrosoft 파트너 센터>위임된 권한>사용자 가장
-
API 권한>권한> 추가마이크로소프트 API>마이크로소프트 그래프>위임된 권한
동의 링크 제공
파트너에게 동의 링크를 제시하고 서비스 계정으로 로그인하여 파트너 테넌트에서 서비스 계정을 대신하여 작동하도록 애플리케이션을 승인하도록 합니다.
CSP 파트너 사용자는 다중 테넌트 애플리케이션에 동의하려면 전역 관리자 및 관리 에이전트 여야 합니다 .
다중 테넌트 응용 프로그램
다중 테넌트 ApplicationID 를 애플리케이션 ID로 바꿔야 합니다.
App Registrations(앱 등록)로 이동하여 애플리케이션(클라이언트) ID를 선택하고 아래를 바꿉니다.
권한 부여 코드 가져오기
Microsoft Entra 로그인 호출에서 웹앱에 대한 권한 부여 코드를 가져와야 합니다.
- Microsoft Entra ID에 로그인합니다.
- Application-Id MICROSOFT Entra 앱 ID(GUID)로 대체합니다.
- 메시지가 표시되면 MFA가 구성된 사용자 계정으로 로그인합니다.
- 메시지가 표시되면 다른 MFA 정보(전화 번호 또는 이메일 주소)를 입력하여 로그인을 확인합니다.
- 로그인하면 브라우저에서 권한 부여 코드를 사용하여 웹앱 엔드포인트로 호출을 리디렉션합니다. 예를 들어, 다음 샘플 코드는
https://localhost:44395/으로 리디렉션됩니다.
GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code&redirect_url=https://<CSPApplicationUrl_which_collects_refreshtoken>
또는
GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code
중국의 경우 다음 링크를 사용하십시오.
GET https://login.chinacloudapi.cn/common/oauth2/authorize ?&client_id= <CSPApplicationId>&response_type=code&redirect_url= https://<CSPApplicationUrl_which_collects_refreshtoken>
또는
GET https://login.chinacloudapi.cn/common/oauth2/authorize?&client_id= <CSPApplicationId>&response_type=code
인증 코드 호출 추적: https://localhost:44395/?code=<authorization_code>&<rest of properties for state>
새로 고침 토큰 가져오기
그런 다음, 권한 부여 코드를 사용하여 새로 고침 토큰을 가져와야 합니다.
- 권한 부여 코드를 사용하여 Microsoft Entra 로그인 엔드포인트
https://login.microsoftonline.com/CSPTenantID/oauth2/token에 대한 POST 호출을 수행합니다. 예를 들어 다음 샘플 호출참조하세요. - 반환되는 새로 고침 토큰을 확인합니다.
- 새로 고침 토큰을 Azure Key Vault에 저장합니다. 자세한 내용은 Key Vault API 설명서를 참조하세요.
비고
아래 샘플 POST 호출에 언급된 리소스는 GDAP-Graph API용입니다.
다른 PC API에 대한 리소스는 다음과 같습니다.
파트너 센터 API (https://api.partnercenter.microsoft.com)
파트너 API (https://api.partner.microsoft.com)
샘플 호출
POST 'https://login.microsoftonline.com/<partnerTenantId>/oauth2/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--form 'grant_type="authorization_code"' \
--form 'client_id=<application_id or client_id>' \
--form 'resource="https://graph.microsoft.com"' \
--form 'code="<authorization_code>"'
Response Body:
{
"token_type": "Bearer",
"scope": "DelegatedAdminRelationship.ReadWrite.All User.Read.All",
"expires_in": "4549",
"ext_expires_in": "4549",
"expires_on": "1652886571",
"not_before": "1652881721",
"resource": "https://graph.microsoft.com",
"access_token": "Access_token",
"refresh_token": "Refresh_token",
"id_token": "Id_token"
}
키 자격 증명 모음 설정
먼저 CSP 파트너의 테넌트에서 새 웹 애플리케이션을 만듭니다. CPV 애플리케이션이 파트너 센터 API를 호출하는 데 사용되는 경우 CPV는 CPV 파트너의 테넌트에 새 웹 애플리케이션을 만들어야 합니다.
Azure Key Vault를 사용하는 경우:
- 적절한
<key-vault-name>Azure Key Vault를 만들면 다음과 같은 DNS 이름이 생성됩니다.https://<key-vault-name>.vault.azure.net - 키 자격 증명 모음에 새로 고침 토큰을 추가합니다.
키 자격 증명 모음에 대한 액세스 권한 제공
키 자격 증명 모음의 액세스 정책에서 비밀의 Get 및 Set 측면만 관리할 수 있는 권한이 있는 KeyVaultAccessApp을 추가합니다.
프로토타입 구성
프로토타입에는 두 가지 응용 프로그램이 있습니다.
-
파트너 동의: CSP 파트너의 동의를 수락하고 성공 메시지를 표시하도록 설계된 웹 애플리케이션을 나타냅니다.
- 이 응용 프로그램은 동의를 설정하고 동의한 사용자의 새로 고침 토큰을 캡처합니다.
- 동의한 사용자의 새로 고침 토큰은 CSP 파트너 테넌트에 대한 액세스 토큰을 생성하는 데 사용됩니다.
-
CSP 애플리케이션 또는 CPV 애플리케이션: 파트너 센터 API 및 그래프를 호출하는 기본 애플리케이션을 나타냅니다.
- 파트너를 대신하여 상거래 및 사용자 작업을 수행하는 API입니다.
이 애플리케이션은 해당 API를 호출하기 전에 특정 대상(파트너 센터 API 또는 Graph)에 대한 액세스 토큰을 검색합니다. 키 자격 증명 모음에 안전하게 저장된 새로 고침 토큰을 사용합니다.
CSP(파트너 동의 애플리케이션)
CSP 웹 구성
CSP 파트너 애플리케이션의 web.config 경우 파일에 다음 섹션이 호출되어 있습니다. 이러한 값을 해당 애플리케이션 ID 및 비밀로 업데이트합니다. 기본 애플리케이션의 경우 추가 보안 계층을 제공하므로 일반 비밀 대신 웹 애플리케이션 비밀로 "인증서"를 사용합니다.
<!-- AppID that represents CSP application -->
<add key="ida:CSPApplicationId" value="CSPApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment.
The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CSPApplicationSecret" value="CSPApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens --> <add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment.
The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />
CSP 애플리케이션 구성
CSP 파트너 애플리케이션의 app.config 경우 파일에 다음 섹션이 호출되어 있습니다. 해당 애플리케이션 ID 및 비밀로 값을 업데이트합니다. 기본 애플리케이션의 경우 추가 보안 계층을 제공하므로 일반 비밀 대신 웹 애플리케이션 비밀로 "인증서"를 사용합니다.
<!-- AppID that represents CSP application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CPVApplicationSecret" value="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de,
China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />
파트너 동의 신청서(CPV)
CPV 애플리케이션을 사용하는 CSP는 ApplicationConsent API 를 호출하여 고객 테넌트에 서비스 주체를 만들고 Microsoft Graph에 액세스하여 고객 테넌트를 관리할 수 있습니다. 자세한 내용은 파트너 센터 인증을 참조하세요.
CPV 웹 구성
CSP 파트너 애플리케이션의 web.config 경우 파일에 다음 섹션이 호출되어 있습니다. 이러한 값을 해당 애플리케이션 ID 및 비밀로 업데이트합니다. 기본 애플리케이션의 경우 추가 보안 계층을 제공하므로 일반 비밀 대신 웹 애플리케이션 비밀로 "인증서"를 사용합니다.
<!-- AppID that represents Control panel vendor application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CPVApplicationSecret" value="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />
CPV 애플리케이션 구성
CPV 파트너 응용 프로그램의 app.config 경우 파일에 다음 섹션이 호출되어 있습니다. 해당 애플리케이션 ID 및 비밀로 값을 업데이트합니다. 기본 애플리케이션의 경우 추가 보안 계층을 제공하므로 일반 비밀 대신 웹 애플리케이션 비밀로 "인증서"를 사용합니다.
<!-- AppID that represents Control panel vendor application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:CPVApplicationSecret" value="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
Please use certificate as your client secret and deploy the certificate to your environment. The following application secret is for sample application only. please do not use secret directly from the config file.
-->
<add key="ida:KeyVaultClientSecret" value="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />