Microsoft 信息保护 SDK - 服务发现

概述

Microsoft 信息保护 SDK 支持 Azure 商业云、主权/政府云和本地 Active Directory Rights Management Services (AD RMS)。 有不同的机制用于发现 SDK 应使用哪个终结点。 本文将介绍发现机制以及如何使用每种机制。

使用 mip::Identity 的服务发现

在创建三种引擎类型中的任何一种时,MIP SDK 要求开发人员指定 mip::Identitymip::Cloud 作为引擎设置对象的一部分。 以文件 SDK 为例:

FileEngine::Settings engineSettings(mip::Identity(mUsername), 
													mAuthDelegate, 
													"", 
													"en-US", 
													false);

FileEngine::Settings 对象接受 mip::Identity 作为构造函数的第一个参数。 通过 mip::Identity 提供的 UPN 或电子邮件后缀首先用于确定企业是否有任何应使用的 Active Directory Rights Management Services (AD RMS) 群集来代替 Azure。 这是通过尝试解析从 mip::Identity 获得的域后缀下的 _rmsdisco._http._tcp DNS SRV 记录来完成的。 如果此 SRV 记录的名称解析失败,则 SDK 默认使用商业云。

找到 AD RMS 群集时,必须将 mip::FileEngine::FileEngineSettings 属性 IsProtectionOnlyEngine 设置为 true。 策略 SDK 不能与 AD RMS 发布(持有你自己的密钥)结合使用。

例如,如果 mip::IdentityBob@contoso.com,则 SDK 使用邮件地址后缀 contoso.com 来为 SRV 记录生成 DNS 查询。 如果找到 Contoso (_rmsdisco._http._tcp.contoso.com) 的 AD RMS 移动设备扩展 (MDE) SRV 记录,SDK 将尝试连接到 SRV 记录所引用的服务。 如果未找到 Contoso 记录,则 SDK 默认使用 https://api.aadrm.com 处的商业终结点。 有关 AD RMS 配置和 DNS 注册的更多详细信息,请查看 AD RMS MDE 文档

使用 mip::Cloud 的服务发现

如果在创建引擎时不知道用户的身份,或者客户位于不支持隐式服务发现的主权云中,则可以使用 mip::Cloud 枚举来明确告诉 SDK 要使用哪种云。

FileEngine::Settings engineSettings("engineGUID",
                        				mAuthDelegate,
				                        "",
				                        "en-US",
				                        false);
engineSettings.SetCloud(mip::Cloud::US_GCC); // Tell engine to use US_GCC

上面的示例传入一些唯一的引擎 GUID 而不是 mip::Identity,并在设置对象上使用 SetCloud() 方法告诉 SDK 使用美国政府计算云来实现策略和保护功能。 明确设置云适用于文件、保护和策略 SDK。

使用显式终结点的服务发现替代

应用程序可以设置服务终结点的最后一种最不常见的方法是使用以下 API 之一替代服务基 URL。

SDK 中 IsInRole 中的声明 API 用途
文件 SetProtectionCloudEndpointBaseUrl() 设置引擎使用的保护终结点。
文件 SetPolicyCloudEndpointBaseUrl() 设置引擎使用的策略终结点。
策略 SetCloudEndpointBaseUrl() 设置引擎使用的策略终结点。
保护 SetCloudEndpointBaseUrl() 设置引擎使用的保护终结点。

每个都可以在该 SDK 的相关引擎设置对象中的引擎设置对象上进行设置。

受保护的内容使用

当 MIP SDK 使用受保护的内容时,会根据存储在受保护文档中的许可终结点执行服务发现。 应用程序仍必须创建与其自身标识相关的文件或保护引擎。 创建 mip::FileHandler 对象后,SDK 将解析许可证信息并连接到相应的终结点。 如果需要身份验证,可能会提示用户进行身份验证。