无法通过Graph API将成员添加到Azure Active Directory中的组

时间:2013-07-31 20:56:49

标签: azure azure-active-directory

我在Web API控制器中有以下代码,其中一些用于调试目的:

public void Register([FromBody]AccountInfo accountInfo)
    {
        User user = new User();
        user.accountEnabled = true;
        user.displayName = accountInfo.UserName;
        user.userPrincipalName = string.Format(CultureInfo.InvariantCulture, "{0}@{1}", user.displayName, ConfigurationManager.AppSettings["TenantDomainName"]);
        user.mailNickname = accountInfo.UserName;
        user.passwordProfile.password = accountInfo.Password;
        user.passwordProfile.forceChangePasswordNextLogin = false;
        DirectoryService.AddTousers(user);
        DirectoryService.SaveChanges();

        Group securityGroup = DirectoryService.groups.Where(u => u.displayName.Equals(accountInfo.SecurityGroup)).First();
        User addedUser = DirectoryService.users.Where(u => u.objectId.Equals(user.objectId)).First();
        DirectoryService.LoadProperty(addedUser, "memberOf");
        DirectoryService.LoadProperty(securityGroup, "members");

        DirectoryService.AddLink(securityGroup, "members", addedUser);
        //securityGroup.members.Add(addedUser);
        var users = securityGroup.members.ToList();
        var links = DirectoryService.Links;
        //DirectoryService.UpdateObject(securityGroup);
        DirectoryService.SaveChanges();
    }

上述代码在Windows Azure Active Directory中添加用户,然后尝试将该用户添加到组中。用户被添加到WAAD没有任何故障,但代码在最后一行失败,带有

  

“http://schemas.microsoft.com/ado/2007/08/dataservices/metadata \”> Authorization_RequestDeniedInsufficient权限以完成操作。“

错误消息。它不允许我将用户添加到组中。由于我的服务主管有足够的权限将用户添加到AAD,为什么它不能将用户添加到现有的组?

1 个答案:

答案 0 :(得分:1)

您可能需要在Azure门户中提供适当的访问权限,并在项目中为 WEB APPLICATION AND / OR WEB API 配置它。最近在门户网站上做了这些更改(在我们使用PowerShell做很多事情之前)。

我们做了一篇文章,或多或少解释了如何配置所有内容:

http://www.clouddevx.com/en-us/Blog/ArtMID/836/ArticleID/2

编辑:

只是为了解释一下我认为您可能需要使用有关在Azure门户中获取的客户端ID和密码的信息来设置服务:

var tenantName =“emyode.com”;

string clientId =“在Azure门户中获取的clientId ”;

string password =“在Azure门户中获取的安全密钥”;

var token = DirectoryDataServiceAuthorizationHelper.GetAuthorizationToken(tenantName,clientId,password);

var graphService = new DirectoryDataService(tenantName,token);