azure-api-management 相关问题

Azure API Management是一种云托管服务,可以在任何平台上为现有HTTP API添加许多功能。这包括与安全性,API密钥管理,缓存,文档和许多其他交叉策略相关的功能。有关详细信息,请参阅:http://azure.microsoft.com/apim

Azure API 管理 - TLS 1.3 和协商客户端证书

根据此博文,如果启用“协商客户端证书”,Azure API 管理应默认为 TLS 1.2,因为 TLS 1.3 不允许这样做。 我已经在...

回答 1 投票 0

应用程序网关和基于 APIM 路径的路由

我是应用程序网关的新手,想知道如何修改应用程序网关和 apim 中的 url 并将原始请求发送到后端服务。 我有一个使用公共 IP 设置的应用程序网关

回答 1 投票 0

通过 Terraform 将多个 OpenApi 文档导入到现有的 Azure Api 管理 API 中

我正在尝试通过 Terraform 将 2 个 Swagger.json 文件中的端点添加到现有的通用 API 管理 API。 常用API定义: 资源“azurerm_api_management_api”“test_api&q...

回答 1 投票 0

删除api管理策略中的部分url

如何删除azure APIM策略中的部分uri路径? 原始请求遵循某种模式:https://apim.com/preprod/api/v1/*** 所需的 Url,其中不含 /preprod 路由, 例如:https://test.abc.c...

回答 1 投票 0

APIMS - 忽略 OperationNotFound 错误 - 防止将其记录到 AI 中

使用 Azure APIMS,我想忽略某些错误并阻止它们将这些错误记录到 Application Insights 中。 我知道这可以通过制定政策来实现。然而,没有一个

回答 1 投票 0

在 Application Insights 中将 404 错误抑制为 Api 管理服务中的故障

我们有一个与 Application Insights 集成一起运行的 Api 管理服务,该服务运行得非常好。 然而,其中一个端点(有一个 Restfull api 作为后端)可能会

回答 1 投票 0

用于验证 B2B 令牌以及 B2C 租户令牌端点的 APIM 策略

在 azure api 管理服务中为单个 api 添加 b2b 和 b2c 端点的多个 validate-jwt 策略是否有效? # B2C 端点 在 azure api 管理服务中为单个 api 添加多个 b2b 和 b2c 端点的 validate-jwt 策略是否有效? # b2c endpoint <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url="https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/b2c_1_signin/v2.0/.well-known/openid-configuration" /> <audiences> ... </validate-jwt> # b2b endpoint <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url="https://login.microsoftonline.com/contoso.onmicrosoft.com/.well-known/openid-configuration" /> <audiences> ... </validate-jwt> 是的,您可以在单个 API 中添加多个 validate-jwt 策略,但在 b2c 和 b2b 等某些条件下,您需要将每个 validate-jwt 保留在 <choose> 块中。 如果您在共享时直接添加它们,那么它会将令牌与两个端点进行比较,并会给您 401 错误,因为其中之一永远不会匹配。 所以,建议将其保留在<choose>块中。 您可以在 <when> 中给出任何您想要的条件,以在 b2b 和 b2c 之间进行过滤。因此,传入请求标头中的令牌将与正确的端点进行比较。 <policies> <inbound> <base /> <choose> <!-- B2C Endpoint --> <when condition="@(context.Request.OriginalUrl.Contains('/b2c'))"> <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url="https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/b2c_1_signin/v2.0/.well-known/openid-configuration" /> <audiences> <audience>Your_B2C_Client_ID</audience> </audiences> </validate-jwt> </when> <!-- B2B Endpoint --> <when condition="@(context.Request.OriginalUrl.Contains('/b2b'))"> <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url="https://login.microsoftonline.com/contoso.onmicrosoft.com/.well-known/openid-configuration" /> <audiences> <audience>Your_B2B_Client_ID</audience> </audiences> </validate-jwt> </when> </choose> </inbound> </policies>

