- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个调用我编写的服务的 native 客户端,该服务又调用图形 API(使用原始调用者的凭据)。
这与此处找到的“onbehalfof”示例完全一样(我的代码失败的方式与示例相同):
https://github.com/Azure-Samples/active-directory-dotnet-webapi-onbehalfof
当以来自与服务相同的租户(租户 A)的用户身份登录时,一切正常(就像样本的代表)。当以来自不同租户(租户 B)的用户身份登录时,我在服务的这一行收到异常:
result = await authContext.AcquireTokenAsync(GraphResourceId, clientCred, userAssertion);
(这是 onbehalfof 示例中 TodoListController.cs 的第 153 行)。
异常(exception)是这样的:
AADSTS65001: The user or administrator has not consented to use the application with ID 'de2fb28b-83f8-419d-9b00-3fbce0a60bf4'. Send an interactive authorization request for this user and resource.\r\nTrace ID: 6865c420-674a-4adf-a070-3d9b9c500200\r\nCorrelation ID: 7e088563-d7fe-4131-a05c-cbe04dbb2bbd\r\nTimestamp: 2017-03-29 22:56:58Z
上面的application id指的是我写的service(和onbehalfofsample中TodoListService中的同一行)。
我为 Multi-Tenancy 身份验证配置了一切。但导致问题的是我的服务对另一个服务 (Graph API) 进行的附加 调用。我需要在 Azure 门户中进行哪些额外配置才能使其正常工作?
最佳答案
在为上面链接的示例编写的说明中,他们通过以下部分解决了这个问题:
Configure known client applications
For the middle tier web API to be able to call the downstream web API, the user must grant the middle tier permission to do so in the form of consent. Because the middle tier has no interactive UI of its own, you need to explicitly bind the client app registration in Azure AD with the registration for the web API, which merges the consent required by both the client & middle tier into a single dialog. You can do so by adding the "Client ID" of the client app, to the manifest of the web API in the knownClientApplications property. Here's how:
- Navigate to your 'TodoListService' app registration, and open the manifest editor.
In the manifest, locate the knownClientApplications array property, and add the Client ID of your client application as an element.
Your code should look like the following after you're done:
"knownClientApplications": ["94da0930-763f-45c7-8d26-04d5938baab2"]
- Save the TodoListService manifest by clicking the "Save" button.
我的假设是,因为您遇到了这个问题,所以您没有进行此特殊配置。
您的另一个选择是明确请求中间层和 AAD 图形 API 之间的同意。您可以通过让租户管理员“登录”并同意您的中间层服务来执行此操作。您需要做的就是使用中间层 App ID 生成一个登录 url。
但是,我强烈建议您按照记录的方式进行操作,因为这将为您的用户提供更好的体验。
关于azure-active-directory - 如何在 Multi-Tenancy 环境中配置代表身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43105793/
我是一名优秀的程序员,十分优秀!