2013-07-31 68 views
0

我有一個Web API控制器內部下面的代碼,它的一些調試目的:無法通過圖形API在Azure中添加Active Directory成員到組

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

您可能需要在Azure門戶中提供適當的訪問權限並在您的項目中對其進行配置對於WEB應用和/或WEB API。最近在門戶網站進行了這些更改(之前我們不得不使用PowerShell進行很多操作)。

我們做了一篇文章,解釋或多或少如何配置的一切:

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

編輯:

只是給一些解釋什麼,我覺得是,你可能要設置服務並提供有關在Azure門戶中獲取的客戶端ID和密碼的信息:

var tenantName =「emyode.com」;

string clientId =「clientId in Azure portal」;

string password =「在Azure門戶中獲取的安全密鑰」;

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

var graphService = new DirectoryDataService(tenantName,token);

+1

你好,恭喜你的第一個答案!雖然它提供了基本的信息,但在此通常還要引用您提供的鏈接中的相關部分 - 以防將來失效。請考慮擴大你的答案。 – BartoszKP

相關問題