0

我有一个天蓝色的功能应用程序,机器(客户端凭据流)和人类(授权代码流)都需要能够授权/验证。

最初,我使用 easy-auth、Azures 开箱即用的解决方案来保护功能应用程序。但是,根据此https://stackoverflow.com/a/57357226/7411328,无法通过简单的身份验证使用客户端凭据流。虽然我不明白这是为什么。为什么不能通过一个应用程序注册对两个不同的流程使用相同的权限?

假设(可能不正确)以上是正确的,我必须自己实现 JWT 验证。

有没有可靠的方法来判断 API 是由机器调用还是由人调用?

我还应该使用两个单独的应用程序注册吗?

我对这些技术的理解可能不足以正确提出这个问题,如果我能做些什么来澄清这个问题,请告诉我。

4

1 回答 1

3

据我所知,您可以使用客户端凭据流调用受easy-auth保护的Azure函数(AAD作为身份验证提供者)。通常,您可以尝试以下步骤:

  1. 注册 Azure AD 应用
  2. 通过以下请求从 Azure AD 获取访问令牌:

网址:

POST https://login.microsoftonline.com/<your tenant ID/name>/oauth2/token

标题:

Content-Type: application/x-www-form-urlencoded

身体:

client_id=<your new resistered app ID>&
client_secret=<your new resistered app secret>&
resource=<your Azure function app ID which configed at easy-auth>&
grant_type=client_credentials

结果: 在此处输入图像描述

使用此访问令牌调用 Azure 函数: 在此处输入图像描述

如果您使用的是 Azure AD b2c,请向我提供更详细的信息,我会为您做一些研究。

于 2019-11-11T04:19:34.757 回答