自訂權杖
身為開發人員,您與 Microsoft Entra ID 的主要互動是要求令牌來識別使用者。 您也會要求令牌以取得呼叫 Web API 的授權。 Web API 令牌會決定 API 在服務特定要求時可以執行的動作。 在本文中,您將瞭解您可以在令牌中接收的資訊,以及如何自定義令牌。 這些 零信任 開發人員最佳做法可改善彈性和控制,同時以最低許可權提高應用程式安全性。
自定義應用程式令牌的原因取決於您用來在應用程式和 API 中驅動更細微授權的程式。 例如,您的應用程式中可能有不同的使用者角色、存取層級和功能,這些角色依賴令牌的資訊。
Microsoft Graph API 提供一組健全的 Microsoft 365 目錄資訊和數據。 您可以藉由在 Microsoft Graph 中的數據上建置,以開發更精細且豐富的授權系統。 例如,您可以從使用者的群組成員資格、詳細配置文件數據、SharePoint 和 Outlook 存取資訊,以用於授權決策。 您也可以在令牌中包含來自 Microsoft Entra ID 的授權數據。
應用層級授權
IT 專業人員不需自定義令牌,也不需要開發人員新增任何程序代碼,即可新增應用層級授權。
IT 專業人員可以使用使用者指派所需的旗標,防止令牌發行至租使用者中的任何應用程式,以確保只有一組用戶能夠登入應用程式。 如果沒有此旗標,租使用者中的所有使用者都可以存取應用程式。 使用此旗標時,只有指派的使用者和群組才能存取應用程式。 當指派的使用者存取應用程式時,應用程式會收到令牌。 如果用戶沒有指派,應用程式就不會收到令牌。 請記得一律正常處理未接收令牌的令牌要求。
令牌自定義方法
有兩種方式可以自定義令牌:選擇性宣告和宣告對應。
選擇性宣告
選擇性宣告會 指定您希望 Microsoft Entra ID 以令牌傳送至您的應用程式的宣告。 您可以使用選擇性宣告來:
- 選取更多要包含在應用程式令牌中的宣告。
- 變更 Microsoft 身分識別平台 在令牌中傳回之宣告的行為。
- 新增和存取應用程式的自訂宣告。
選擇性宣告會停止具有已定義架構的應用程式註冊物件。 無論應用程式在何處執行,它們都適用於應用程式。 當您撰寫多租使用者應用程式時,選擇性宣告運作良好,因為它們在 Microsoft Entra ID 中的每個租使用者中都一致。 例如,IP 位址不是租使用者特定的,而應用程式具有IP位址。
根據預設,租使用者中的來賓使用者也可以登入您的應用程式。 如果您想要封鎖來賓使用者, 請選擇加入選擇性宣告 (acct)。 如果是 1,則使用者具有來賓分類。 如果您想要封鎖來賓,請使用 acct==1 封鎖令牌。
宣告對應原則
在 Microsoft Entra ID 中,原則物件代表個別應用程式或組織中所有應用程式的規則集。 宣告對應原則會修改 Microsoft Entra ID 在特定應用程式的令牌中發行的宣告。
您將宣告對應用於沒有架構的租使用者特定資訊(例如 EmployeeID、DivisionName)。 宣告對應會套用至租用戶系統管理員控制的服務主體層級。 宣告對應會對應至該應用程式的企業應用程式或服務主體。 每個租使用者都可以有自己的宣告對應。
如果您正在開發企業營運應用程式,您可以特別查看租使用者的功能(您的租使用者有哪些特定宣告可供您在令牌中使用)。 例如,如果組織在其 內部部署的 Active Directory 中有使用者的部門名稱屬性(不是 Microsoft Entra ID 中的標準字段),您可以使用 Microsoft Entra 連線 將其同步至 Microsoft Entra 識別符。
您可以使用其中一個標準擴充屬性來包含該資訊。 您可以使用分割名稱宣告來定義令牌,您可以從對應的延伸模組撰寫(即使它不適用於每個租使用者也一樣)。 例如,組織會將其部門名稱放在擴充屬性 13 中。
透過宣告對應,您可以讓它適用於另一個將除法名稱放在屬性 7 的租使用者。
規劃令牌自定義
您自訂的令牌取決於您的應用程式類型:用戶端應用程式或 API。 您可以執行哪些動作來自定義令牌並沒有任何差異。 您可以在令牌中放入的內容,每個令牌都相同。 您選擇要自定義的權杖取決於應用程式取用的令牌。
自定義標識碼令牌
如果您正在開發用戶端應用程式,您可以自定義 識別碼令牌,因為它是您要求識別使用者的令牌 。 當令牌中的物件宣告 (aud
) 符合您應用程式的用戶端識別符時,令牌會屬於您的應用程式。 對於呼叫 API 但未實作的用戶端應用程式,請確定您只自定義應用程式的識別碼令牌。
Azure 入口網站 和 Microsoft Graph API 也可讓您自定義應用程式的存取令牌,但這些自定義沒有任何作用。 您無法針對您不擁有的 API 自訂存取權杖。 請記住,您的應用程式不得嘗試將用戶端應用程式收到的存取令牌譯碼或檢查為呼叫 API 的授權。
自定義存取令牌
如果您要開發 API,您可以自定義 存取令牌 ,因為您的 API 會在用戶端呼叫 API 時收到存取令牌。
用戶端應用程式一律會自定義他們收到的標識元令牌,以識別使用者。 API 會自定義 API 在呼叫 API 時所接收的存取令牌。
群組和應用程式角色
最常見的授權技術之一,就是根據使用者的群組成員資格或指派角色來存取。 在令牌 中設定群組宣告和應用程式角色會示範如何使用應用程式角色定義來設定應用程式,並將安全組指派給應用程式角色。 這些方法有助於改善彈性和控制,同時以最低許可權增加應用程式零信任安全性。
下一步
- B2B 共同作業使用者宣告對應 說明 Microsoft Entra ID 支援,以自定義 B2B 共同作業使用者的安全性聲明標記語言 (SAML) 令牌中發出的宣告。
- 當使用者使用 SAML 2.0 通訊協定透過 Microsoft 身分識別平台 向應用程式驗證時,自定義應用程式 SAML 令牌宣告。
- API 保護說明透過註冊、定義許可權和同意來保護 API 的最佳做法,以及強制執行存取以達成您的 零信任 目標。
- 授權最佳做法 可協助您為應用程式實作最佳的授權、許可權和同意模型。
- 在應用程式開發生命週期中使用 零信任 身分識別和存取管理開發最佳做法,以建立安全的應用程式。