分享方式:


使用 Microsoft Entra 整合來保護混合式存取

Microsoft Entra ID 支援新式驗證通訊協定,協助保護應用程式的安全。 不過,許多商務應用程式會在受保護的公司網路中運作,有些則使用舊版驗證方法。 當公司建立零信任策略並支援混合式和雲端環境時,有一個解決方案可將應用程式連線到 Microsoft Entra ID,並為舊版應用程式提供驗證。

深入瞭解:零信任安全性

Microsoft Entra ID 以原生方式支援新式通訊協定:

  • 安全性判斷提示標記語言 (SAML)
  • Web 服務同盟 (WS-Fed)
  • OpenID Connect (OIDC)

Microsoft Entra 應用程式 Proxy 或 Microsoft Entra 應用程式 Proxy 支援 Kerberos 和標頭型驗證。 不支援其他通訊協定,例如安全殼層 (SSH)、(Microsoft Windows NT LAN Manager) NTLM、輕量型目錄存取通訊協定 (LDAP) 及 Cookie。 但是,獨立軟體供應商 (ISV) 可以建立解決方案,以將這些應用程式與 Microsoft Entra ID 連線。

ISV 可協助客戶探索軟體即服務 (SaaS) 應用程式,並將其遷移至 Microsoft Entra ID。 他們可以將使用舊版驗證方法的應用程式與 Microsoft Entra ID 連結。 客戶可以合併到 Microsoft Entra ID,以簡化其應用程式管理並實作零信任原則。

解決方案概觀

您所建置的方案可以包含下列部分:

  • 應用程式探索 - 通常客戶不會察覺到使用中的每個應用程式
    • 應用程式探索會尋找應用程式,促進應用程式與 Microsoft Entra ID 整合
  • 應用程式移轉 - 建立工作流程以整合應用程式與 Microsoft Entra ID,而不需使用 Microsoft Entra 系統管理中心
    • 整合客戶目前使用的應用程式
  • 舊版驗證支援 - 使用舊版驗證方法和單一登入連接應用程式 (SSO)
  • 條件式存取 - 讓客戶在不使用 Microsoft Entra 系統管理中心的情況下,將 Microsoft Entra 原則套用至解決方案中的應用程式

深入瞭解:什麼是條件式存取?

如需技術考慮和建議,請參閱下列各節。

將應用程式發佈至 Azure Marketplace

Azure Marketplace 是適合 IT 管理員的受信任應用程式來源。 應用程式與 Microsoft Entra ID 相容,並支援 SSO、自動化使用者佈建,並使用自動化應用程式註冊整合到外部租用戶中。

您可以預先整合應用程式與 Microsoft Entra ID,以支援 SSO 和自動化佈建。 請參閱,提交一個要求以在 Microsoft Entra 應用程式資源庫中發佈您的應用程式

我們建議您成為已驗證的發行者,因此客戶知道您是受信任的發行者。 請參閱發行者驗證

為 IT 管理員啟用單一登入

有數種方式可以為您的解決方案啟用 IT 系統管理員的 SSO。 請參閱規劃單一登入部署、SSO 選項

Microsoft Graph 使用 OIDC/OAuth。 客戶會使用 OIDC 登入您的解決方案。 使用 JSON Web 權杖 (JWT) Microsoft Entra ID 問題來與 Microsoft Graph 互動。 請參閱 Microsoft 身分識別平台上的 OpenID Connect

如果您的解決方案針對 IT 系統管理員 SSO 使用 SAML,SAML 權杖將無法讓您的解決方案與 Microsoft Graph 互動。 您可以對 IT 管理員 SSO 使用 SAML,但您的解決方案需要支援 OIDC 與 Microsoft Entra ID 整合,才能從 Microsoft Entra ID 取得 JWT,以與 Microsoft Graph 正確互動。 請參閱瞭解 Microsoft 身分識別平台如何使用 SAML 通訊協定

您可以使用下列其中一個 SAML 方法:

使用用戶端憑證授與類型,這要求解決方案允許客戶輸用戶端識別碼 和密碼。 解決方案也需要您儲存此資訊。 從 Microsoft Entra ID 取得 JWT,然後使用它來與 Microsoft Graph 互動。 請參閱取得權杖。 建議您重新撰寫客戶文件,以瞭解如何在其 Microsoft Entra 租用戶中建立應用程式註冊。 包含端點、URI 及權限。

注意

在應用程式用於 IT 系統管理員或使用者 SSO 之前,客戶 IT 系統管理員必須同意其租用戶中的應用程式。 請參閱對應用程式授與全租用戶的管理員同意

