创建 AD 用户抛出 Authorization_RequestDenied: "Insufficient privileges to complete the operation." 异常
Creating AD Users throws Authorization_RequestDenied: "Insufficient privileges to complete the operation." exception
我正在创建一个 C# 控制台应用程序,它正在为特定租户读取和创建 Azure AD 帐户。
我添加了一个 Azure AD 应用程序并记录了 AppId、AppKey(秘密)、TenantId、TenantName。
为此,我们使用以下 NuGet 包:
从域中读取 Azure AD 帐户工作正常,但创建新的 Azure AD 帐户会引发异常:
activeDirectoryClient.Users.AddUserAsync(userToBeAdded).Wait();
"Insufficient privileges to complete the operation."
"{\"odata.error\":{\"code\":\"Authorization_RequestDenied\",\"message\":{\"lang\":\"en\",\"value\":\"Insufficient privileges to complete the operation.\"}}}"
在 System.Data.Services.Client.SaveResult.HandleResponse()
在 System.Data.Services.Client.BaseSaveResult.EndRequest()
在 System.Data.Services.Client.DataServiceContext.EndSaveChanges(IAsyncResult asyncResult)
在 System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func
2 endFunction,Action1 endAction, Task
1 promise,Boolean requiresSynchronization)
--- 从抛出异常的先前位置开始的堆栈跟踪结束 ---
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
在 Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.d__74.MoveNext()
因为Console应用没有UI.
所以使用AppId&Secret进行认证
public async Task<string> AcquireTokenAsyncForApplication()
{
AuthenticationContext authenticationContext = new AuthenticationContext("https://login.microsoftonline.com/" + tenantName, false);
// Config for OAuth client credentials
ClientCredential clientCred = new ClientCredential("<appid>", "<appsecret>");
var authenticationResult = authenticationContext.AcquireTokenAsync("https://graph.windows.net", clientCred);
authenticationResult.Wait();
return authenticationResult.Result.AccessToken;
}
public void Authenticate()
{
Uri servicePointUri = new Uri("https://graph.windows.net");
Uri serviceRoot = new Uri(servicePointUri, tenantId);
activeDirectoryClient = new ActiveDirectoryClient(serviceRoot,
async () => await AcquireTokenAsyncForApplication());
}
我在应用程序本身上启用了所有权限并委派了权限,但授权异常仍然出现。我怎样才能找到这里的错误?我该如何解决这个问题?
此致,
詹斯
要使用客户端凭据通过 Azure Graph REST 创建用户,我们可以为应用程序权限[=19=配置Directory.ReadWrite.All权限】 如下图:
获取访问令牌后,您可以解析来自here的令牌并确保Directory.ReadWrite.All在创建之前在令牌中用户。
我正在创建一个 C# 控制台应用程序,它正在为特定租户读取和创建 Azure AD 帐户。 我添加了一个 Azure AD 应用程序并记录了 AppId、AppKey(秘密)、TenantId、TenantName。
为此,我们使用以下 NuGet 包:
从域中读取 Azure AD 帐户工作正常,但创建新的 Azure AD 帐户会引发异常: activeDirectoryClient.Users.AddUserAsync(userToBeAdded).Wait();
"Insufficient privileges to complete the operation."
"{\"odata.error\":{\"code\":\"Authorization_RequestDenied\",\"message\":{\"lang\":\"en\",\"value\":\"Insufficient privileges to complete the operation.\"}}}"
在 System.Data.Services.Client.SaveResult.HandleResponse()
在 System.Data.Services.Client.BaseSaveResult.EndRequest()
在 System.Data.Services.Client.DataServiceContext.EndSaveChanges(IAsyncResult asyncResult)
在 System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func
2 endFunction,Action1 endAction, Task
1 promise,Boolean requiresSynchronization)
--- 从抛出异常的先前位置开始的堆栈跟踪结束 ---
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
在 Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.d__74.MoveNext()
因为Console应用没有UI.
所以使用AppId&Secret进行认证public async Task<string> AcquireTokenAsyncForApplication()
{
AuthenticationContext authenticationContext = new AuthenticationContext("https://login.microsoftonline.com/" + tenantName, false);
// Config for OAuth client credentials
ClientCredential clientCred = new ClientCredential("<appid>", "<appsecret>");
var authenticationResult = authenticationContext.AcquireTokenAsync("https://graph.windows.net", clientCred);
authenticationResult.Wait();
return authenticationResult.Result.AccessToken;
}
public void Authenticate()
{
Uri servicePointUri = new Uri("https://graph.windows.net");
Uri serviceRoot = new Uri(servicePointUri, tenantId);
activeDirectoryClient = new ActiveDirectoryClient(serviceRoot,
async () => await AcquireTokenAsyncForApplication());
}
我在应用程序本身上启用了所有权限并委派了权限,但授权异常仍然出现。我怎样才能找到这里的错误?我该如何解决这个问题?
此致, 詹斯
要使用客户端凭据通过 Azure Graph REST 创建用户,我们可以为应用程序权限[=19=配置Directory.ReadWrite.All权限】 如下图:
获取访问令牌后,您可以解析来自here的令牌并确保Directory.ReadWrite.All在创建之前在令牌中用户。