【问题标题】:Java WebApp with OAuth to Azure AD - get profile pic?使用 OAuth 到 Azure AD 的 Java WebApp - 获取个人资料图片?
【发布时间】:2023-04-04 18:19:02
【问题描述】:

我创建了一个 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 身份验证后获取用户个人资料图片的最佳方法是什么 - 我很乐意通过客户端或服务器端执行此操作,理想情况下我想了解这两种方法

【问题讨论】:

    标签: java spring-boot azure-active-directory


    【解决方案1】:

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

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

    【讨论】:

    • 好的,但是当用户通过 OAuth 进行身份验证后,如何在服务器端为用户获取访问令牌?
    • 使用令牌缓存。用户通过身份验证后,您可以将授权码交换为访问令牌和刷新令牌。缓存这些,您可以使用刷新令牌来获取新的访问令牌和刷新令牌。我不确定这是如何在 Java 中准确实现的,因为我使用的是 .NET :)
    • 我理解你的意思——你有没有引用 c# 代码来交换访问令牌的授权代码?
    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2014-04-29
    • 2017-12-20
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    相关资源
    最近更新 更多