【问题标题】:Request a JWT from azure B2C application in ASP.NET Core从 ASP.NET Core 中的 azure B2C 应用程序请求 JWT
【发布时间】:2021-02-01 23:18:19
【问题描述】:

我有两个 API。

  1. 管理 API (.NET Core API)
  2. 医疗保健 API(Azure 函数 API)

我需要在 Healthcare API 中调用一个端点,它应该从管理 API 中调用。我知道最好的方法是使用 gRPC,但现在没有时间。

Healthcare API 已通过 azure b2c 应用程序进行授权。管理员 API 已通过另一个 azure b2c 应用程序进行授权。因此,由于此授权,我无法从 Admin API 调用 Healthcare API。 (不能使用允许匿名,因为它是一个 azure 函数 API)

我想到的一个解决方案是从用于授权医疗保健 API 的 b2c 应用程序中获取 Admin API 中的 jwt 令牌。但是知道如何做到这一点。

上面的解决方案好不好?并且可行吗?有什么方法可以在不进入 gRPC 的情况下做到这一点?

提前致谢。

【问题讨论】:

标签: azure asp.net-core jwt azure-ad-b2c


【解决方案1】:

如果这 2 个 B2C 应用属于同一个 B2C 租户,而您只是想让 admin API 来调用 Healthcare API,也许您可​​以只使用 OAuth 2.0 客户端凭据授予流程。

虽然 Azure AD B2C 身份验证服务当前不直接支持 OAuth 2.0 客户端凭据授予流程,但您可以使用 Azure AD 和 Microsoft 身份平台/令牌端点为 Azure AD B2C 中的应用程序设置客户端凭据流租户。 Azure AD B2C 租户与 Azure AD 企业租户共享一些功能。

如下:

【讨论】:

  • B2C 不支持客户端凭证流,对吧?
  • 不是,但实际上 B2C 继承了部分 Azure AD 功能,因此您可以在 B2C 中使用客户端凭据流,就像在常见的 Azure AD 中使用它一样。
  • 我试过这个方法。当我使用 'graph.microsoft.com/.default' 作为范围时,我得到了一个令牌。但是有了那个令牌,我就不能调用 API。仍然得到 401。当我使用“tenant.onmicrosoft.com/lab-api/read”时,出现错误提示“AADSTS70011:提供的请求必须包含“范围”输入参数。为输入参数“范围”提供的值无效”
  • 然后我使用了tenant.onmicrosoft.com/lab-api/.default。这也给出了 401
猜你喜欢
  • 2018-10-25
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
  • 2018-08-17
相关资源
最近更新 更多