我尝试创建一个将组生命周期策略应用于特定组的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 RequestGET https://graph.microsoft.com/beta/groupLifecyclePolicies
https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/grouplifecyclepolicy_list处的文档指出应用程序权限应该有效。访问令牌包含所需的范围,我检查了它。
任何人都可以确认吗?
编辑03/05/2018:从上周开始,似乎每个文档都会再次运行。我目前能够通过我的应用程序权限执行所有生命周期相关的请求。
答案 0 :(得分:0)
我有完全相同的问题 - 处理用于管理O365中的组的应用程序,处理有限的用户权限并在App权限下执行O365 API请求。
我测试了在应用程序权限下工作的应用程序(使用Directory.ReadWrite.All)并且它在12月中旬工作正常。不幸的是,在昨天测试时,它失败了,缺少权限错误。
我设法找到了this commit到Graph API文档,其中显示了发生了什么。
来自Graph API团队的任何人都可以告诉您是否计划在短期内恢复此功能?这有很多有效的用途。