Azure AIP Sync Error : profile_add_engine_async Failed with: [ConnectionHttpError] Failed sending http request with error code 'windows:87'

Azure AIP Sync Error : profile_add_engine_async Failed with: [ConnectionHttpError] Failed sending http request with error code 'windows:87'

我正在尝试使用在 cpp 中实现的 AIP SDK 在我的自定义客户端应用程序上同步 Azure AIP 标签。对于 POC,我尝试了这个发布在 Microsoft 代码示例上的示例。

https://docs.microsoft.com/en-us/samples/azure-samples/mipsdk-policyapi-cpp-sample-basic/mipsdk-policyapi-cpp-sample-basic/

但是抛出异常

    Trace   2020-01-23 16:23:58.690 telemetry_utils.cpp:66  mipsdk-policyapi-cpp-sample-basic (13592)   "Send Telemetry. Event Name : [profile_add_engine_async]
App.ApplicationId: [36980fd4-b1e8-4856-8703-c1004a99722b], Pii: [None]
App.ApplicationName: [Ravindra12], Pii: [None]
App.ApplicationVersion: [1.0.0], Pii: [None]
App.SessionId: [1], Pii: [None]
Engine.SessionId: [1], Pii: [None]
Event.CorrelationId: [c34572fd-57a9-4a97-a94b-4cf3a98518fe], Pii: [None]
Event.CorrelationIdDescription: [PolicyProfile], Pii: [None]
Event.Duration: [2.68388], Pii: [None]
Event.ErrorType: [ConnectionHttpError], Pii: [None]
Event.Failed.File: [src\upe\api_impl\policy_profile_impl.cpp], Pii: [None]
Event.Failed.Func: [mip::ProfileImpl::AddEngineAsync], Pii: [None]
Event.Failed.Line: [332], Pii: [None]
Event.Failed.Message: [Failed API call: profile_add_engine_async Failed with: [ConnectionHttpError] Failed sending http request with error code 'windows:87' Failed with: ([http_exception] 'WinHttpAddRequestHeaders: 87: The parameter is incorrect.

')], Pii: [None]
Event.UniqueId: [2029587e-eb8c-4483-a5ef-283a0a0f7a59], Pii: [None]
EventInfo.Level: [10], Pii: [None]
EventInfo.PrivTags: [33554432], Pii: [None]
MIP.Version: [1.4.154], Pii: [None]
iKey: [ce9aa5fb5a414ecebb15af10715bd8ff-831d197e-fc97-4df6-b998-c8c13a0fc3ce-6768], Pii: [None]
"   mip::WriteEventToTraceLog   29012

逐步调试时,我观察到它可以成功从 Azure AD 获取身份验证令牌,但无法将 PolicyEngine 添加到 PolicyProfile。

我已按照上述 SDK 示例页面中的说明配置了 Azure AIP 和 Azure AD 中的所有内容,但仍然出现此错误。我无法获得无效的参数是什么以及我做错了什么。

另一方面,我可以 运行 使用 dotnet sdk 的示例。我可以列出所有标签。 - https://docs.microsoft.com/en-us/samples/azure-samples/mipsdk-dotnet-policy-quickstart/mipsdk-dotnet-policy-quickstart/

有人可以帮助我成功获得此应用程序运行。

谢谢。

该错误将通过 cpprestsdk 从 winhttp 冒出来。根据一些快速搜索,如果您的身份验证令牌末尾有空格,似乎可能会发生这种情况。你能检查一下吗?

我刚刚通过向令牌附加一个空格对其进行了测试,它确实重现了错误。根据示例,我不确定您为什么会得到空格,但看看您是否能够 trim 结束并使其正常工作。

我通过将此添加到 auth 委托来进行复制:

    string accessToken = sample::auth::AcquireToken(mUserName, mPassword, mApplicationInfo.applicationId, challenge.GetResource(), challenge.GetAuthority());
    accessToken.append(1, ' ');

它抛出了:

Event.Failed.Message:[API 调用失败:profile_add_engine_async 失败:[ConnectionHttpError] 发送 http 请求失败,错误代码为 'windows:87' 失败:([http_exception] 'WinHttpAddRequestHeaders: 87: 参数不正确。