【问题标题】:How to check if user exists in B2C tenant based on email address?如何根据电子邮件地址检查用户是否存在于 B2C 租户中?
【发布时间】:2020-11-29 18:59:37
【问题描述】:

我正在使用此获取请求来检查用户是否存在于我的 b2c 租户中:

var url="https://graph.microsoft.com/v1.0/users?\$filter=signInNames/any(x:x/value eq 'test@auxi.com')&api-version=1.6";
final response = await client.get(url,headers:{ 'Authorization': 'Bearer $token'});

令牌是从登录流中检索到的 B2C 令牌,我在我的应用中授予了 Microsoft Graph API 的“Directory.ReadWrite.All”权限。

基于此答案:https://stackoverflow.com/a/52289249/9576638

但是我在执行查询时得到了这个响应:

"error": {
    "code": "InvalidAuthenticationToken",
    "message": "Access token validation failure.",
    "innerError": {
      "date": "2020-11-29T18:47:03",
      "request-id": "86cb2fe9-37b4-4060-8953-90748d6475aa",
      "client-request-id": "86cb2fe9-37b4-4060-8953-90748d6475aa"
    }
  }

我的目标是检查用户的电子邮件是否在 b2c 租户中。任何帮助表示感谢。

【问题讨论】:

  • 查看我的回答here。您必须在 B2C 租户中使用 vanilla AAD 身份验证流来获取 Graph API 的令牌。你不能使用用户流。

标签: azure authorization microsoft-graph-api azure-ad-b2c signing


【解决方案1】:

您是否为 Microsoft Graph 分配了应用程序委派权限或应用程序权限?

如果是 Delegated(作为用户),您需要先在客户端应用程序中请求 Graph 范围,然后再连接到您的服务器(例如通过 JavaScript)。

如果应用程序权限,您将需要使用https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow#get-a-token 中描述的客户端凭据流来获取新令牌,指定 Microsoft Graph 作为范围和客户端密码。

【讨论】:

    猜你喜欢
    • 2016-08-20
    • 2023-03-04
    • 2016-08-20
    • 2012-09-09
    • 2016-04-06
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多