配置 Microsoft Entra SAML 令牌加密

注意

令牌加密是一项 Microsoft Entra ID P1 或 P2 功能。 若要详细了解 Microsoft Entra 版本、功能和定价,请参阅 Microsoft Entra 定价

借助 SAML 令牌加密,可以在支持此功能的应用程序中使用加密的 SAML 断言。 为应用程序配置此功能后,Microsoft Entra ID 将使用从 Microsoft Entra ID 存储的证书中获取的公钥,来加密它针对该应用程序发出的 SAML 断言。 应用程序必须先使用匹配的私钥来解密该令牌,然后才能将该令牌用作登录用户的身份验证证据。

加密 Microsoft Entra ID 与应用程序之间的 SAML 断言可以进一步保证令牌内容不被截获,并且个人或公司数据不会泄密。

即使不使用令牌加密,Microsoft Entra SAML 令牌也永远不会以明文形式在网络中传递。 Microsoft Entra ID 要求通过加密的 HTTPS/TLS 通道进行令牌请求/响应交换,使 IDP、浏览器与应用程序之间的通信通过加密的链接发生。 请根据自己的场合,在令牌加密所带来的价值与管理更多证书所造成的开销之间进行权衡。

若要配置令牌加密,需要将包含公钥的 X.509 证书文件上传到代表应用程序的 Microsoft Entra 应用程序对象中。 若要获取 X.509 证书,可以从应用程序本身下载,或者从应用程序供应商处获取(如果应用程序供应商提供加密密钥);如果应用程序要求你提供私钥,可以使用加密工具、上传到应用程序密钥存储的私钥部分,以及上传到 Microsoft Entra ID 的匹配公钥证书来创建该私钥。

Microsoft Entra ID 使用 AES-256 来加密 SAML 断言数据。

先决条件

若要配置 SAML 令牌加密,你需要:

  • 一个 Microsoft Entra 用户帐户。 如果还没有帐户,可以免费创建一个帐户
  • 以下角色之一:全局管理员、云应用程序管理员、应用程序管理员或服务主体的所有者。

提示

本文中的步骤可能因开始使用的门户而略有不同。

配置企业应用程序 SAML 令牌加密

本部分介绍如何配置企业应用程序的 SAML 令牌加密。 已在 Microsoft Entra 管理中心的的“企业应用程序”边栏选项卡中设置的、来自应用程序库或非库应用的应用程序。 对于通过“应用注册”体验注册的应用程序,请按照配置已注册的应用程序 SAML 令牌加密指南进行操作。

若要配置企业应用程序的 SAML 令牌加密,请执行以下步骤:

  1. 获取与应用程序中配置的私钥匹配的公钥证书。

    创建用于加密的非对称密钥对。 或者,如果应用程序提供用于加密的公钥,请遵照应用程序的说明下载 X.509 证书。

    公钥应以 .cer 格式存储在 X.509 证书文件中。 可以将证书文件的内容复制到文本编辑器,并将其保存为 .cer 文件。 证书文件应仅包含公钥,而不应包含私钥。

    如果应用程序使用你为实例创建的密钥,请遵照应用程序提供的说明安装私钥,应用程序将使用它来解密从 Microsoft Entra 租户获取的令牌。

  2. 将证书添加到 Microsoft Entra ID 中的应用程序配置。

在 Microsoft Entra 管理中心内配置令牌加密

可以在 Microsoft Entra 管理中心内向你的应用程序配置添加公共证书。

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识”>“应用程序”>“企业应用程序”>“所有应用程序”。

  3. 在“搜索”框中输入现有应用程序的名称,然后从搜索结果中选择该应用程序。

  4. 在该应用程序的页面上,选择“令牌加密”。

    Screenshot shows how to select the Token encryption option in the Microsoft Entra admin center.

    注意

    令牌加密选项仅适用于已在 Microsoft Entra 管理中心的“企业应用程序”边栏选项卡中设置的、来自应用程序库或非库应用的 SAML 应用程序。 对于其他应用程序,此菜单选项将会禁用。

  5. 在“令牌加密”页上,选择“导入证书”导入包含公共 X.509 证书的 .cer 文件。

    Screenshot shows how to import a certificate file using Microsoft Entra admin center.

  6. 导入证书并配置要在应用程序端使用的私钥后,选择指纹状态旁边的“...”激活加密,然后从下拉菜单选项中选择“激活令牌加密”。

  7. 选择“是”确认激活令牌加密证书。

  8. 确认针对应用程序发出的 SAML 断言已加密。