驗證流程

解決方案驗證流程支援下列案例:

  • 客戶的 IT 管理員會使用 SSO 登入,以管理您的解決方案
  • 客戶 IT 系統管理員會使用您的解決方案,將應用程式與 Microsoft Entra ID 與 Microsoft Graph 整合
  • 使用者會登入受您的解決方案和 Microsoft Entra ID 保護的舊版應用程式

客戶的 IT 管理員會執行單一登入進入您的解決方案

當客戶的 IT 管理員登入時,您的解決方案可以使用 SAML 或 OIDC 進行 SSO。 我們建議 IT 系統管理員使用其Microsoft Entra 認證登入您的解決方案,以便使用目前的安全性控制。 透過 SAML 或 OIDC 整合您與 Microsoft SSO 的 Entra ID。

下圖說明使用者驗證流程:

重新導向至 Microsoft Entra ID 以登入的系統管理員圖表,然後重新導向至解決方案。

  1. IT 管理員使用其 Microsoft Entra 認證登入您的解決方案
  2. 解決方案會將 IT 系統管理員重新導向至具有 SAML 或 OIDC 登入要求 Microsoft Entra ID
  3. Microsoft Entra 會驗證 IT 系統管理員,並使用 SAML 權杖或 JWT 在您的解決方案中授權將它們重新導向至您的解決方案

IT 系統管理員將應用程式與 Microsoft Entra ID 整合

IT 系統管理員會使用您的解決方案,將應用程式與 Microsoft Entra ID 整合,其採用 Microsoft Graph 來建立應用程式註冊和 Microsoft Entra 條件式存取原則。

下圖說明使用者驗證流程:

IT 系統管理員、Microsoft Entra ID、您的解決方案及 Microsoft Graph 之間的互動圖表。

  1. IT 管理員使用其 Microsoft Entra 認證登入您的解決方案
  2. 解決方案會將 IT 系統管理員重新導向至具有 SAML 或 OIDC 登入要求 Microsoft Entra ID
  3. Microsoft Entra 會驗證 IT 系統管理員,並使用 SAML 權杖或 JWT 將其重新導向至您的解決方案以進行授權
  4. 當 IT 系統管理員將應用程式與 Microsoft Entra ID 整合時,解決方案會呼叫 Microsoft Graph 與其 JWT 來註冊應用程式,或套用 Microsoft Entra 條件式存取原則

使用者登入應用程式

當使用者登入應用程式時,他們會使用 OIDC 或 SAML。 如果應用程式需要與 Microsoft Graph 或任何受 Microsoft Entra 保護的 API 互動,建議您將其設定為使用 OICD。 此設定可確保 JWT 會套用到與 Microsoft Graph 互動。 如果應用程式不需要與 Microsoft Graph 互動,或 Microsoft Entra 受保護的 API,請使用 SAML。

下圖顯示使用者驗證流程:

使用者、Microsoft Entra ID、解決方案及應用程式之間的互動圖表。

  1. 使用者登入應用程式
  2. 解決方案會將使用者重新導向至具有 SAML 或 OIDC 登入要求 Microsoft Entra ID
  3. Microsoft Entra 會驗證使用者,並使用 SAML 權杖或 JWT 將其重新導向至您的解決方案以進行授權
  4. 解決方案允許使用應用程式通訊協定的要求

Microsoft Graph API

我們建議使用下列 API。 使用 Microsoft Entra ID 來設定委派的權限或應用程式權限。 針對此解決方案,請使用委派的權限。

  • 應用程式範本 API - 在 Azure Marketplace 中,使用此 API 尋找相符的應用程式範本
    • 需要的權限:Application.Read.All
  • 應用程式註冊 API - 建立 OIDC 或 SAML 應用程式註冊,讓使用者登入使用解決方案保護的應用程式
    • 需要的權限:Application.Read.All、Application.ReadWrite.All
  • 服務主體 API - 註冊應用程式之後,請更新服務主體物件,以設定 SSO 屬性
    • 需要的權限:Application.ReadWrite.All、Directory.AccessAsUser.All、AppRoleAssignment.ReadWrite.All (用於指派)
  • 條件式存取 API - 將Microsoft Entra 條件式存取原則套用至使用者應用程式
    • 需要的權限:Policy.Read.All、Policy.ReadWrite.ConditionalAccess 和 Application.Read.All

深入瞭解 使用 Microsoft Graph API

Microsoft Graph API 案例