回答 1 投票 0

将 Azure Function 应用导入 API 管理服务后,如何查看/编辑添加生成的主机密钥授权调用的策略?

我已将 Azure Function 应用程序导入到 Azure API 管理服务中,该服务会自动在 Function 应用程序上生成一个主机密钥,用于授权对其进行调用。 我想检查一下...

回答 1 投票 0

APIM JWT 验证策略密钥发行人问题

我正在使用 APIM 来验证 JWT 令牌,这是我的策略外观 我正在使用 APIM 来验证 JWT 令牌,这是我的策略外观 <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <audience>68f3930e-0492-4642-8cd0-65d68a504dba</audience> <audience>7a20a24d-1bc7-4906-8dfc-c0e6dfd19d69</audience> <audience>ae901aaf-6bea-4e1b-902c-6851e4305b1b</audience> <audience>0d5b8f5e-4045-459c-99f1-a710ca8dd63e</audience> <audience>c37587ed-2974-4932-b87f-e51886ca378e</audience> <audience>2f96ac72-7887-4aa4-a02c-204288fe1ed8</audience> <audience>7c5dd291-edd7-4dc4-ad09-25ac006a0a42</audience> </audiences> <issuers> <issuer>https://login.microsoftonline.com/{TenantId}/v2.0/</issuer> <issuer>https://{Tenant}.b2clogin.com/38cf84e1-4cbb-4abb-8aa3-4c0f7107c585/v2.0/</issuer> <issuer>https://sts.windows.net/{TennatId}/</issuer> </issuers> </validate-jwt> 我指定发行者,以便我可以验证 B2B 和 B2C JWT 令牌,并且还添加了受众,以便它可以验证多个应用程序生成的令牌。我没有指定 OpenId Config,因为在我的案例中指定了明确的颁发者。 我收到此错误 validate-jwt (-0.148 ms) { "message": "JWT Validation Failed: IDX10500: Signature validation failed. No security keys were provided to validate the signature.." } 我尝试指定这样的发行者密钥,我以这种方式得到 1- https://login.microsoftonline.com/{tenant_id}/discovery/keys?appid={client_id} 2- https://{Tenant}.b2clogin.com/{tenant}.onmicrosoft.com/B2C_1_si/discovery/v2.0/keys 我正在检索多个孩子,我在下面指定了这些孩子,但在保存“无效的 Base64 字符串”策略时出现错误 <issuer-signing-keys> <key>X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk</key> <key>Mr5-AUibfBii7Nd1jBebaxboXW0</key> </issuer-signing-keys> 请建议我在我的案例中做错了什么。 保存“无效 Base64 字符串”策略时出错 您可以将 Base64 格式的 <issuer-signing-keys> 键用作 <key>@(Convert.ToBase64String(Encoding.UTF8.GetBytes("signing-keys")))</key>,请参阅 SO thread。 但需要对称密钥来验证 A128CBC-HS256、A192CBC-HS384、A256CBC-HS512 算法,根据this ms docs。 我已使用以下策略使用 Azure AD 验证 jwt 令牌,而无需使用任何密钥。 <policies> <inbound> <base /> <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid." require-scheme="Bearer"> <openid-config url="https://login.microsoftonline.com/<tenant_id>/.well-known/openid-configuration" /> <audiences> <audience>xxxxxxxxxxxxxxxxxxxxxxxxxxx</audience> </audiences> <issuers> <issuer>https://sts.windows.net/{tenant_id}/</issuer> </issuers> </validate-jwt> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies> 输出 请参阅 SO Thread1 以验证多个发行者和受众。

回答 1 投票 0

Azure api 管理服务无法授权调用 Web 应用程序 API

我正在尝试使用托管在 Azure Web 应用程序中的一个后端 API 设置 Azure API 管理服务。 APIM 应该在服务主体的帮助下针对 Web 应用程序进行身份验证。 我

