共用方式為


啟用安全應用程式模型架構

Microsoft引進了安全、可調整的架構,可透過 Microsoft Entra 多重要素驗證 (MFA) 架構來驗證雲端解決方案提供者 (CSP) 合作夥伴和控制面板廠商 (CPV)。

您可以使用新模型來提升合作夥伴中心 API 整合呼叫的安全性。 這有助於各方(包括Microsoft、CSP合作夥伴和 CPV)保護其基礎結構和客戶數據免於安全性風險。

CSP 計劃可讓客戶透過合作夥伴購買Microsoft產品和服務。 根據與Microsoft的合約,合作夥伴必須管理其銷售客戶的環境,並提供支援。 透過此管道購買的客戶,必須對合作夥伴有高度的信任,因為合作夥伴企業具有客戶租戶的高許可權系統管理員存取權。

範圍

本文與 CSP 和 CPV 相關。

CPV

  • CPV 是一個獨立的軟體廠商,可開發應用程式以供 CSP 合作夥伴使用,以與合作夥伴中心 API 整合。
  • CPV 不是直接存取合作夥伴中心或 API 的 CSP 合作夥伴。

CSP

  • 使用應用程式識別碼 + 使用者驗證,並直接與合作夥伴中心 API 整合的 CSP 間接提供者和 CSP 直接合作夥伴。

安全性需求

如需安全性需求的詳細資訊,請參閱 合作夥伴安全性需求

安全應用程式模型

Marketplace 應用程式需要模擬 CSP 合作夥伴許可權,才能呼叫Microsoft API。 這些敏感性應用程式的安全性攻擊可能會導致客戶數據遭到入侵。

如需新驗證架構的概觀和詳細數據,請參閱 安全應用程式模型架構,其中涵蓋原則和最佳做法,讓市集應用程式能夠持續且強固地免於安全性危害。

樣品

下列概觀檔和範例程式代碼說明合作夥伴如何實作安全應用程式模型架構:

休息

若要使用安全應用程式模型架構搭配範例程式代碼進行 REST 呼叫,請遵循下列步驟:

  1. 建立 Web 應用程式

