按code provided by Microsoft(我假设),我无法查询我的Azure Active Directory。每次拨打以下电话时,我都会收到{Authorization Required.}
的回复:
ActiveDirectoryClient client = AuthenticationHelper.GetActiveDirectoryClient();
IPagedCollection<IUser> pagedCollection = await client.Users.ExecuteAsync();
我是Azure Active Directory的新手,我是图表的新手,并认为提供的示例可以正常运行。他们不这样做,我希望有人可以告诉我代码有什么问题,或者我如何授权自己的目录?我认为AccessKey将是身份验证方法,但显然它没用,因为它们的示例中没有使用它。
答案 0 :(得分:2)
基本上,要调用受Azure AD保护的REST,它支持OAuth2.0以授权第三方应用程序,我们需要传递一个承载令牌。
要查看代码示例,请确保您按照README.md的步骤列表进行操作。
注意:README.md中有一些关于配置权限的内容。代码示例使用 Azure AD Graph 而不是Microsoft Graph,我们需要选择 Windows Azure Active Directory 而不是 Microsoft Graph 。我已经报告了此问题here。
您可以在AuthenticationHelper类中看到一个名为 token 的静态字段,当用户使用Startup.Auth.cs中的代码登录时将设置该值,如下所示:( not使用证书
// Create a Client Credential Using an Application Key
ClientCredential credential = new ClientCredential(clientId, appKey);
string userObjectID = context.AuthenticationTicket.Identity.FindFirst(
"http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
AuthenticationContext authContext = new AuthenticationContext(Authority, new NaiveSessionCache(userObjectID));
AuthenticationResult result = authContext.AcquireTokenByAuthorizationCode(
code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, graphResourceId);
AuthenticationHelper.token = result.AccessToken;
以下是通过OAuth 2.0代码授予流程获取令牌的详细进度:
有关此流程的更多详情,请参阅here。