回答 1 投票 0

OpenAI 部署的 API 管理中的后端切换逻辑问题

我正在实施一个 API 管理 (APIM) 解决方案来集成两个 Azure OpenAI 部署(PTU 和按次付费)。我的目标是有效管理代币使用并动态避免 429 错误

回答 1 投票 0

如何在apim策略中集成Azure功能

我开发了一个Azure功能,并希望使用send-request或set-backend-service策略将其集成到apim策略中。有人可以帮我实现这个目标吗? 我尝试了以下但我不是

回答 1 投票 0

如何更改 Azure API 管理服务中端点/操作的 Azure Functions 后端?

我正在开发我们已经使用多年的 Azure Functions 应用程序的新版本。该应用程序已经经历了多个版本。对于每个主要版本,遵循建议...

回答 2 投票 0

为什么 azure-openai-emit-token-metric 策略不捕获 GPT4o 流响应的令牌使用情况?

我正在开发一个检索增强生成 (RAG) 应用程序,该应用程序使用 Azure OpenAI GPT4o 进行两种类型的 API 调用: 重新表述问题(非流媒体通话) 生成响应(str...

回答 1 投票 0

APIM - 根据上传到 API 管理的证书验证指纹

我目前有以下策略,可根据上传到 API 管理的“任何”证书验证证书指纹: 我目前有以下策略,可根据上传到 API 管理的“任何”证书验证证书指纹: <choose> <when condition="@(context.Request.Certificate == null || !context.Deployment.Certificates.Any(c => c.Value.Thumbprint == context.Request.Certificate.Thumbprint))"> <return-response> <set-status code="403" reason="Invalid client certificate"/> </return-response> </when> </choose> 但我想根据上传到 API 管理的“特定”证书验证指纹,不是“任何”。 我已尝试以下政策: <choose> <when condition="@(context.Request.Certificate == null || context.Deployment.Certificates["MyCert"].Thumbprint == context.Request.Certificate.Thumbprint)"> <return-response> <set-status code="403" reason="Invalid client certificate"/> </return-response> </when> </choose> “MyCert”是API中“客户端证书”的“Id”,指的是Key Vault中上传的证书。 但是当我调用 API 时,它会抛出此错误: 表达式评估失败。字典中不存在给定的密钥“MyCert”。在 System.Collections.Immutable.ImmutableDictionary`2.get_Item(TKey key) 有人可以帮我解决这个问题吗? context.Deployment.Certificates.Values 不包含要过滤的证书 ID 参数。 您可以使用 <set-variable name="Values" value="@((string)string.Join(", ", context.Deployment.Certificates.Values))" /> 表达式来验证它。 您可以使用下面给出的策略来传递在 APIM 中上传的特定证书的指纹,以验证传入的证书。 <policies> <inbound> <base /> <choose> <when condition="@(context.Request.Certificate != null || (string)context.Deployment.Certificates.Values.FirstOrDefault(cert => cert.Thumbprint == "<APIMCertThumbprint>")?.Thumbprint == context.Request.Certificate.Thumbprint)"> <return-response> <set-status code="200" reason="OK" /> <set-body>Valid certificate</set-body> </return-response> </when> <otherwise> <return-response> <set-status code="403" reason="Invalid client certificate" /> <set-body>Invalid or missing client certificate</set-body> </return-response> </otherwise> </choose> </inbound> </policies> 由于某些限制,我无法传递请求正文中的证书信息,因此我通过将指纹值存储在 set-variable 中与 APIM 中上传的证书进行测试。

回答 1 投票 0

Api 管理测试控制台失败,我的入站策略是否有问题?

我目前正在尝试使用 Api 管理将调用重定向到特定端点,以便当有人访问我的端点时 https://ApiManagementResource.azure-api.net/auth/ParseState?state=Splited%

回答 1 投票 0

在 Azure APIM 上公开每个 api 的默认文档

我目前在 apim 后面托管 serval api。我现在计划公开文档并希望以编程方式执行此操作,因此我的问题是: 是否有可能制定一个全球性的拦截政策

回答 1 投票 0

Azure APIM 策略中的 Newtonsoft.Json 转换

在 Azure APIM 策略中 - 响应可以作为 Json 对象或 Json 数组返回 - 但也可以是其中之一,并且这两种情况都需要处理。 这仅在响应时才有效...

回答 1 投票 0

APIM 组合节流策略方法

目前在 APIM 中,我们有产品订阅密钥级别限制。但显然,如果我们在同一产品中有多个 API,则一个 API 可能会消耗更多配额 超出预期并防止其他...

回答 3 投票 0

API 管理:策略无法正确识别表达式的语法

我想在其中一个 api 中应用此策略,以将其收到的令牌重定向到 api https://obw.stdn.com.pe/api/mf/v3/ami/authorize 我想在其中一个 api 中应用此策略,以将其收到的令牌重定向到 api https://obw.stdn.com.pe/api/mf/v3/ami/authorize <policies> <inbound> <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url="https://uatidpbsp.b2clogin.com/uatidpbsp.onmicrosoft.com/B2C_1A_LOGIN_OOBB/v2.0/.well-known/openid-configuration" /> <audiences> <audience>01c396bf-e852-b396-d0a7e4d0d373</audience> <audience>c2ef0c9f-98f1-920e-44fb99c98026</audience> </audiences> <issuers> <issuer>https://uatidpbsp.b2clogin.com/a359g4c43-4228-563k5-89b6/v2.0/</issuer> </issuers> </validate-jwt> <!-- Send the request to the external endpoint with the token --> <send-request mode="new"> <set-url>https://obw.stdn.com.pe/api/mf/v3/ami/authorize</set-url> <set-method>POST</set-method> <set-header name="Authorization" exists-action="override"> <value>Bearer @(context.Request.Headers.GetValueOrDefault("Authorization", ""))</value> </set-header> <set-header name="Ocp-Apim-Subscription-Key" exists-action="override"> <value>e75ee8762a842htf96e36ba5f9z8c275</value> </set-header> <set-body> <value>{}</value> </set-body> </send-request> <base /> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies> 我收到以下错误: Some of the policy expressions may not have the correct parentheses or braces format. Please ensure that all policy expressions are in the correct format @() or @{}, in order to avoid any issues. 当我尝试保存策略时,出现语法错误。 发送请求策略需要进行两项修改: 需要响应变量 <send-request mode="new" response-variable-name="responseExternal"> 主体值的大括号必须被删除 <set-body><value /></set-body> 完整政策: <policies> <inbound> <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid."> <openid-config url="https://uatidpbsp.b2clogin.com/uatidpbsp.onmicrosoft.com/B2C_1A_LOGIN_OOBB/v2.0/.well-known/openid-configuration" /> <audiences> <audience>01c396bf-e852-b396-d0a7e4d0d373</audience> <audience>c2ef0c9f-98f1-920e-44fb99c98026</audience> </audiences> <issuers> <issuer>https://uatidpbsp.b2clogin.com/a359g4c43-4228-563k5-89b6/v2.0/</issuer> </issuers> </validate-jwt> <!-- Send the request to the external endpoint with the token --> <send-request mode="new" response-variable-name="responseExternal"> <set-url>https://obw.stdn.com.pe/api/mf/v3/ami/authorize</set-url> <set-method>POST</set-method> <set-header name="Authorization" exists-action="override"> <value>Bearer @(context.Request.Headers.GetValueOrDefault("Authorization", ""))</value> </set-header> <set-header name="Ocp-Apim-Subscription-Key" exists-action="override"> <value>e75ee8762a842htf96e36ba5f9z8c275</value> </set-header> <set-body> <value /> </set-body> </send-request> <base /> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.