在 Microsoft Entra 管理中心内停用令牌加密

  1. 在 Microsoft Entra 管理中心内,转到“标识”>“应用程序”>“企业应用程序”>“所有应用程序”,然后选择启用了 SAML 令牌加密的应用程序。

  2. 在应用程序的页面上选择“令牌加密”,找到该证书,然后选择“...”选项显示下拉菜单。

  3. 选择“停用令牌加密”。

配置已注册的应用程序 SAML 令牌加密

本部分介绍如何配置已注册应用程序的 SAML 令牌加密。 从 Microsoft Entra 管理中心的“应用注册”边栏选项卡设置的应用程序。 对于企业应用程序,请按照配置企业应用程序 SAML 令牌加密指南进行操作。

加密证书存储在 Microsoft Entra ID 中的应用程序对象内,带有 encrypt 用法标记。 可以配置多个加密证书,正在用于加密令牌的证书由 tokenEncryptionKeyID 属性标识。

需要使用应用程序的对象 ID 才能通过 Microsoft Graph API 或 PowerShell 配置令牌加密。 可以编程方式找到此值,或者在 Microsoft Entra 管理中心内转到应用程序的“属性”页,然后记下“对象 ID”值。

使用 Graph、PowerShell 或应用程序清单配置 keyCredential 时,应生成一个用作 keyId 的 GUID。

若要为应用程序注册配置令牌加密,请执行以下步骤:

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识”>“应用程序”>“应用注册”>“所有应用程序”。

  3. 在“搜索”框中输入现有应用程序的名称,然后从搜索结果中选择该应用程序。

  4. 在该应用程序的页面上,选择“清单”以编辑应用程序清单

    以下示例演示了配置有两个加密证书的应用程序清单,其中第二个证书使用 tokenEncryptionKeyId,已选作活动的证书。

    { 
      "id": "3cca40e2-367e-45a5-8440-ed94edd6cc35",
      "accessTokenAcceptedVersion": null,
      "allowPublicClient": false,
      "appId": "cb2df8fb-63c4-4c35-bba5-3d659dd81bf1",
      "appRoles": [],
      "oauth2AllowUrlPathMatching": false,
      "createdDateTime": "2017-12-15T02:10:56Z",
      "groupMembershipClaims": "SecurityGroup",
      "informationalUrls": { 
         "termsOfService": null, 
         "support": null, 
         "privacy": null, 
         "marketing": null 
      },
      "identifierUris": [ 
        "https://testapp"
      ],
      "keyCredentials": [ 
        { 
          "customKeyIdentifier": "Tog/O1Hv1LtdsbPU5nPphbMduD=", 
          "endDate": "2039-12-31T23:59:59Z", 
          "keyId": "8be4cb65-59d9-404a-a6f5-3d3fb4030351", 
          "startDate": "2018-10-25T21:42:18Z", 
          "type": "AsymmetricX509Cert", 
          "usage": "Encrypt", 
          "value": <Base64EncodedKeyFile> 
          "displayName": "CN=SAMLEncryptTest" 
        }, 
        {
          "customKeyIdentifier": "U5nPphbMduDmr3c9Q3p0msqp6eEI=",
          "endDate": "2039-12-31T23:59:59Z", 
          "keyId": "6b9c6e80-d251-43f3-9910-9f1f0be2e851",
          "startDate": "2018-10-25T21:42:18Z", 
          "type": "AsymmetricX509Cert", 
          "usage": "Encrypt", 
          "value": <Base64EncodedKeyFile> 
          "displayName": "CN=SAMLEncryptTest2" 
        } 
      ], 
      "knownClientApplications": [], 
      "logoUrl": null, 
      "logoutUrl": null, 
      "name": "Test SAML Application", 
      "oauth2AllowIdTokenImplicitFlow": true, 
      "oauth2AllowImplicitFlow": false, 
      "oauth2Permissions": [], 
      "oauth2RequirePostResponse": false, 
      "orgRestrictions": [], 
      "parentalControlSettings": { 
         "countriesBlockedForMinors": [], 
         "legalAgeGroupRule": "Allow" 
        }, 
      "passwordCredentials": [], 
      "preAuthorizedApplications": [], 
      "publisherDomain": null, 
      "replyUrlsWithType": [], 
      "requiredResourceAccess": [], 
      "samlMetadataUrl": null, 
      "signInUrl": "https://127.0.0.1:444/applications/default.aspx?metadata=customappsso|ISV9.1|primary|z" 
      "signInAudience": "AzureADMyOrg",
      "tags": [], 
      "tokenEncryptionKeyId": "6b9c6e80-d251-43f3-9910-9f1f0be2e851" 
    }  
    

后续步骤