Quantcast
Channel: Azure Active Directory forum
Viewing all articles
Browse latest Browse all 16000

Graph api create user error with multi tenant

$
0
0

      我在中国的azure中创建了一个activedirectory的应用程序(程序A),这个程序的功能是获取登录用户的accesstoken,然后token使用graphapi的方式创建用户(我参照了示例代码AzureADSamples/WebApp-GraphAPI-DotNet)。

      这个程序我是发布在tanant A上的。

      我使用tanant A的管理员用户登录,使用示例代码中的代码【authenticationContext.AcquireTokenByAuthorizationCode】获取用户的accesstoken,能够获取;然后使用这个token获取SubscribedSkus【client.SubscribedSkus.ExecuteAsync().Result】也是正常的,后面添加用户【client.Users.AddUserAsync(user).Wait()】的操作也正确。

      但是我使用tenant B的管理员登录,同样使用示例代码中的代码【authenticationContext.AcquireTokenByAuthorizationCode】获取用户的accesstoken,能够获取;然后使用这个token获取SubscribedSkus【client.SubscribedSkus.ExecuteAsync().Result】就错误了,错误提示“Invalid domain name in the request url”【详细错误信息在末尾】。

      代码中的【LoginEntry】我使用了【login.chinacloudapi.cn/common】,【ResouceUrl】我使用了【https://graph.chinacloudapi.cn】。

      我已经在azure中的tenant A的那个应用程序开启了【多租户】模式,也赋予其相应的权限。

      请问各位大神遇到过这个问题吗?

System.AggregateException: One or more errors occurred. ---> Microsoft.Data.OData.ODataErrorException: Invalid domain name in the request url. ---> System.Data.Services.Client.DataServiceQueryException: An error occurred while processing this request.  ---> System.Data.Services.Client.DataServiceClientException: {"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"Invalid domain name in the request url."}}}   at System.Data.Services.Client.BaseAsyncResult.EndExecute[T](Object source, String method, IAsyncResult asyncResult)   at System.Data.Services.Client.QueryResult.EndExecuteQuery[TElement](Object source, String method, IAsyncResult asyncResult)   --- End of inner exception stack trace ---   at System.Data.Services.Client.QueryResult.EndExecuteQuery[TElement](Object source, String method, IAsyncResult asyncResult)   at System.Data.Services.Client.DataServiceRequest.EndExecute[TElement](Object source, DataServiceContext context, String method, IAsyncResult asyncResult)   at System.Data.Services.Client.DataServiceQuery`1.EndExecute(IAsyncResult asyncResult)   at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<>c__DisplayClass4c`2.<ExecuteAsync>b__4a(IAsyncResult r)   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)--- End of stack trace from previous location where exception was thrown ---   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)   at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<ExecuteAsync>d__4e`2.MoveNext()   --- End of inner exception stack trace ---   at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<ExecuteAsync>d__4e`2.MoveNext()--- End of stack trace from previous location where exception was thrown ---    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)   at Microsoft.Azure.ActiveDirectory.GraphClient.SubscribedSkuCollection.<<ExecuteAsync>b__2>d__3.MoveNext()   --- End of inner exception stack trace ---   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)   at System.Threading.Tasks.Task`1.get_Result()   at ProvisioningToolUserOper.CreateUser.btnGetSkuList_Click(Object sender, EventArgs e)---> (Inner Exception #0) Microsoft.Data.OData.ODataErrorException: Invalid domain name in the request url. ---> System.Data.Services.Client.DataServiceQueryException: An error occurred while processing this request. ---> System.Data.Services.Client.DataServiceClientException: {"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"Invalid domain name in the request url."}}}   at System.Data.Services.Client.BaseAsyncResult.EndExecute[T](Object source, String method, IAsyncResult asyncResult)   at System.Data.Services.Client.QueryResult.EndExecuteQuery[TElement](Object source, String method, IAsyncResult asyncResult)   --- End of inner exception stack trace ---   at System.Data.Services.Client.QueryResult.EndExecuteQuery[TElement](Object source, String method, IAsyncResult asyncResult)   at System.Data.Services.Client.DataServiceRequest.EndExecute[TElement](Object source, DataServiceContext context, String method, IAsyncResult asyncResult)   at System.Data.Services.Client.DataServiceQuery`1.EndExecute(IAsyncResult asyncResult)   at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<>c__DisplayClass4c`2.<ExecuteAsync>b__4a(IAsyncResult r)   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)--- End of stack trace from previous location where exception was thrown ---   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)   at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<ExecuteAsync>d__4e`2.MoveNext()   --- End of inner exception stack trace ---   at Microsoft.Azure.ActiveDirectory.GraphClient.Extensions.DataServiceContextWrapper.<ExecuteAsync>d__4e`2.MoveNext()---  End of stack trace from previous location where exception was thrown ---   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)   at Microsoft.Azure.ActiveDirectory.GraphClient.SubscribedSkuCollection.<<ExecuteAsync>b__2>d__3.MoveNext()<---


Viewing all articles
Browse latest Browse all 16000