보안 파트너 애플리케이션 만들기
CSP(클라우드 솔루션 공급자 또는 CPV(제어판 Vendor)에 대한 애플리케이션을 만들어 보안 애플리케이션 모델 프레임워크를 구현할 수 있습니다.
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 모듈 사용 중단을 참조 하세요.
파트너 센터 서비스 주체 만들기
먼저 다중 테넌트 애플리케이션을 만들 CSP 파트너의 테넌트에 Microsoft 파트너 센터 서비스 주체를 만듭니다.
CSP 파트너 테넌트에서 이 서비스 주체가 이미 있어야 합니다. 그렇지 않은 경우 다음 단계를 사용하여 만듭니다.
관리자 PowerShell 창에서 다음 명령을 실행합니다.
- AzureAD 모듈을 설치합니다.
Install-Module Microsoft.Graph
- 커넥트-MgGraph를 실행합니다. 그러면 사용자 이름 및 암호를 묻는 메시지가 표시됩니다. 테넌트 관리자 자격 증명을 입력합니다.
Connect-MgGraph
- Microsoft 파트너 센터 서비스 주체를 만듭니다.
New-MgServicePrincipal -DisplayName "Microsoft Partner Center" -AppId fa3d9a0c-3fb0-42cc-9193-47c7ecd2edbd
CSP 파트너의 테넌트에서 다중 테넌트 애플리케이션 만들기
다음 단계를 사용하여 새로 만든 다중 테넌트 애플리케이션에 대해 다음 애플리케이션 속성이 설정되었는지 확인합니다.
- 애플리케이션의 사용자 연결 표시 이름을 선택합니다.
- 지원되는 계정 유형: 모든 조직 디렉터리의 계정(모든 Microsoft Entra 디렉터리 - 다중 테넌트)을 선택합니다.
- 플랫폼 유형 "웹"을 선택합니다.
- 리디렉션 URL은 파트너에게 동의 성공 메시지를 표시하고 새로 고침 토큰을 수집하는 애플리케이션 리디렉션 URL이어야 합니다. 앱의 리디렉션 URL이 라이브 웹앱이 실행되는 엔드포인트로 설정되어 있는지 확인합니다. 이 앱은 Microsoft Entra 로그인 호출의 권한 부여 코드를 수락해야 합니다.
- 클라이언트 비밀 탭에서 인증서 및 비밀>+새 클라이언트 암호 관리>로 이동합니다.
참고 항목
Microsoft Entra ID의 웹앱 설정에서 다음 정보가 필요합니다.
- 애플리케이션 ID
- 애플리케이션 비밀
사용 권한 적용
다중 테넌트 애플리케이션에 대해 다음 권한이 설정되어 있는지 확인합니다.
API 권한 섹션에서 다음을 수행합니다.
다중 테넌트 애플리케이션에 대한 직접 애플리케이션 권한이 없어야 합니다.
Microsoft Graph에 대한 위임된 권한을 추가하려면 아래 경로를 따릅니다.
- API 권한>Microsoft API>>Microsoft Graph>위임된 사용 권한 추가
DelegatedAdminRelationship.ReadWrite.All User.Read.All
- Microsoft 파트너 센터에 대한 위임된 권한을 추가하려면 아래 경로를 따르세요. - 위임된 권한에 액세스 파트너 센터 권한 부여:
- API 사용 권한>내 조직에서 Microsoft 파트너 센터>위임된 권한>사용자 가장을>사용하는>권한 API 추가
- API 권한>Microsoft API>>Microsoft Graph>위임된 사용 권한 추가
동의 링크 제공
파트너에게 동의 링크를 제공하고 해당 서비스 계정으로 로그인하여 파트너 테넌트에서 서비스 계정을 대신하여 작동하도록 애플리케이션을 승인하도록 합니다.
CSP 파트너 사용자는 글로벌 관리 관리 에이전트여야 다중 테넌트 애플리케이션에 동의할 수 있습니다.
다중 테넌트 애플리케이션
다중 테넌트는 ApplicationID
애플리케이션 ID로 바꿔야 합니다.
앱 등록으로 이동하고 애플리케이션(클라이언트) 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
- 키 자격 증명 모음에 새로 고침 토큰을 추가합니다.
키 자격 증명 모음에 대한 액세스 제공
키 자격 증명 모음의 액세스 정책에서 비밀의 가져오기 및 설정 측면만 관리할 수 있는 권한이 있는 KeyVaultAccessApp을 추가합니다.
프로토타입 구성
프로토타입에는 두 가지 애플리케이션이 있습니다.
- 파트너 동의: CSP 파트너의 동의를 수락하고 성공 메시지를 표시하도록 설계된 웹 애플리케이션을 나타냅니다.
- 이 애플리케이션은 동의를 설정하고 동의한 사용자의 새로 고침 토큰을 캡처합니다.
- 동의한 사용자의 새로 고침 토큰은 CSP 파트너 테넌트에 대한 액세스 토큰을 생성하는 데 사용됩니다.
- CSP 애플리케이션 또는 CPV 애플리케이션: 파트너 센터 API 및 그래프를 호출하는 기본 애플리케이션을 나타냅니다.
- 파트너를 대신하여 상거래 및 사용자 작업을 수행하는 API입니다.
이 애플리케이션은 각 API를 호출하기 전에 특정 대상 그룹(파트너 센터 API 또는 그래프)에 대한 액세스 토큰을 검색합니다. 키 자격 증명 모음에 안전하게 저장된 새로 고침 토큰을 사용합니다.
파트너 동의 애플리케이션(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/" />