【发布时间】:2018-05-07 02:27:05
【问题描述】:
我尝试创建一个 Azure 函数,将组生命周期策略应用于特定组,但由于应用程序权限而失败。
使用用户名和密码验证,这没有问题。
public static string GetAccessTokenForUser(string resourceUri, string aadDomain, string userName, string password)
{
var powershellClientId = "12128f48-ec9e-42f0-b203-ea49fb6af367";
var azureADAuthority = $"https://login.microsoftonline.com/{aadDomain}/oauth/v2/authorize";
var userCreds = new UserPasswordCredential(userName, password);
var authContext = new AuthenticationContext(azureADAuthority, true);
var authResult = AuthenticationContextIntegratedAuthExtensions.AcquireTokenAsync(authContext, resourceUri, powershellClientId, userCreds).GetAwaiter().GetResult();
return authResult.AccessToken;
}
使用 ClientId 和 ClientSecret 时总是返回 401 Unauthorized 错误。
public static string GetAccessTokenForClientId(string resourceUri, string aadDomain, string clientId, string clientSecret)
{
var azureADAuthority = $"https://login.microsoftonline.com/{aadDomain}/oauth/v2/authorize";
var clientCreds = new ClientCredential(clientId, clientSecret);
var authContext = new AuthenticationContext(azureADAuthority, true);
var authResult = authContext.AcquireTokenAsync(resourceUri, clientCreds).GetAwaiter().GetResult();
return authResult.AccessToken;
}
然后我使用上一个函数中的访问令牌执行获取请求
GET https://graph.microsoft.com/beta/groupLifecyclePolicies
https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/grouplifecyclepolicy_list 的文档指出应用程序权限应该可以工作。访问令牌包含所需的范围,我检查了。
有人可以确认吗?
编辑 03/05/2018:自上周以来,这似乎在每个文档中再次起作用。我目前能够通过我的应用程序权限执行所有与生命周期相关的请求。
【问题讨论】:
-
您能否添加诸如代码、配置文件或任何可以帮助社区解决您的问题的详细信息?
-
我添加了代码示例。
-
自上周以来,这似乎在每个文档中再次起作用。我目前能够通过我的应用程序权限执行所有与生命周期相关的请求。
标签: office365 microsoft-graph-api