使用多租户服务器到服务器身份验证

 

发布日期: 2017年1月

适用于: Dynamics 365 (online)

这是最常见的的方案,也是用于使用 Microsoft AppSource 分发的应用的方案,但是您也可以使用多租户但不列出应用程序和 Microsoft AppSource。

每个 Dynamics 365(在线) 组织与一个 Azure Active Directory (Azure AD) 租户关联。 您的 Web 应用程序或服务在它自己的 Azure AD 租户中注册。

在此方案中,任何 Dynamics 365(在线) 租户都可能可以在授予应用程序访问数据的许可后,使用多租户应用程序。

本主题内容

要求

概述:开发和测试应用程序

创建与在您的 Dynamics 365 中注册的应用程序关联的应用程序用户

使用 Dynamics 365 租户测试应用程序

使用单独的 Dynamics 365 租户测试应用程序

准备方法以部署应用程序用户

要求

若要创建和测试使用服务器到服务器 (S2S) 身份验证的多租户应用程序,您需要:

  • 您将用于发布应用程序或服务的 Azure AD 租户。

  • 2 个 Dynamics 365(在线) 订阅

    • 一个必须与您将用于发布应用程序或服务的 Azure AD 租户关联。

    • 另一个可以是用于测试订户如何访问您的应用程序的试用订阅。

概述:开发和测试应用程序

您将创建的应用程序必须在您要在发布应用程序时使用的 Azure AD 租户中注册。

在高级别,流程包括:

  1. 创建在您的 Azure AD 租户中注册的多租户 Web 应用程序。

  2. 创建与在您的 Dynamics 365(在线) 租户中注册的应用程序关联的应用程序用户

  3. 创建自定义安全角色并将其分派给您的 Dynamics 365(在线) 租户中的应用程序用户。

  4. 使用 Dynamics 365(在线) 租户测试应用程序

  5. 使用单独的 Dynamics 365(在线) 租户测试应用程序

有关此流程的完整示例,请参阅 演练:多租户服务器到服务器身份验证

创建在您的 Azure AD 租户中注册的多租户 Web 应用程序

您将创建把 Azure AD 用作身份验证提供商的多租户 Web 应用程序或服务。

具体方法不是此主题的重点。 可以通过一些方法达成此目的,并做出适合您的需求或喜好的选择。 有关更多信息和示例,请参阅以下链接:

Azure AD 需要以下值才能注册您的应用程序:

说明

应用程序 ID URI

应用程序的标识符。 此值在身份验证期间发送给 Azure AD 以表示调用方希望为哪个应用程序获取令牌。 此外,该值包含在令牌中,以便应用程序了解其是针对的目标。

回复 URL 和重定向 URI

如果是 Web API 或 Web 应用程序,回复 URL 是 Azure AD 将把身份验证响应发送到的位置,如果身份验证成功,则包括令牌。

客户端 ID

应用程序的 ID,这是注册应用程序时 Azure AD 生成的。 请求授权代码或令牌时,将在身份验证期间把客户端 ID 和密钥发送到 Azure AD。

针对 Azure AD 执行身份验证以调用 Web API 时随客户端 ID 一起发送的密钥。

当应用程序注册 Azure Active Directory 身份对象将分派的应用程序 Directory 身份对象,Active 注册的唯一标识符。

如果您使用 Visual Studio 2015 创建新 ASP.NET MVC 应用程序,您可以选择指定将支持多租户功能的应用程序。 MVC 应用程序的模板提供用于指定执行哪种身份验证的选项。 您可以通过在创建项目时配置其属性,选择身份验证方法。 以下关系图显示可用选项:

ASP.NET MVC Change Authentication Dialog

在配置这些选项的一项有关将配置为OWIN支持此方案的基本应用程序使用中间件和基架。 通过一些基本修改,就适合与 Dynamics 365(在线) 一起使用。 这是 演练:多租户服务器到服务器身份验证 中介绍的方法。

在为开发而创建和注册应用程序时,您很可能将 https://localhost 用作“登录 URL”和“回复 URL”值,以便在发布应用程序之前在本地调试应用程序。 您将需要在发布应用之前更改这些值。

注册应用时,必须生成密钥,也称为 ClientSecret。 可将这些密钥的持续时间配置为 1 或 2 年。 作为应用程序的主人,您必须将该值视为密码,并且您需要在密钥到期前管理其续订。 您可能希望使用 Azure 密钥保管库。详细信息:https://azure.microsoft.com/en-us/services/key-vault/

为应用程序授予访问 Dynamics 365(在线) 数据的权限

这是您的 Dynamics 365(在线) 实例必须与您的 Azure AD 租户关联的原因。 如果您的 Azure AD 租户不与 Dynamics 365(在线) 租户关联,则您不能执行以下步骤。

  1. 转到 https://portal.azure.com 并选择“Azure Active Directory”。

  2. 单击“应用注册”,然后查找您使用 Visual Studio 创建的应用程序。

  3. 您需要为应用程序授予访问 Dynamics 365(在线) 数据的权限。 在“API 访问权限”区域中,单击“必需权限”。 您应该发现它已经有了 Windows Azure Active Directory 的权限。

  4. 单击“添加”,然后单击“选择 API”。 在列表中,选择“Dynamics 365”,然后单击“选择”按钮。

  5. 在“选择权限”中,选择“作为组织用户访问 Dynamics 365”。 然后单击“选择”按钮。

  6. 单击“完成”添加这些权限。 完成后,应该看到应用的权限。

    Grant Dynamics 365-Permissions to application

创建与在您的 Dynamics 365 中注册的应用程序关联的应用程序用户

