C# Azure AD B2C-通过REST API获取登录用户的缩略图

C# Azure AD B2C-通过REST API获取登录用户的缩略图,c#,azure,azure-active-directory,azure-ad-b2c,C#,Azure,Azure Active Directory,Azure Ad B2c,我正在尝试为我登录的Azure AD B2C用户获取缩略图/个人资料图片 我一直在阅读,但到目前为止没有任何帮助 这是针对Azure Active Directory图形客户端的,但我希望通过Rest为当前登录的用户获取它。我不想要求管理员帐户才能获得它 看起来真正有希望的是这个端点,但考虑到它是graph.windows.net,我不确定它是否能工作,因为我以后的权限设置为graph.microsoft.com https://graph.windows.net/[tenant]/user

我正在尝试为我登录的Azure AD B2C用户获取缩略图/个人资料图片

我一直在阅读,但到目前为止没有任何帮助

这是针对Azure Active Directory图形客户端的,但我希望通过Rest为当前登录的用户获取它。我不想要求管理员帐户才能获得它

看起来真正有希望的是这个端点,但考虑到它是
graph.windows.net
,我不确定它是否能工作,因为我以后的权限设置为
graph.microsoft.com

https://graph.windows.net/[tenant]/users/[objectid]/thumbnailPhoto?api-version=1.6

我最好调用这样的端点来获取当前登录用户的图片,但是上面的端点当然可以

https://graph.microsoft.com/v1.0/me/photo/$value
然而,这叫什么

这两种方法都需要有效的承载令牌

我这样做的目的是访问我的
Azure广告B2C
,然后
应用注册
。选择我的应用程序,然后选择API权限。选择
添加权限

单击Microsoft Graph,然后添加
profile
,如下图所示:

如果我按照Microsoft Graph文档中的
代表用户访问
指南进行操作,这将导致出现如下Microsoft登录页面:

如果我登录,我将收到预期的错误:

登录抱歉,您登录时遇到问题

AADSTS50020:来自身份提供商“”的用户帐户“oscar.andersson@” 租户“”中不存在,无法访问中的应用程序“”() 那个房客。该帐户需要作为外部用户添加到 租户优先。注销并使用其他Azure Active Directory重新登录 目录用户帐户

当我登录到我的应用程序时,通常我会看到这样一个屏幕。工作正常,可连接到域名为:
https://.b2clogin.com/tfp/

资料来源:

如果我使用我的管理员帐户登录,代表用户获得访问权限,我会在没有获得同意的情况下返回代码

但是,当我发出POST请求以获取令牌时,我会得到以下响应:

根据文件:

Microsoft identity platform v2.0端点还将确保 用户已同意范围查询中指示的权限 参数如果用户未同意任何这些权限 如果管理人之前没有代表所有人同意 组织中的用户将被要求同意 所需权限

已授予以下权限的管理员同意:

如果我将工作登录更改为使用范围
https://graph.microsoft.com/profile
而不是
https://.onmicrosoft.com//read
我将获得代码,但不是令牌。错误:

{“error”:“invalid_grant”,“error_description”:“AADB2C90205:此 应用程序对此网站没有足够的权限 用于执行该操作的资源。\r\n相关ID:\r\nTimestamp: 2020-08-21 13:36:44Z\r\n“}

如果我尝试呼叫
https://graph.microsoft.com/profile
使用范围内的令牌
https://.onmicrosoft.com//read
我将得到错误信息:

{
  "error": {
    "code": "InvalidAuthenticationToken",
    "message": "Access token validation failure.",
    "innerError": {
      "date": "2020-08-21T14:02:14",
      "request-id": ""
    }
  }
}
我真的没想到要把个人资料拍出来会这么难。获取给定的名称和姓氏没有问题,因为此信息是从
注册和登录(标准)
用户流中返回的

我已经读过如何使用Microsoft Graph管理Azure广告B2C,但这不是我不想看到的。我不想创建一个新的应用注册,因为我不想获取一个已经登录的用户缩略图


Azure B2C不支持。您可以创建一个自定义API来使用、和/或和来存储和检索它们。

好的,但我该如何访问呢?对于
API权限
->
Microsoft Graph
->
委托权限
->
配置文件
它表示“允许应用程序查看用户的基本配置文件(名称、图片、用户名)”。B2C用户流或旅程不使用配置文件声明。您可以通过获取用户帐户资源或“配置文件”(与配置文件端点不同),但为此,您必须使用标准AAD(非B2C)应用程序注册。
{
  "error": {
    "code": "InvalidAuthenticationToken",
    "message": "Access token validation failure.",
    "innerError": {
      "date": "2020-08-21T14:02:14",
      "request-id": ""
    }
  }
}