2017-06-12 29 views
0

由于Microsoft Graph API不具备管理B2C AD用户的功能,因此从其中一个文档我们被要求使用ADAL,它需要在ADAL中创建特殊应用程序Azure AD B2C租户。创建了一个应用程序密钥,以从xamarin.ios应用程序提供API访问。异常访问使用ADAL库进行用户管理的Azure AD B2C

AuthenticationContext authContext = new AuthenticationContext(authority); 
      credential = new ClientCredential(clientId, GraphClientSecret); 
      authResult = await authContext.AcquireTokenAsync(graphResourceUri, credential); 

在AcquireTokenAsync呼叫我们得到一个异常

AcquireTokenHandlerBase.cs: System.NullReferenceException: Object reference not set to an instance of an object at Microsoft.IdentityModel.Clients.ActiveDirectory.BrokerHelper.get_CanInvokeBroker() [0x0000c] in <786d1e888b334ad993ac80d2bc3b6e92>:0 
    at Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase+<RunAsync>d__55.MoveNext() [0x00389] in <97581c6894a642ef95d008cded8ad4ac>:0 

如果我改变调用删除的凭据,我只是得到一个登录界面。

包使用:

样品从Sample from Docs

采取的任何帮助,将不胜感激。

回答

2

您不应该使用来自本地客户端应用程序(例如Xamarin/iOS应用程序)的客户端证书调用Graph API。 这是一个巨大的安全漏洞。客户端应用程序本质上是不安全的,任何人都可以反映代码,并抓住您的client_id和client_secret,他们可以使用它们来创建/更新/删除Azure AD B2C租户中的用户。

您的本地客户端应用程序应该调用一个Web API,然后调用Graph API。此Web API(link to sample)是一个您构建的API,它具有授权逻辑来限制用户管理操作。

一旦通过Microsoft Graph和MSAL支持Azure AD B2C中的用户管理,您将不需要此API,并且将能够使用委托权限(相对于使用客户端凭据的应用程序权限)让您的本机客户端应用程序交谈直接到Microsoft Graph。在此期间,您必须按照上述指导站起来自己的Web API。

+0

非常感谢。 – Jeeva

相关问题