在您的应用程序访问您的应用程序一个订户的 Dynamics 365 数据时,需要订户的 Dynamics 365 组织中的一个应用程序用户。 与任何 Dynamics 365 用户一样,此应用程序必须与至少一个用于定义用户可访问的数据的安全角色关联。

systemuser 实体有三个新属性用于存储此数据。

架构名称

显示名称

类型

说明

ApplicationId

应用程序 ID

UniqueidentifierType

应用程序的标识符。 这用于访问其他应用程序中的数据。

ApplicationIdUri

应用程序 ID URI

StringType

用作外部应用的唯一逻辑标识符的 URI。 可将其用于验证应用程序

AzureActiveDirectoryObjectId

Azure AD 对象 ID

UniqueidentifierType

这是应用程序目录对象 ID。

这个 systemuserAzureActiveDirectoryObjectId属性值必须是对您的已注册应用程序的 Azure Active Directory 对象 ID 的引用。 此引用将在创建应用程序用户时基于 ApplicationId 值在 Dynamics 365 中设置。

备注

在您首次使用自己的 Dynamics 365 租户和与其关联的 Azure AD 租户开发应用程序时,可以仅创建应用程序用户,因为注册的应用程序已经是 Azure AD 租户的一部分。

但是,为了在其他组织中创建应用程序以进行测试,或者只要订户使用您的应用程序,他们都必须首先授予您的应用程序的许可,所以流程中的步骤不同。 有关更多信息,请参阅 使用单独的 Dynamics 365 租户测试应用程序。

为应用程序用户创建安全角色

下一步,您将创建一个 Dynamics 365 应用程序用户。 此用户的权限和访问权限将由您设置的自定义安全角色定义。 创建应用程序用户之前,必须创建自定义安全角色,以便为其关联用户。 详细信息:TechNet:创建或编辑安全角色

备注

应用程序用户不能与一个默认 Dynamics 365 安全角色关联。 必须创建要与应用程序用户关联的自定义安全角色。

手动创建 Dynamics 365 应用程序用户

此用户的创建过程与创建许可用户的过程不同。 使用以下步骤:

  1. 转到“设置”>“安全”>“用户”

  2. 在视图下拉列表中,选择“应用程序用户”。

  3. 单击“新建”。 然后验证您是否在使用“应用程序用户”窗体。

    如果您没有在窗体中看到“应用程序 ID”、“应用程序 ID URI”和“Azure AD 对象 ID“字段,则必须从列表中选择“应用程序用户”窗体:

    Select Application User Form

  4. 向这些字段添加相应值:

    字段

    应用程序 ID

    在 Azure AD 中注册的应用程序的应用程序 ID 值。

    全名

    应用程序的名称。

    主要电子邮件

    您希望订户用于联系您的电子邮件地址。

    “用户名”、“应用程序 ID URI”和“Azure AD 对象 ID”字段已锁定,您不能为这些字段设置值。

    在您创建此用户时,这些字段的值将在您保存用户时根据“应用程序 ID”值从 Azure AD 检索。

  5. 将应用程序用户与您在 为应用程序用户创建安全角色 中创建的自定义安全角色关联。 详细信息:TechNet:为用户分派安全角色

使用 Dynamics 365 租户测试应用程序

由于应用程序已在您的 Azure AD 中注册,并且已配置了您的开发组织中的应用程序用户,所以您可以继续针对自己的 Dynamics 365 租户开发应用程序。 但是这不是多租户功能的有效测试。 您需要使用单独的 Dynamics 365 租户测试应用程序。

使用单独的 Dynamics 365 租户测试应用程序

使用单独的 Dynamics 365 租户测试应用程序之前,Azure AD 租户管理员必须授予应用程序的许可。 管理员通过使用浏览器导航到应用程序授予许可。 他们首次访问该应用程序时,将看到如下对话框:

Grant consent to access Dynamics 365 data

在他们授予许可时,将把您的已注册应用程序添加到 Azure AD Enterprise 应用程序列表,并且可供 Azure AD 租户的用户使用。

只有在管理员已授予许可之后好,您才必须在订户的 Dynamics 365 租户中创建应用程序用户。 您可以使用 手动创建 Dynamics 365 应用程序用户 中介绍的步骤创建应用程序用户。

对于初始测试,您可能需要手动执行这些步骤。 在您准备好将应用程序或服务提供给订户时,您需要更有效的过程。 下一节介绍了此内容。

准备方法以部署应用程序用户

订户授予应用程序或服务的许可之后,您需要简单、可靠的方法供他们向自己的 Dynamics 365 组织添加应用程序用户和其他任何必需组件。

您必须加入用于定义应用程序需要哪些权限的自定义安全角色,然后确保将应用程序用户关联到这个自定义安全角色。 因为可以在解决方案中包含自定义安全角色,所以您应准备托管解决方案,其中包含贵组织需要的自定义安全角色或其他任何解决方案组件的定义。

有关创建安全角色的信息,请参阅

有关创建 Dynamics 365 解决方案的信息,请参阅以下主题:

但是,解决方案不能随附应用程序用户,所以您需要提供用于创建此应用程序用户并将其与自定义安全角色关联的方法。

可通过多种方法达成此目的,包括使用 Microsoft Dynamics 365 SDK 编写自己的程序,以及请订户运行程序。

Microsoft Dynamics 365 SDK提供了一个 CRM 包部署程序 应用程序,可将此应用程序用于准备包,来将解决方案和数据自动传输到其他 Dynamics 365 组织。详细信息:为 Dynamics 365 Package Deployer 创建数据包

另请参阅

演练:多租户服务器到服务器身份验证
使用单租户服务器到服务器身份验证
使用服务器到服务器身份验证 (S2S) 构建 Web 应用程序
连接到 Microsoft Dynamics 365

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权