0

我正在尝试在单租户模式下运行 active-directory-dotnet-webapi-onbehalfof 示例。我已将 Web 应用程序服务和本机应用程序客户端注册为租户的全局管理员。当我运行示例时,作为租户中的用户,我只能在弹出同意(用户第一次)后才能在客户端中获取令牌,然后调用使其进入服务,但它在下面失败。这是为什么?文档说当租户管理员注册应用程序时不需要进一步的同意?当远程 webapi 尝试获取 OBO 令牌时,我认为不可能给予同意。有些东西似乎有问题... AAD 团队,请澄清应该如何使用 OBO 功能。

AADSTS65001:用户或管理员未同意使用 ID 为“b824502e-fe8a-4770-bd98-8d65a07efcc3”的应用程序。为此用户和资源发送交互式授权请求。跟踪 ID:ad7843d0-be4e-4098-8f7c-43c8e5505cfc 相关 ID:140466a4-7250-429f-8843-dbd4f63dc60e 时间戳:2016-11-25 21:46:13Z

4

1 回答 1

1

当您使用 Azure 管理门户 (manage.windowsazure.com) 作为租户管理员注册应用程序时,是的,您不应该获得同意,只要在同一租户中检索后续令牌即可。

因为您看到的是对本机客户端应用程序的同意,然后收到该错误消息,所以我们必须假设某些事情不满意,这会抑制您的应用程序的同意。

为了解决这个问题,我的建议是像错误消息所暗示的那样简单地启动一个交互式授权请求。您可以通过为您的应用程序生成一个登录 url 来执行此操作,其中包含一个特定的查询字符串,该字符串将强制提示租户广泛同意 (prompt=admin_consent)。

这是您需要完成的 URL 的框架:

https://login.microsoftonline.com/<TenantID>/oauth2/authorize?client_id=<AppID>&response_type=code&redirect_uri=<RedirectURI>&resource=<ResourceURI>&prompt=admin_consent

您可以为您注册的所有应用程序执行此操作,并且您不应该遇到同意问题(假设您确实以租户管理员身份登录)。

我希望这可以解决您的问题。

于 2016-11-27T07:33:32.967 回答