Openid Azure B2C-Blazor中的颁发者(Azure AD)访问令牌

Openid Azure B2C-Blazor中的颁发者(Azure AD)访问令牌,openid,azure-ad-b2c,blazor,Openid,Azure Ad B2c,Blazor,我有一个多租户应用程序,它使用B2C作为身份管理系统,我们根据doc()使用自定义策略配置了Azure AD多租户 当用户使用Azure AD登录时,我们有一些要求: 从Azure AD(通过图形api)检索用户的个人资料图片,以在 应用程序 根据Azure AD最佳实践检索Azure AD租户名称,以显示在应用程序中 读取用户目录,以便用户可以向应用程序添加其他用户 我正在努力让1号开始工作,因为这将为我接下来的工作指明正确的方向 首先,我尝试按照()传递issueridpaccesstoke

我有一个多租户应用程序,它使用B2C作为身份管理系统,我们根据doc()使用自定义策略配置了Azure AD多租户

当用户使用Azure AD登录时,我们有一些要求:

  • 从Azure AD(通过图形api)检索用户的个人资料图片,以在 应用程序
  • 根据Azure AD最佳实践检索Azure AD租户名称,以显示在应用程序中
  • 读取用户目录,以便用户可以向应用程序添加其他用户
  • 我正在努力让1号开始工作,因为这将为我接下来的工作指明正确的方向

    首先,我尝试按照()传递issueridpaccesstoken,但这会使用户的初始登录大大膨胀,导致可怕的400头过长错误。花了几天时间试图解决这个问题,似乎每次都指向“清除cookies”的解决方案。。。但在这种情况下,这实际上不起作用。Cookie实际上并不多,而且似乎没有任何地方可以修复头溢出。此外,我不希望直接从前端接收访问令牌和调用图api,而是希望从.net core webapi后端接收,并代理图片或我想要执行的任何其他图形api操作。为了实现这一点,我研究了使用后端api的基于应用程序的身份验证,但要在应用程序中获得多个管理员同意等,似乎还有很长的路要走,我更愿意在用户从前端首次登录时这样做

    我研究了多种解决方案,研究了如何创建一个身份守护进程,并在internet上搜索了各种选项。。然而,似乎一些应该简单的事情过于复杂了

    这让我想到了我的问题:

  • 是否可以不通过B2C中的发卡机构访问令牌,而是在需要时稍后请求访问令牌?如何从后端API执行此操作
  • 如果上述操作不可行,是否有人能够通过issuer访问令牌而不获取过长的标头错误?在B2C的自定义策略中,以及在收到访问令牌时在代码中处理该令牌时,是否有任何示例可以解释如何做到这一点?我试图删除Azure广告和B2C本身返回的一些声明,但似乎我无法充分减少声明以避免造成溢出
  • 如果唯一的选择是传递令牌,那么如何在前端安全地管理该令牌

  • 非常感谢

    不要在前端存储代币。使用从API调用MS Graph。有关更多信息,请参阅

    您可以使用所需的最低权限调用以下端点来执行所有3项要求:

  • 使用
  • 使用
  • 使用

  • 在我看来,您应该过滤identity server返回的索赔。您要求的声明太多,这就是您的头太大的原因。Alfredo Revilla是对的,如果您使用以下选项配置身份验证:
    options.StoreTokens=true
    您将遇到错误的请求头太长错误。