使Microsoft Graph生命周期策略无法使用应用程序权限

时间:2017-11-23 07:50:12

标签: office365 microsoft-graph

我尝试创建一个将组生命周期策略应用于特定组的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;
    }

然后我使用上一个函数

中的Access令牌执行Get Request
GET https://graph.microsoft.com/beta/groupLifecyclePolicies

https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/grouplifecyclepolicy_list处的文档指出应用程序权限应该有效。访问令牌包含所需的范围,我检查了它。

任何人都可以确认吗?

编辑03/05/2018:从上周开始,似乎每个文档都会再次运行。我目前能够通过我的应用程序权限执行所有生命周期相关的请求。

1 个答案:

答案 0 :(得分:0)

我有完全相同的问题 - 处理用于管理O365中的组的应用程序,处理有限的用户权限并在App权限下执行O365 API请求。

我测试了在应用程序权限下工作的应用程序(使用Directory.ReadWrite.All)并且它在12月中旬工作正常。不幸的是,在昨天测试时,它失败了,缺少权限错误。

我设法找到了this commit到Graph API文档,其中显示了发生了什么。

来自Graph API团队的任何人都可以告诉您是否计划在短期内恢复此功能?这有很多有效的用途。