首页 > 解决方案 > 使用 OAuth 到 Azure AD 的 Java WebApp - 获取个人资料图片?

问题描述

我创建了一个 SpringBoot 应用程序,它使用 OAuth 2.0 针对我公司的 Azure Active Directory 服务器对用户进行身份验证

现在我想显示用户的个人资料图片。

我解决这个问题的第一种方法是天真地将图形 API url 嵌入到 IMG 标记中的用户个人资料图片中,假设浏览器的 cookie 将为登录用户隐式提供身份验证:

<img src="https://graph.microsoft.com/v1.0/me/photos/48x48/$value"/>

但这会导致 401 错误:

{
  "error": {
    "code": "InvalidAuthenticationToken",
    "message": "Access token is empty.",
    "innerError": {
      "request-id": "71fe8fc9-e8d2-4f2e-950d-04e7d9fa64e6",
      "date": "2018-09-24T07:08:50"
    }
  }
}

在 AD/OAuth 身份验证后获取用户个人资料图片的最佳方法是什么 - 我很高兴在客户端或服务器端执行此操作,理想情况下我想知道这两种方法

标签: javaspring-bootazure-active-directory

解决方案


您可以在客户端执行此操作,但您需要使用 ADAL.JS/MSAL.JS 获取访问令牌,然后请求文件并通过 JavaScript 将其设置为 img 元素的内容。

服务器端可能更容易实现,将 img 指向后端的 HTTP 路由,获取访问令牌,调用 API,并从路由返回图像的字节。


推荐阅读