建立 Web 應用程式

  1. 登入 Azure 入口網站

  2. 建立 Microsoft Entra 應用程式。

  3. 根據應用程式的需求 ,將委派的應用程式許可權授與下列資源,。 如有必要,您可以為應用程式資源新增更多委派的許可權。

    1. Microsoft合作夥伴中心(部分租用戶顯示 SampleBECApp

    2. Azure 管理 API(如果您打算呼叫 Azure API)

    3. Windows Azure Active Directory

  4. 請確定應用程式的首頁 URL 已設定為即時 Web 應用程式執行所在的端點。 此應用程式必須接受來自 Microsoft Entra 登入呼叫 授權碼。 例如,在下一節 範例程式代碼 中,Web 應用程式會在 https://localhost:44395/執行。

  5. 請注意以下在 Microsoft Entra ID 中的網頁應用程式設定資訊:

    • 應用程式識別碼
    • 應用程式秘密

注意

建議 使用憑證作為應用程式秘密。 不過,您也可以在 Azure 入口網站中建立應用程式金鑰。 下一節中的範例程式代碼 使用應用程式密鑰。

取得授權碼

您必須取得 Web 應用程式的授權碼,才能從 Microsoft Entra 登入呼叫接受:

  1. 登入 Microsoft Entra ID

    請務必使用您進行合作夥伴中心 API 呼叫的用戶帳戶登入(例如系統管理員代理程式或銷售代理人帳戶)。

  2. 以您的 Microsoft Entra 應用程式識別碼 (GUID) 取代 Application-Id

  3. 出現提示時,請使用已設定 MFA 的用戶帳戶登入。

  4. 出現提示時,請輸入更多 MFA 資訊(電話號碼或電子郵件位址)以確認您的登入。

  5. 登入之後,瀏覽器會使用您的授權碼,將呼叫重新導向至 Web 應用程式端點。 例如,下列範例程式代碼會重新導向至 https://localhost:44395/

授權碼呼叫追蹤

POST https://localhost:44395/ HTTP/1.1
Origin: https://login.microsoftonline.com
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referrer: https://login.microsoftonline.com/kmsi
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: OpenIdConnect.nonce.hOMjjrivcxzuI4YqAw4uYC%2F%2BILFk4%2FCx3kHTHP3lBvA%3D=dHVyRXdlbk9WVUZFdlFONVdiY01nNEpUc0JRR0RiYWFLTHhQYlRGNl9VeXJqNjdLTGV3cFpIWFg1YmpnWVdQUURtN0dvMkdHS2kzTm02NGdQS09veVNEbTZJMDk1TVVNYkczYmstQmlKUzFQaTBFMEdhNVJGVHlES2d3WGlCSlVlN1c2UE9sd2kzckNrVGN2RFNULWdHY2JET3RDQUxSaXRfLXZQdG00RnlUM0E1TUo1YWNKOWxvQXRwSkhRYklQbmZUV3d3eHVfNEpMUUthMFlQUFgzS01RS2NvMXYtbnV4UVJOYkl4TTN0cw%3D%3D

code=AuthorizationCodeValue&id_token=IdTokenValue&<rest of properties for state>

取得刷新憑證

然後,您必須使用授權碼來取得重新整理令牌:

  1. 使用授權碼對 Microsoft Entra 登入端點進行 POST 呼叫 https://login.microsoftonline.com/CSPTenantID/oauth2/token。 如需範例,請參閱下列 範例呼叫

  2. 請注意傳回的重新整理令牌。

  3. 將重新整理令牌儲存在 Azure Key Vault 中。 如需詳細資訊,請參閱 Key Vault API 檔

重要

重新整理令牌必須 儲存為 Key Vault 中的秘密

重新整理呼叫範例

占位符要求:

POST https://login.microsoftonline.com/CSPTenantID/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Content-Length: 966
Expect: 100-continue

請求主體:

resource=https%3a%2f%2fapi.partnercenter.microsoft.com&client_id=Application-Id&client_secret=Application-Secret&grant_type=authorization_code&code=AuthorizationCodeValue

佔位元回應:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Type: application/json; charset=utf-8

回應主體

{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3600","ext_expires_in":"3600","expires_on":"1547581389","not_before":"1547577489","resource":"https://api.partnercenter.microsoft.com","access_token":"AccessTokenValue","id_token":"IDTokenValue"}

取得存取令牌

您必須先取得存取令牌,才能呼叫合作夥伴中心 API。 您必須使用重新整理令牌來取得存取令牌,因為存取令牌通常有有限的存留期(例如,少於一小時)。

佔位符請求:

POST https://login.microsoftonline.com/CSPTenantID/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Content-Length: 1212
Expect: 100-continue

請求正文:

resource=https%3a%2f%2fapi.partnercenter.microsoft.com&client_id=Application-Id &client_secret= Application-Secret&grant_type=refresh_token&refresh_token=RefreshTokenVlaue&scope=openid

佔位符回應:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Type: application/json; charset=utf-8

回應主體:

{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3600","ext_expires_in":"3600","expires_on":"1547581389","not_before":"1547577489","resource":"https://api.partnercenter.microsoft.com","access_token":"AccessTokenValue","id_token":"IDTokenValue"}

進行合作夥伴中心 API 呼叫

您必須使用存取令牌來呼叫合作夥伴中心 API。 請參閱下列範例呼叫。

範例合作夥伴中心 API 呼叫

GET https://api.partnercenter.microsoft.com/v1/customers/CustomerTenantId/users HTTP/1.1
Authorization: Bearer AccessTokenValue
Accept: application/json
X-Locale: en-US
Host: api.partnercenter.microsoft.com

PowerShell

合作夥伴中心 PowerShell 模組 可用來管理合作夥伴中心資源。 這是合作夥伴社群維護的開放原始碼專案,Microsoft未正式支援。 如果您遇到問題,您可以 從社群 取得協助,或 在 GitHub 上提出問題。

您可以使用 合作夥伴中心 PowerShell 模組 減少必要的基礎結構,以交換存取令牌的授權碼。 使用此方法進行合作夥伴中心 REST 呼叫是可選的

如需此程式的詳細資訊,請參閱 Secure App Model PowerShell 檔。

  1. 安裝 Microsoft Entra 識別碼和合作夥伴中心 PowerShell 模組。

    Install-Module AzureAD
    
    Install-Module PartnerCenter
    
  2. 使用 New-PartnerAccessToken 命令來執行同意過程,並取得所需的重新整理令牌。

    $credential = Get-Credential
    
    $token = New-PartnerAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Scopes 'https://api.partnercenter.microsoft.com/user_impersonation' -ServicePrincipal -Credential $credential -Tenant 'yyyy-yyyy-yyyy-yyyy' -UseAuthorizationCode
    

    注意

    ServicePrincipal 參數會與 New-PartnerAccessToken 命令搭配使用,因為正在使用類型為 Web/API 的 Microsoft Entra 應用程式。 這種類型的應用程式需要將用戶端標識碼和秘密包含在存取令牌要求中。 叫用 Get-Credential 命令時,系統會提示您輸入使用者名稱和密碼。 輸入應用程式識別碼作為用戶名稱。 輸入應用程式密碼作為密碼。 當叫用 New-PartnerAccessToken 命令時,系統會提示您再次輸入憑證。 輸入您使用的服務帳戶認證。 此服務帳戶應該是具有適當許可權的合作夥伴帳戶。

  3. 複製重新整理令牌(Refresh Token)的值。

    $token.RefreshToken | clip
    

您應該將重新整理令牌值儲存在安全存放庫中,例如 Azure Key Vault。 如需如何搭配 PowerShell 使用安全應用程式模組的詳細資訊,請參閱 多重要素驗證 一文。