教程:在 Microsoft Entra ID 中开发示例 SCIM 终结点

本教程介绍如何使用 Azure 应用服务部署 SCIM 参考代码。 然后,通过使用 Postman 或与 Microsoft Entra 预配服务集成来测试代码。 本教程适用于要开始使用 SCIM 的开发人员,或对测试 SCIM 终结点感兴趣的任何人。

在本教程中,你将了解如何执行以下操作:

  • 在 Azure 中部署 SCIM 终结点。
  • 测试 SCIM 终结点。

在 Azure 中部署 SCIM 终结点

此处的步骤使用 Visual Studio 2019Visual Studio Code 以及 Azure 应用服务将 SCIM 终结点部署到服务。 SCIM 参考代码可以在本地运行、由本地服务器托管或是部署到另一个外部服务。 有关预配 SCIM 终结点的信息,请参阅教程:开发和规划 SCIM 终结点的预配

获取并部署示例应用

从 GitHub 转到参考代码,然后选择“克隆或下载”。 选择“在桌面中打开”,或复制链接,打开 Visual Studio,然后选择“克隆或签出代码”以输入复制的链接并创建本地副本 。 将文件保存到文件夹,该文件夹的路径总字符长度不超过 260 个字符。

  1. 在 Visual Studio 中,确保登录有权访问托管资源的帐户。

  2. 在解决方案资源管理器中,打开 Microsoft.SCIM.sln,然后右键单击 Microsoft.SCIM.WebHostSample 文件 。 选择“发布”。

    Screenshot that shows the sample file.

    注意

    若要在本地运行此解决方案,请双击项目并选择“IIS Express”以将项目作为带有本地主机 URL 的网页进行启动。 有关详细信息,请参阅 IIS Express 概述

  3. 选择“创建配置文件”,并确保选择“应用服务”和“新建” 。

    Screenshot that shows the Publish window.

  4. 逐个完成对话框选项,并将应用重命名为你选择的名称。 此名称会在应用和 SCIM 终结点 URL 中使用。

    Screenshot that shows creating a new app service.

  5. 选择要使用的资源组,然后选择“发布”。

    Screenshot that shows publishing a new app service.

配置应用服务

在“Azure 应用服务”>“配置”中转到应用程序,然后选择“新建应用程序设置”以添加值为 https://sts.windows.net/<tenant_id>/ 的 Token__TokenIssuer 设置。 将 <tenant_id> 替换为你的 Microsoft Entra 租户 ID。 如果要使用 Postman 测试 SCIM 终结点,请添加值为 Development 的 ASPNETCORE_ENVIRONMENT 设置。

Screenshot that shows the Application settings window.

Microsoft Entra 管理中心使用企业应用程序测试终结点时,有两种选项。 可以将环境保留在 Development 中并提供来自 /scim/token 终结点的测试令牌,也可以将环境更改为 Production 并将令牌字段留空。

就这么简单! 你的 SCIM 终结点现在已发布,可以使用 Azure 应用服务 URL 测试 SCIM 终结点。

测试 SCIM 终结点

对 SCIM 终结点进行的请求需要授权。 SCIM 标准具有多个可用选项。 请求可以使用 Cookie、基本身份验证、TLS 客户端身份验证,或 RFC 7644 中列出的任何方法。

请确保避免使用不安全的方法(例如用户名和密码),而改用更安全的方法(例如 OAuth)。 Microsoft Entra ID 支持长期持有者令牌(适用于库和非库应用程序)和 OAuth 授权(适用于库应用程序)。

注意

存储库中提供的授权方法仅用于测试。 与 Microsoft Entra ID 集成时,可以查看授权指导。 请参阅计划 SCIM 终结点的预配

开发环境实现了对生产不安全的功能,如控制安全令牌验证行为的参考代码。 令牌验证代码使用自签名安全令牌,签名密钥存储在配置文件中。 请查看 appsettings.Development.json 文件中的 Token:IssuerSigningKey 参数。

"Token": {
    "TokenAudience": "Microsoft.Security.Bearer",
    "TokenIssuer": "Microsoft.Security.Bearer",
    "IssuerSigningKey": "A1B2C3D4E5F6A1B2C3D4E5F6",
    "TokenLifetimeInMins": "120"
}

注意

/scim/token 终结点发送 GET 请求时,会使用配置的密钥颁发令牌。 该令牌可以用作持有者令牌以便进行后续授权。

默认令牌验证代码配置为使用 Microsoft Entra 令牌,需要使用 appsettings.json 文件中的 Token:TokenIssuer 参数配置颁发租户。

"Token": {
    "TokenAudience": "8adf8e6e-67b2-4cf2-a259-e3dc5476c621",
    "TokenIssuer": "https://sts.windows.net/<tenant_id>/"
}

后续步骤