共用方式為


在 Microsoft Marketplace 中建置可交易 SaaS 供應專案的登陸頁面

本文會引導您完成為將在 Microsoft Marketplace 上銷售的可交易 SaaS 應用程式建置登陸頁面的程式。

重要

自 2023 年 6 月 30 日起,Azure Active Directory (Azure AD) Graph 已淘汰。 接下來,我們不會對 Azure AD Graph 進行進一步的投資。 Azure AD Graph API 除了安全性相關修正之外,沒有 SLA 或維護承諾。 對新功能的投資只會在 Microsoft Graph 中進行。

我們會以累加步驟淘汰 Azure AD Graph,讓您有足夠的時間將應用程式移轉至 Microsoft Graph API。 在稍後宣佈的日期,我們將封鎖使用 Azure AD Graph 建立任何新的應用程式。

若要深入瞭解,請參閱 重要:淘汰 Azure AD Graph 和 PowerShell 模組

概述

您可以將登陸頁面視為軟體即服務 (SaaS) 供應專案的「大廳」。 買方訂閱供應專案之後,Microsoft Marketplace 會將他們導向登陸頁面,以啟用和設定其 SaaS 應用程式的訂用帳戶。 將此視為訂單確認步驟,讓買家查看已購買的內容,並確認其帳戶詳細數據。 使用 Microsoft Entra ID 和 Microsoft Graph,您將為購買者啟用單一登錄 (SSO),並取得您可以用來確認及啟用其訂用帳戶之購買者的重要詳細數據,包括其名稱、電子郵件地址和組織。

由於啟用訂用帳戶所需的資訊有限,且由 Microsoft Entra ID 和 Microsoft Graph 提供,因此不需要要求需要超過基本同意的資訊。 如果您需要需要應用程式額外同意的使用者詳細數據,您應該在訂用帳戶啟用完成後要求此資訊。 這可以讓買家輕鬆地啟用訂閱,並降低放棄的風險。

登入頁面通常包含下列項目:

  • 顯示已購買的供應專案和方案名稱,以及計費條款。
  • 呈現買家的帳戶詳細數據,包括名字和姓氏、組織和電子郵件。
  • 提示買家確認或替代不同的帳戶詳細數據。
  • 在啟用后引導買家進行後續步驟。 例如,收到歡迎電子郵件、管理訂用帳戶、取得支援或閱讀檔。

注意

買家在啟用後管理訂閱時也會被導向登入頁面。 在購買者訂用帳戶啟用之後,您必須使用 SSO 讓使用者登入。 建議將使用者導向帳戶配置檔或組態頁面。

下列各節將引導您完成建置著陸頁的過程:

  1. 為登錄頁面建立 Microsoft Entra 應用程式註冊
  2. 使用程式碼範例作為應用程式的起點
  3. 使用兩個 Microsoft Entra 應用程式來改善生產環境的安全性
  4. 解決 Microsoft Marketplace 新增至 URL 的 Marketplace 購買識別權杖
  5. 從ID令牌中編碼的宣告中讀取資訊,該宣告是在登入后從Microsoft Entra ID接收到的,並已與請求一起發送。
  6. 視需要使用 Microsoft Graph API 來收集其他資訊。

建立 Microsoft Entra 應用程式註冊

Microsoft Marketplace 已與 Microsoft Entra ID 完全整合。 買家抵達 Microsoft Marketplace 時會使用 Microsoft Entra 帳戶或 Microsoft 帳戶 (MSA) 進行驗證。 購買之後,買方會從 Microsoft Marketplace 移至您的登陸頁面 URL,以啟用和管理其 SaaS 應用程式訂用帳戶。 您必須讓買家使用 Microsoft Entra SSO 登入您的應用程式。 (登陸頁面 URL 是在供應專案的 技術配置 頁面中指定的。)

提示