使用下列資訊來實作應用程式註冊、連接舊版應用程式,以及啟用條件式存取原則。 瞭解如何自動化系統管理員同意、取得權杖簽署憑證,以及指派使用者和群組。

使用 Microsoft Graph API 向 Microsoft Entra ID 註冊應用程式

新增 Azure Marketplace 中的應用程式

客戶使用的一些應用程式位於 Azure Marketplace。 您可以建立將應用程式新增至外部租用戶的解決方案。 使用下列範例搭配 Microsoft Graph API 來搜尋 Azure Marketplace 中的範本。

注意

在應用程式範本 API 中,顯示名稱會區分大小寫。

Authorization: Required with a valid Bearer token
Method: Get

https://graph.microsoft.com/v1.0/applicationTemplates?$filter=displayname eq "Salesforce.com"

如果您從 API 呼叫找到相符專案,請擷取識別碼。 進行下列 API 呼叫,並在 JSON 主體中提供應用程式的顯示名稱:

Authorization: Required with a valid Bearer token
Method: POST
Content-type: application/json

https://graph.microsoft.com/v1.0/applicationTemplates/cd3ed3de-93ee-400b-8b19-b61ef44a0f29/instantiate
{
    "displayname": "Salesforce.com"
}

進行 API 呼叫之後,您會產生服務主體物件。 擷取要用於下一個 API 呼叫的應用程式識別碼和服務主體識別碼。

使用 SAML 通訊協定和登入 URL 修補服務主體物件:

Authorization: Required with a valid Bearer token
Method: PATCH
Content-type: servicePrincipal/json

https://graph.microsoft.com/v1.0/servicePrincipals/aaaaaaaa-bbbb-cccc-1111-222222222222
{
    "preferredSingleSignOnMode":"saml",
    "loginURL": "https://www.salesforce.com"
}

使用重新導向 URI 和識別碼 URI 修補應用程式物件:

Authorization: Required with a valid Bearer token
Method: PATCH
Content-type: application/json

https://graph.microsoft.com/v1.0/applications/00001111-aaaa-2222-bbbb-3333cccc4444
{
    "web": {
    "redirectUris":["https://www.salesforce.com"]},
    "identifierUris":["https://www.salesforce.com"]
}

新增不在 Azure Marketplace 中的應用程式

如果 Azure Marketplace 中沒有相符項目,或整合自訂應用程式,請在 Microsoft Entra ID 中註冊自訂應用程式與範本識別碼:8adf8e6e-67b2-4cf2-a259-e3dc5476c621。 然後,進行下列 API 呼叫,並在 JSON 主體中提供應用程式顯示名稱:

Authorization: Required with a valid Bearer token
Method: POST
Content-type: application/json

https://graph.microsoft.com/v1.0/applicationTemplates/8adf8e6e-67b2-4cf2-a259-e3dc5476c621/instantiate
{
    "displayname": "Custom SAML App"
}

進行 API 呼叫之後,您會產生服務主體物件。 擷取要用於下一個 API 呼叫的應用程式識別碼和服務主體識別碼。

使用 SAML 通訊協定和登入 URL 修補服務主體物件:

Authorization: Required with a valid Bearer token
Method: PATCH
Content-type: servicePrincipal/json

https://graph.microsoft.com/v1.0/servicePrincipals/aaaaaaaa-bbbb-cccc-1111-222222222222
{
    "preferredSingleSignOnMode":"saml",
    "loginURL": "https://www.samlapp.com"
}

使用重新導向 URI 和識別碼 URI 修補應用程式物件:

Authorization: Required with a valid Bearer token
Method: PATCH
Content-type: application/json

https://graph.microsoft.com/v1.0/applications/00001111-aaaa-2222-bbbb-3333cccc4444
{
    "web": {
    "redirectUris":["https://www.samlapp.com"]},
    "identifierUris":["https://www.samlapp.com"]
}

使用 Microsoft Entra 單一登入

在 Microsoft Entra ID 中註冊 SaaS 應用程式之後,應用程式必須開始使用 Microsoft Entra ID 作為識別提供者 (IdP):

使用舊版驗證將應用程式連線至 Microsoft Entra ID

您的解決方案可讓客戶使用 SSO 和 Microsoft Entra 功能,甚至是不支援的應用程式。 若要允許使用舊版通訊協議進行存取,您的應用程式會呼叫 Microsoft Entra ID 來驗證使用者,並套用 Microsoft Entra 條件式存取原則。 從您的主控台啟用此整合。 在您的解決方案與 Microsoft Entra ID 之間建立 SAML 或 OIDC 應用程式註冊。

