我在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,为什么它不能将用户添加到现有的组?
答案 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);