想要将传入请求更改为身份或 openIDConnect

Want to change incoming request to identity or openIDConnect

我从Microsoft Docs上看到,他们在政策中只提供了这3个基本的,证书和MSI。 https://docs.microsoft.com/en-us/azure/api-management/api-management-authentication-policies#AuthenticationPolicies

这是否意味着我无法完成 OIDC?

正如 article 所说:

If your backend API is already secured with OAuth2.0 using any platform, then the API consumers should pass the Authorization header to the API management. You do not need to add any policy in the API Management. The header would be sent by API Consumer and API Management would send the same header to the Backend API.

使用基本身份验证和set header manually

<authentication-basic username="username" password="password" />
<set-header name="Authorization" exists-action="override">
   <value>@("Bearer " + (string)context.Variables["token"])</value>
</set-header>

简短回答:如果您要更改 API 具有后端 API 的消费者的身份验证,则 API 管理没有变化。

下面给出了解释身份验证策略如何与API消费者身份验证无关的长答案。

基本概念

API 管理在您的 API 和您的消费者之间。

从术语的角度来看,您的 API 在这种情况下称为后端 API。 FrontendAPI是API管理的URL,可以分享给你的用户

参考this page for further basic terminology关于API管理。

在我看来,有两个不同的问题:一个是关于消费者 OAuth 身份验证,另一个是关于在 APIM.

中需要配置哪些身份验证策略。

消费者身份验证

因此,如果您希望您的消费者使用 JWT 身份验证或 OAuth 身份验证进行身份验证,流程很简单。消费者将从身份服务获取身份验证令牌,然后使用该令牌调用您的 API.

只要您不使用 API 管理策略对其进行修改,它就应该可以工作。 API 管理层不需要知道权限或任何其他有关权限的详细信息。

APIM 验证策略

根据您的设计,您可以选择后端 API(即您在 APIM 中托管的 API)是否应该有逻辑来验证前端 API - 确保只有已知方呼叫您的 API.

根据documentation,您可以配置:

  • 基本身份验证策略并在每次向后端发送请求时发送用户名和密码API
  • 证书身份验证策略并随每个请求向后端发送证书指纹API
  • 托管身份以使用 Azure AD 身份验证。

所有这三个策略只是帮助您的后端 API 确保调用者的身份(即本例中的 APIM Fronend API)。这与消费者身份验证和 OAuth 无关。

例如。您可以将 API 设置为消费者需要使用 Facebook 身份验证进行身份验证。此外,您可以通过证书身份验证来识别只有有效的 APIM 实例将消费者请求从前端 API 重定向到后端 API.

希望这能说明问题。