建立 SAML 應用程式註冊

使用下列自訂應用程式範本識別碼:8adf8e6e-67b2-4cf2-a259-e3dc5476c621。 然後,進行下列 API 呼叫,並在 JSON 主體中提供顯示名稱:

Authorization: Required with a valid Bearer token
Method: POST
Content-type: application/json

https://graph.microsoft.com/v1.0/applicationTemplates/8adf8e6e-67b2-4cf2-a259-e3dc5476c621/instantiate
{
    "displayname": "Custom SAML App"
}

進行 API 呼叫之後,您會產生服務主體物件。 擷取要用於下一個 API 呼叫的應用程式識別碼和服務主體識別碼。

使用 SAML 通訊協定和登入 URL 修補服務主體物件:

Authorization: Required with a valid Bearer token
Method: PATCH
Content-type: servicePrincipal/json

https://graph.microsoft.com/v1.0/servicePrincipals/aaaaaaaa-bbbb-cccc-1111-222222222222
{
    "preferredSingleSignOnMode":"saml",
    "loginURL": "https://www.samlapp.com"
}

使用重新導向 URI 和識別碼 URI 修補應用程式物件:

Authorization: Required with a valid Bearer token
Method: PATCH
Content-type: application/json

https://graph.microsoft.com/v1.0/applications/00001111-aaaa-2222-bbbb-3333cccc4444
{
    "web": {
    "redirectUris":["https://www.samlapp.com"]},
    "identifierUris":["https://www.samlapp.com"]
}

建立 OIDC 應用程式註冊

針對自訂應用程式使用下列範本識別碼:8adf8e6e-67b2-4cf2-a259-e3dc5476c621。 進行下列 API 呼叫,並在 JSON 主體中提供顯示名稱:

Authorization: Required with a valid Bearer token
Method: POST
Content-type: application/json

https://graph.microsoft.com/v1.0/applicationTemplates/8adf8e6e-67b2-4cf2-a259-e3dc5476c621/instantiate
{
    "displayname": "Custom OIDC App"
}

從 API 呼叫中,擷取要用於下一個 API 呼叫的應用程式識別碼和服務主體識別碼。

Authorization: Required with a valid Bearer token
Method: PATCH
Content-type: application/json

https://graph.microsoft.com/v1.0/applications/{Application Object ID}
{
    "web": {
    "redirectUris":["https://www.samlapp.com"]},
    "identifierUris":["[https://www.samlapp.com"],
    "requiredResourceAccess": [
    {
        "resourceAppId": "00000003-0000-0000-c000-000000000000",
        "resourceAccess": [
        {
            "id": "7427e0e9-2fba-42fe-b0c0-848c9e6a8182",
            "type": "Scope"
        },
        {
            "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
            "type": "Scope"
        },
        {
            "id": "37f7f235-527c-4136-accd-4a02d197296e",
            "type": "Scope"
        }]
    }]
}

注意

resourceAccess 節點中的 API 權限會授與應用程式 openid、User.Read 及offline_access 權限,以啟用登入。 請參閱 Microsoft Graph 權限的概觀

套用條件式存取原則

客戶和合作夥伴可以使用 Microsoft Graph API 來建立或套用每個應用程式條件式存取原則。 對於合作夥伴,客戶可以從您的解決方案套用這些原則,而不需使用 Microsoft Entra 系統管理中心。 有兩個選項可以套用 Microsoft Entra 條件式存取原則:

使用條件式存取原則

如需條件式存取原則的清單,請執行下列查詢。 取得要修改的原則對象識別碼。

Authorization: Required with a valid Bearer token
Method:GET

https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies

若要修補原則,請在 JSON 主體中包含要位於 includeApplications 範圍內的應用程式物件識別碼:

Authorization: Required with a valid Bearer token
Method: PATCH

https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies/{policyid}
{
    "displayName":"Existing Conditional Access Policy",
    "state":"enabled",
    "conditions": 
    {
        "applications": 
        {
            "includeApplications":[
                "00000003-0000-0ff1-ce00-000000000000", 
                "{Application Object ID}"
            ]
        },
        "users": {
            "includeUsers":[
                "All"
            ] 
        }
    },
    "grantControls": 
    {
        "operator":"OR",
        "builtInControls":[
            "mfa"
        ]
    }
}

建立新的條件式存取原則

在 JSON 主體中,將應用程式物件識別碼新增至 includeApplications 的範圍內:

Authorization: Required with a valid Bearer token
Method: POST

