【问题标题】:Sample active-directory-dotnet-webapi-onbehalfof not working示例 active-directory-dotnet-webapi-onbehalfof 不工作
【发布时间】:2017-04-10 08:01:04
【问题描述】:

我正在尝试在单租户模式下运行 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

【问题讨论】:

    标签: asp.net-web-api azure-active-directory send-on-behalf-of


    【解决方案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
    

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

    希望这能解决您的问题。

    【讨论】:

    • 是的,我知道交互式同意技巧 - 问题是 OBO 功能不能开箱即用,如文档所述。希望这个问题很快得到解决。
    • 我觉得您好像发现了 OBO 功能中的问题,而实际上这是一个同意问题。正如我在帖子中提到的,假设满足一组要求,Azure 门户确实会写同意书。您这边的调查应该是试图了解是什么问题导致同意记录不被记录。例如,您可能会发现您的用户帐户实际上不是租户管理员。另请记住,参与 OBO 流程的每个应用程序都需要记录同意。
    猜你喜欢
    • 1970-01-01
    • 2016-01-20
    • 2017-12-11
    • 2017-12-15
    • 1970-01-01
    • 2017-06-28
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多