[英]Create user with Custom Attributes in Azure AD B2C with Graph API
[英]Azure AD B2C - Get thumbnail image for logged in user via REST API
我正在尝试获取我登录的 Azure AD B2C 用户的缩略图/个人资料图片。
我一直在阅读,但到目前为止没有任何帮助。
这是一个 Azure Active Directory 图形客户端,但我想通过 Rest 为当前登录的用户获取它。 我不想要求管理员帐户来获取它。
https://stackoverflow.com/a/41056923/3850405
看起来真正有前途的是这个端点,但鉴于它是graph.windows.net
我不确定它是否会起作用,因为我稍后为graph.microsoft.com
设置了权限。
https://graph.windows.net/[tenant]/users/[objectid]/thumbnailPhoto?api-version=1.6
https://stackoverflow.com/a/55943064/3850405
最好我想调用这样的端点来获取当前登录的用户图片,但上面的端点当然可以。
https://graph.microsoft.com/v1.0/me/photo/$value
https://learn.microsoft.com/en-us/graph/api/profilephoto-get?view=graph-rest-1.0#request但是调用这个
这两种方法都需要有效的不记名令牌。
我这样做是为了访问我的Azure AD B2C
,然后是App registrations
。 Select 我的应用程序然后API permissions
。 Select Add a permission
。
点击Microsoft Graph然后添加profile
如下图:
如果我遵循 Microsoft Graph 文档Get access on behalf of a user
的指南,这将导致 Microsoft 的登录页面如下所示:
https://learn.microsoft.com/en-us/graph/auth-v2-user
如果我登录,我会收到预期的错误:
登录 抱歉,我们无法让您登录。
AADSTS50020:来自身份提供者“”的用户帐户“oscar.andersson@”在租户“”中不存在,无法访问该租户中的应用程序“()”。 需要先在租户中将账号添加为外部用户。 注销并使用不同的 Azure Active Directory 用户帐户再次登录。
当我正常登录到我的应用程序时,我会看到如下所示的屏幕。 完美运行并连接到具有以下域名的实例: https://<myadb2c>.b2clogin.com/tfp/
。
资源:
https://stackoverflow.com/a/61105325/3850405
如果我确实使用我的管理员帐户登录以Get access on behalf of a user
我确实会在未经同意的情况下返回代码。
https://learn.microsoft.com/en-us/graph/auth-v2-user?context=graph/api/1.0#consent-experience
但是,当我发出 POST 请求以获取令牌时,我得到以下响应:
https://learn.microsoft.com/en-us/graph/auth-v2-user?context=graph/api/1.0#token-request
{
"error": "invalid_grant",
"error_description": "AADSTS65001: The user or administrator has not consented to use the application with ID '' named ''. Send an interactive authorization request for this user and resource.\r\nTrace ID: \r\nCorrelation ID: \r\nTimestamp: 2020-08-21 12:23:13Z",
"error_codes": [
65001
],
"timestamp": "2020-08-21 12:23:13Z",
"trace_id": "",
"correlation_id": "",
"suberror": "consent_required"
}
根据文档:
Microsoft 标识平台 v2.0 终结点还将确保用户已同意 scope 查询参数中指示的权限。 如果用户未同意任何这些权限,并且如果管理员之前未代表组织中的所有用户同意,则将要求他们同意所需的权限。
已获得管理员同意以下权限:
如果我将工作登录更改为使用 scope https://graph.microsoft.com/profile
而不是https://<tenant-name>.onmicrosoft.com/<client-id>/read
我会得到一个代码但不是一个令牌。 错误:
{"error":"invalid_grant","error_description":"AADB2C90205:此应用程序对此 web 资源没有足够的权限来执行操作。\r\n相关 ID:\r\n时间戳:2020-08-21 13: 36:44Z\r\n"}
如果我尝试使用来自 scope 的令牌调用https://graph.microsoft.com/profile
https://<tenant-name>.onmicrosoft.com/<client-id>/read
我将收到错误消息:
{
"error": {
"code": "InvalidAuthenticationToken",
"message": "Access token validation failure.",
"innerError": {
"date": "2020-08-21T14:02:14",
"request-id": ""
}
}
}
真没想到头像这么难弄出来。 获取给定的名字和姓氏没有问题,因为此信息作为声明从Sign up and sign in (Standard)
User flow
返回。
我已经阅读了如何使用 Microsoft Graph 管理 Azure AD B2C,但这不是我想要的。 我不想仅仅因为我不想获取已经登录的用户缩略图而创建新的应用程序注册。
Azure B2C 不支持照片端点。 您可以创建自定义 API 以使用jQuery 、 UI 自定义和/或自定义策略和REST 技术配置文件来存储和检索它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.