https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies/
{
    "displayName":"New Conditional Access Policy",
    "state":"enabled",
    "conditions": 
    {
        "applications": {
            "includeApplications":[
                "{Application Object ID}"
            ]
        },
        "users": {
            "includeUsers":[
                "All"
            ]
        }
    },
    "grantControls": {
        "operator":"OR",
        "builtInControls":[
            "mfa"
        ]
    }
}
#Policy Template for Requiring Compliant Device

{
    "displayName":"Enforce Compliant Device",
    "state":"enabled",
    "conditions": {
        "applications": {
            "includeApplications":[
                "{Application Object ID}"
            ]
        },
        "users": {
            "includeUsers":[
                "All"
            ]
        }
    },
    "grantControls": {
        "operator":"OR",
        "builtInControls":[
            "compliantDevice",
            "domainJoinedDevice"
        ]
    }
}

#Policy Template for Block

{
    "displayName":"Block",
    "state":"enabled",
    "conditions": {
        "applications": {
            "includeApplications":[
                "{Application Object ID}"
            ]
        },
        "users": {
            "includeUsers":[
                "All"
            ] 
        }
    },
    "grantControls": {
        "operator":"OR",
        "builtInControls":[
            "block"
        ]
    }
}

如果客戶正在將應用程式從您的解決方案新增至 Microsoft Entra ID,您可以透過 Microsoft Graph 將系統管理員同意自動化。 您需要您在 API 呼叫中建立的應用程式服務主體對象識別碼,以及來自外部租用戶的 Microsoft Graph 服務主體物件識別碼。

進行下列 API 呼叫,以取得 Microsoft Graph 服務主體物件識別碼:

Authorization: Required with a valid Bearer token
Method:GET

https://graph.microsoft.com/v1.0/serviceprincipals/?$filter=appid eq '00000003-0000-0000-c000-000000000000'&$select=id,appDisplayName

若要自動化管理員同意,請進行下列 API 呼叫:

Authorization: Required with a valid Bearer token
Method: POST
Content-type: application/json

https://graph.microsoft.com/v1.0/oauth2PermissionGrants
{
    "clientId":"{Service Principal Object ID of Application}",
    "consentType":"AllPrincipals",
    "principalId":null,
    "resourceId":"{Service Principal Object ID Of Microsoft Graph}",
    "scope":"openid user.read offline_access}"
}

取得權杖簽署憑證

若要取得權杖簽署憑證的公用部分,請使用來自應用程式的 Microsoft Entra 中繼資料端點 GET

Method:GET

https://login.microsoftonline.com/{Tenant_ID}/federationmetadata/2007-06/federationmetadata.xml?appid={Application_ID}

指派使用者與群組

將應用程式發佈至 Microsoft Entra ID 之後,您可以將應用程式指派給使用者和群組,以確保應用程式會出現在我的應用程式入口網站上。 此指派位於您建立應用程式時所產生的服務主體物件上。 請參閱我的應用程式入口網站概觀

取得應用程式可能與其相關聯的 AppRole 執行個體。 SaaS 應用程式通常會有與其相關聯的各種 AppRole 執行個體。 一般而言,針對自訂應用程式,有一個預設 AppRole 執行個體。 取得您想要指派 AppRole 執行個體識別碼:

Authorization: Required with a valid Bearer token
Method:GET

https://graph.microsoft.com/v1.0/servicePrincipals/aaaaaaaa-bbbb-cccc-1111-222222222222

從 Microsoft Entra ID,取得您要指派給應用程式的使用者或群組物件識別碼。 從先前的 API 呼叫取得應用程式角色識別碼,並使用服務主體上的修補程式主體提交它:

Authorization: Required with a valid Bearer token
Method: PATCH
Content-type: servicePrincipal/json

https://graph.microsoft.com/v1.0/servicePrincipals/aaaaaaaa-bbbb-cccc-1111-222222222222
{
    "principalId":"{Principal Object ID of User -or- Group}",
    "resourceId":"{Service Principal Object ID}",
    "appRoleId":"{App Role ID}"
}

合作關係

為了協助保護舊版應用程式,同時使用網路和傳遞控制器,Microsoft 與下列應用程式傳遞控制器 (ADC) 提供者建立合作關係。

下列 VPN 解決方案提供者會與 Microsoft Entra ID 連結,以啟用新式驗證和授權方法,例如 SSO 和多重要素驗證 (MFA)。

下列軟體定義的周邊 (SDP) 解決方案提供者會與 Microsoft Entra ID 連線,以取得 SSO 和 MFA 等驗證和授權方法。