【问题标题】: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 服务似乎对客户端一无所知。
- 您不会被告知登录 Azure 并使用“对其他应用程序的权限”部分为守护程序客户端添加访问 Web API 的权限。
- 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