【问题标题】:Azure Active Directory Daemon Client Using Certificates使用证书的 Azure Active Directory 守护程序客户端
【发布时间】:2016-03-28 16:31:23
【问题描述】:

我一直在 GitHub 上查看 Azure Active Directory 的官方 Authenticating to Azure AD in daemon apps with certificates 示例。 Web API 服务似乎对客户端一无所知。

  1. 您不会被告知登录 Azure 并使用“对其他应用程序的权限”部分为守护程序客户端添加访问 Web API 的权限。
  2. Web API 控制器操作不检查调用者的声明以确保它是客户端应用程序。它确实有这段代码,但我并不完全理解:
公共 IEnumerable Get() { // // Scope 声明告诉您客户端应用程序在服务中拥有哪些权限。 // 在这种情况下,我们寻找 user_impersonation 的范围值,或作为用户对服务的完全访问权限。 // Claim scopeClaim = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/scope"); 如果(范围声明!= null) { if (scopeClaim.Value != "user_impersonation") { throw new HttpResponseException(new HttpResponseMessage { StatusCode = HttpStatusCode.Unauthorized, ReasonPhrase = "范围声明不包含 'user_impersonation' 或未找到范围声明" }); } } // 用户的待办事项列表与 NameIdentifier 声明无关,其中包含用户的不可变的唯一标识符。 索赔主题 = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier); 从 todoBag 中的 todo 返回 其中 todo.Owner == subject.Value 选择待办事项; }

我认为在我的 Azure AD 中注册的任何客户端都可以通过此示例的设置方式访问 Web API 是否正确。

【问题讨论】:

    标签: azure azure-active-directory


    【解决方案1】:

    好问题,这无疑是一种误导。答案是肯定的 - 在 Azure AD 租户中注册的任何 Web 客户端都可以使用代码示例中描述的客户端凭据流获取访问 Web API 的令牌。

    如果您不希望这种行为,您有 2 个选择:

    1. 通过编辑应用程序清单 (see this sample) 为您的 Web API 定义至少一个应用程序角色。你可以定义一些有意义的东西,比如“admin”或者更通用的东西,比如“full_access”。在您的 Web API 代码中,您可以在授权请求之前检查是否存在相应的角色声明。如果您选择此策略,Azure AD 租户管理员将能够使用 Permissions to Other Applications 部分向各个客户端授予访问权限,如您所料。
    2. 另一种策略是简单地根据某种 ACL 或白名单检查传入令牌的声明。一种常见的做法是检查特定知名客户端 ID 的 appid 声明。

    示例代码确实具有误导性,因为它使用了 scope 声明。 API 被编写为与代表用户(委托令牌)和使用应用程序的身份(客户端凭据)访问 API 的客户端一起使用。这就是您在其中看到范围声明的原因。

    在运行时,您引用的验证逻辑会发现 scopeClaim == null。然后,它将使用 ClaimTypes.NameIdentifier 声明(也称为 sub 声明)来识别客户端应用程序以及属于该特定应用程序的 POST 或 GET 待办事项。

    此示例不限制 Azure AD 租户中的哪些客户端可以访问 Web API。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 2017-07-29
      • 1970-01-01
      • 2014-12-27
      • 2019-04-28
      相关资源
      最近更新 更多