从Azure Active Directory访问所需的响应

时间:2016-10-06 18:33:30

标签: azure azure-active-directory

code provided by Microsoft(我假设),我无法查询我的Azure Active Directory。每次拨打以下电话时,我都会收到{Authorization Required.}的回复:

ActiveDirectoryClient client = AuthenticationHelper.GetActiveDirectoryClient();
IPagedCollection<IUser> pagedCollection = await client.Users.ExecuteAsync();

我是Azure Active Directory的新手,我是图表的新手,并认为提供的示例可以正常运行。他们不这样做,我希望有人可以告诉我代码有什么问题,或者我如何授权自己的目录?我认为AccessKey将是身份验证方法,但显然它没用,因为它们的示例中没有使用它。

1 个答案:

答案 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代码授予流程获取令牌的详细进度: enter image description here

有关此流程的更多详情,请参阅here