Azure APIM和oAuth 2.0与多个客户端

3

我发现很难理解如何使用oAuth 2.0区分多个客户端应用程序。

使用APIM,我将我的后端Web服务映射到Azure API网关服务URL。我已经配置了Oauth 2.0,授权类型为客户端凭据,因为这是一种服务对服务的集成。

在Oauth注册中,我将我的客户端和后端应用程序ID与密钥映射 - (OauthSample1.0)。它没有为同一个后端服务配置多个客户端的选项。

而且,在我的API中,我只能添加一个Oauth引用 - (OauthSample1.0)。即使我为不同的客户端创建多个Oauth 2.0引用,从技术上讲,它也无法与API配置配合工作。

这意味着我可以让我的API仅验证使用一个oAuth 2.0引用的指定客户端。

如果我希望我的API被不同的合作伙伴/客户端应用程序访问,我的理解是我需要在Azure AD中创建不同的客户端。但不幸的是,我无法在此设计解决方案。


你能解决这个问题并将多个客户端ID添加到APIM吗? - user42012
1个回答

1

使用OAuth 2.0保护您的API的官方文档详细介绍了所需步骤。

总结一下,步骤如下:

  1. 注册一个应用程序来代表API
  2. 注册单独的应用程序来代表每个客户端应用程序
  3. 设置一个验证JWT策略以预授权请求

在发出请求之前,您的客户必须使用客户端凭据流获取令牌。

此外,如果您的客户是直接访问API的服务,则可以设置应用程序角色,这些角色将显示为应用程序权限而不是委派权限。


尽管多个客户端应用程序被授予访问公开API的权限,但在我们设置O-Auth 2.0的APIM侧面,没有提供传递多个客户端ID和密钥的规定,这是@battech所要求的。有什么方法可以实现以下情况吗? - Soulshifter
只有被授权访问的客户端才能获取后端API的访问令牌。因此,对其进行“aud”声明的验证就足够了。 - PramodValavala
可以使用正确的aud来验证JWT令牌,其中它将是表示API的服务器应用程序的应用程序ID。但是在以下文章的步骤12和13中,我们没有选项来配置使用多个客户端ID和密钥的O-Auth。只能是客户端应用程序的单个客户端ID和密钥。如何授予多个客户端应用程序访问权限?你能提供任何相关的文章吗? - Soulshifter
这些步骤是针对开发者门户的,该门户在此场景中充当客户端应用程序。您需要将每个客户的客户端ID和客户端密钥存储在安全存储(如KeyVault)中。 - PramodValavala
此外,如果您的客户端是直接访问API的服务,则可以设置应用程序角色,这些角色将显示为应用程序权限而不是委派权限。了解如何在Azure AD应用程序中添加应用程序角色 - PramodValavala
@PramodValavala-MSFT 我仍然困惑于如何在APIM中添加多个客户端ID和秘钥(在oAuth和客户端设置中)以利用oAuth 2.0。因为我们有多个客户端使用APIM托管的API,但无法在APIM中添加多个客户端ID。 - user42012

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接