請勿在登陸頁面 URL 中包含磅符號字元 (#)。 否則,客戶將無法存取您的登陸頁面。

使用身分識別的第一個步驟是確定您的登陸頁面已註冊為 Microsoft Entra 應用程式。 註冊應用程式可讓您使用 Microsoft Entra ID 來驗證使用者,並要求存取用戶資源。 它可以被視為應用程式的定義,這可讓服務知道如何根據應用程式的設定向應用程式發出令牌。

使用 Azure 入口網站註冊新的應用程式

若要開始使用,請遵循 註冊新應用程式的指示。 若要讓其他公司的使用者瀏覽應用程式,當系統詢問誰可以使用應用程式時,您必須選擇其中一個多租用戶選項。

如果您要查詢 Microsoft Graph API,設定新的應用程式以存取 web API。 當您選取此應用程式的 API 許可權時,User.Read 的預設值就足以收集購買者的基本資訊,讓上線程式順暢且自動。 請勿要求任何標示為 的 API 許可權需要系統管理員同意,因為這會封鎖所有非系統管理員用戶流覽您的登陸頁面。

如果您在上線或布建程式中需要提高許可權的許可權,請考慮使用 Microsoft Entra ID 的 累加同意 功能,讓從市集傳送的所有買主都能在一開始與登陸頁面互動。

使用程式代碼範例作為起點

我們提供了數個範例應用程式,可實作已啟用 Microsoft Entra 登入的簡單網站。 在您的應用程式註冊於 Microsoft Entra ID 之後,快速入門 頁面會提供一份常見的應用程式類型和開發平台清單,如圖 1 所示。 選擇符合您環境的選項,並遵循下載和設定的指示。

圖 1:Azure 入口網站中的 [快速入門] 面板

展示 Azure 入口網站中的「快速入門」面板。

下載程式代碼並設定開發環境之後,請變更應用程式中的組態設定,以反映您在上一個程式中記錄的應用程式識別碼、租使用者識別碼和客戶端密碼。 請注意,確切步驟會根據您使用的範例而有所不同。

使用兩個Microsoft Entra 應用程式來改善生產環境的安全性

本文提供架構的簡化版本,以實作 Microsoft Marketplace SaaS 供應專案的登陸頁面。 在生產環境中執行頁面時,建議您只透過不同的安全應用程式,與SaaS履行 API 通訊,以改善安全性。 這需要建立兩個新的應用程式:

  • 首先,多租戶版的登陸頁面應用程式如先前所述,但不包括連結 SaaS 履行 API 的功能。 此功能將會卸除至另一個應用程式,如下所述。
  • 其次,應用程式需要擁有與 SaaS 履行 API 通訊的控制權。 此應用程式應該是單一租使用者,只能由您的組織使用,而且可以建立訪問控制清單,以限制只能從此應用程式存取 API。

這使解決方案能夠在遵循 職責分離 原則的情況下運作。 例如,登陸頁面會使用第一個已註冊的 Microsoft Entra 應用程式來登入使用者。 使用者登入後,登入頁面會使用第二個 Microsoft Entra ID 請求存取權杖,以呼叫 SaaS 履行 API 並執行解決操作。

解析 Marketplace 購買識別權杖

當買家被引導至著陸頁時,令牌會被新增至URL參數中。 此令牌既不同於 Microsoft Entra ID 發行的令牌,也不同於用於服務對服務驗證的存取令牌,而是作為 SaaS 履行 API 解析呼叫的輸入,用來獲取訂用帳戶的詳細資料。 如同對 SaaS 履行 API 的所有呼叫,您的服務對服務要求將會使用存取令牌進行驗證,該令牌是以應用程式的 Microsoft Entra 應用程式識別碼用戶為基礎進行服務對服務驗證。

注意

在大部分情況下,最好從第二個單一租使用者應用程式進行此呼叫。 請參閱在本文稍早的部份中,使用兩個Microsoft Entra應用程式來提升生產的安全性

要求存取令牌

若要使用 SaaS 履行 API 驗證您的應用程式,您需要存取令牌,其可藉由呼叫 Microsoft Entra ID OAuth 端點來產生。 請參閱 如何取得發行者的授權權限

呼叫解析端點

SaaS 履行 API 會實作 解析 端點,可呼叫該端點來確認 Marketplace 權杖的有效性,並傳回訂閱的相關資訊。

從標識元令牌中編碼的宣稱讀取資訊

OpenID Connect flow 中,將您收到的租戶 ID 值放在 https://login.microsoftonline.com/{tenant}/v2.0中。 Microsoft Entra ID 會在將買家傳送至登錄頁面時,將 ID 令牌新增至要求。 此令牌包含多個在啟用程式中可能有用的基本資訊,包括此表格中所見的資訊。

價值 描述
澳元 針對此標記的目標受眾。 在此情況下,它應該符合您的應用程式識別碼並經過驗證。
首選使用者名稱 造訪者的主要用戶名稱。 這可能是電子郵件地址、電話號碼或其他標識符。
電子郵件 用戶的電子郵件位址。 請注意,此欄位可能是空的。
名字 識別令牌主體的人類可讀值。 在此情況下,會是買家的名字。
oid 在 Microsoft 身分識別系統中,這個標識符唯一識別用戶於不同應用程式中的身份。 Microsoft Graph 會傳回此值作為指定用戶帳戶的 ID 屬性。
tid 代表購買者來自的 Microsoft Entra 租用戶的識別符號。 如果是 MSA 身分識別,這將始終是 9188040d-6c67-4c5b-b112-36a304b66dad。 如需詳細資訊,請參閱下一節中的附註:使用 Microsoft Graph API。
次級 可唯一識別此特定應用程式中用戶的標識碼。

使用 Microsoft Graph API

標識元令牌包含識別買家的基本資訊,但您的啟用程式可能需要其他詳細數據,例如買家的公司,才能完成上線程式。 使用 Microsoft Graph API 要求這項資訊,以避免強制使用者再次輸入這些詳細數據。 根據預設,標準 User.Read 許可權包含下列資訊。

價值 描述
顯示名稱 使用者通訊錄中顯示的名稱。
givenName 使用者的名字。
職位名稱 用戶的職稱。
郵件 使用者的 SMTP 位址。
手機 使用者的主要行動電話電話號碼。
偏好語言 使用者慣用語言的 ISO 639-1 程式代碼。
使用者的姓氏。

可以選取其他屬性,例如使用者公司的名稱或使用者的位置(國家/地區),以納入要求。 如需詳細資訊,請參閱 用戶資源類型 的屬性。

大部分在 Microsoft Entra ID 下註冊的應用程式會授予委派的許可權,以從公司租用的 Microsoft Entra 讀取使用者的資訊。 向 Microsoft Graph 發出任何查詢該資訊的請求時,必須附上存取權杖以進行驗證。 產生存取令牌的特定步驟將取決於您所使用的技術堆疊,但範例程式代碼會包含範例。 如需詳細資訊,請參閱 代表使用者取得存取權

注意

MSA 租戶(租戶 ID 9188040d-6c67-4c5b-b112-36a304b66dad)所屬的帳戶不會返回比使用 ID 令牌已收集的更多資訊。 因此,您可以略過對這些帳戶進行的 Graph API 請求。

影片教學

  • 在 .NET 中建置簡單的 SaaS 登陸頁面