使用 ADAL 库进行用户管理的异常访问 Azure AD B2C
Exception access Azure AD B2C using ADAL library for user management
由于 Microsoft Graph API 没有管理 B2C AD 用户的功能,从一份文档中我们被要求使用 ADAL,这需要在 Azure AD B2C 租户中创建一个特殊的应用程序.创建了一个应用程序密钥以提供 API 从 xamarin.ios 应用程序的访问权限。
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
如有任何帮助,我们将不胜感激。
您不应使用来自本机客户端应用程序(例如 Xamarin/iOS 应用程序)的客户端凭据调用图表 API。 这是一个巨大的安全漏洞。客户端应用程序本质上是不安全的,任何人都可以反映代码并获取您的 client_id 和 client_secret,他们可以将其用于您 Azure AD B2C 租户中的 create/update/delete 用户。
您的本机客户端应用程序应调用 Web API,后者又会调用 Graph API。 This web API (link to sample) 是您构建的 API,它具有授权逻辑来确定用户管理操作的范围。
一旦通过 Microsoft Graph 和 MSAL 支持 Azure AD B2C 中的用户管理,您将不需要此 API 并且将能够使用委派权限(相对于使用客户端凭据的应用程序权限)拥有您的本机客户端应用程序直接与 Microsoft Graph 对话。在此期间,您必须按照上述指导建立自己的网站 API。
由于 Microsoft Graph API 没有管理 B2C AD 用户的功能,从一份文档中我们被要求使用 ADAL,这需要在 Azure AD B2C 租户中创建一个特殊的应用程序.创建了一个应用程序密钥以提供 API 从 xamarin.ios 应用程序的访问权限。
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
如有任何帮助,我们将不胜感激。
您不应使用来自本机客户端应用程序(例如 Xamarin/iOS 应用程序)的客户端凭据调用图表 API。 这是一个巨大的安全漏洞。客户端应用程序本质上是不安全的,任何人都可以反映代码并获取您的 client_id 和 client_secret,他们可以将其用于您 Azure AD B2C 租户中的 create/update/delete 用户。
您的本机客户端应用程序应调用 Web API,后者又会调用 Graph API。 This web API (link to sample) 是您构建的 API,它具有授权逻辑来确定用户管理操作的范围。
一旦通过 Microsoft Graph 和 MSAL 支持 Azure AD B2C 中的用户管理,您将不需要此 API 并且将能够使用委派权限(相对于使用客户端凭据的应用程序权限)拥有您的本机客户端应用程序直接与 Microsoft Graph 对话。在此期间,您必须按照上述指导建立自己的网站 API。