Azure API Management是一种云托管服务,可以在任何平台上为现有HTTP API添加许多功能。这包括与安全性,API密钥管理,缓存,文档和许多其他交叉策略相关的功能。有关详细信息,请参阅:http://azure.microsoft.com/apim
从我的 Asp.Net Core Blazor 网站以编程方式添加 Azure APIM 用户和订阅
我想从我的网站而不是 Azure 门户添加 Azure APIM 用户和订阅。 并想在我的网站中显示订阅密钥... 有没有任何图书馆或可用的东西??? ...
Azure API 管理:如何将原始响应正文存储为变量并输出选定字段?
我在 Azure API 管理中创建了一个简单的 API,目的是在 Azure DevOps Boards 中创建工作项。我在 Azure Board 端点的 API 策略中创建了一个 标签...
验证内容返回 json 内容类型 Azure Api 管理策略的错误
我正在使用以下代码 我正在使用以下代码 <validate-content unspecified-content-type-action="prevent" max-size="102400" size-exceeded-action="prevent" errors-variable-name="requestBodyValidation"> <content type="application/json" validate-as="json" action="ignore" /> </validate-content> 在 api 管理策略中,但是当我发送内容类型为 application/json 的请求时,我收到错误 Unspecified content type application/json is not allowed 不确定问题所在,或者我对政策的理解有误。 有什么建议或解决方案吗? 我遇到了同样的问题,并且能够找到一种方法来重现和解决。 如果您的操作未定义任何表示并使用验证内容策略,您将收到此错误。 最简单的修复:单击“操作”,在“前端”下选择基于表单的编辑器(铅笔图标)。单击“请求”选项卡。在“表示”下,单击“添加表示”。搜索“json”并选择“application/json”。保存前端更改。 现在操作和验证内容应该可以正常运行。 我希望对某人有帮助。 validate-content策略用于根据 API 架构验证请求或响应正文的大小或 JSON 架构。除 JSON 外,不支持其他格式。 以下示例显示了如何验证请求和响应中的 JSON 负载。有效负载大于 100 KB 的消息将被阻止。 <validate-content unspecified-content-type-action="prevent" max-size="102400" size-exceeded-action="prevent" errors-variable-name="requestBodyValidation"> <content type="application/json" validate-as="json" action="detect" /> <content type="application/hal+json" validate-as="json" action="detect" /> </validate-content> 我建议阅读 Microsoft 的此用于验证请求和响应的 API 管理策略文档,以获取有关 validate-content 策略的详细信息。 这应该可以解决您面临的问题。但如果您仍然遇到相同的错误,请向Azure 支持提出请求。 这有点乱,但我iravenscroft的answer帮助我解决了这个问题。我只是想提供一些额外的背景信息。 我添加了我的内容类型,如链接答案中所述: 然后在您想要的位置添加您的 validate-content 政策: <validate-content unspecified-content-type-action="prevent" max-size="102400" size-exceeded-action="prevent" errors-variable-name="validationError"> <content type="application/vnd.my-content-type+json" validate-as="json" action="prevent" schema-id="my-schema-id" /> </validate-content> 在我的例子中,my-schema-id是在实例级别上传的模式: 这样,验证就可以按预期进行。
我们可以在 Azure API 管理中为传出请求配置 mTLS 吗?
我们正在将我们的应用程序与第三方集成,协议是使用 mTLS。根据我的理解,我们可以配置我们的 APIM 来加载第三方的证书,这样当它们
我在.NET中有以下控制器: [API控制器] [路线(“api”)] 公共类 TestController :ControllerBase { 公共测试控制器(){} [HttpGet("测试")]
在 Azure API 管理中,如何在将正文传递到后端 URL 之前使用表单数据正文向传入请求添加变量?
在 Azure API 管理中,我有一个传入请求,该请求传递 multipart/form-data 正文,我想在将 multipart/form-data 正文发送到后端 UR 之前向其添加更多变量...
我正在尝试向 https://acr-name.azurecr.io/v2/image-name/tags/list 发送 GET 请求,但我不确定要使用哪个令牌,因为我不断收到: { “错误”:[ { ”
使用 OAuth 2.0 配置 Azure APIM 应用程序,这将使用 JWT 令牌保护 API
我有 Azure APIM 应用程序,其中配置了“OAuth 2.0 + OpenID Connect”>“OAuth 2.0”>“添加”> 我已添加所有必需的详细信息。 此处添加的授权和令牌端点取自...
使用 Visual Studio 17.8.3,我尝试将 .Net8 隔离的 C# Azure Function 项目发布到 Azure,包括使用 Github CI/CD 工作流程将其加载到 API 管理服务。这是其中之一...
使用其用户分配的身份从 APIM 调用在 Azure 容器应用程序上运行的 api 的 Api 策略
Api 正在 Azure 容器应用程序上运行,用户分配的身份为 uai_1。 Apim 正在使用用户分配的身份 uai_2 运行。我已经设置了 api 策略(请参阅下面的代码),以便 apim 可以调用 ap...
我正在尝试从 Azure 中的日志分析工作区获取日志。在尝试使用 Python 访问工作区时,我收到如下 PathNotFoundError 错误。 监视器资源 ID = "/
管理 API 升级后,API 管理连接器在逻辑应用中无法使用
Advisor 的消息告诉我,Azure API Management 的管理 API 将升级到较新的版本,并且包含“快速修复”按钮以帮助调整一些参数。正如我...
graph.microsoft.com 的 API 管理 validate-jwt
我正在尝试做一些感觉应该“开箱即用”的事情。我的 SharePoint 网站上的用户已经通过 SSO 进行了身份验证,并且我正在启动对 g...
在我的 Azure API 管理策略中,我正在检查一些标头,并根据发现的内容执行某些操作。 当没有任何条件匹配时(即在其他...
我已向 APIM 添加了“validate-jwt”策略,以验证颁发者签名密钥以及所提供 JWT 的过期情况。它成功验证了发行者签名密钥并拒绝任何 JWT ...
Azure API 管理 (APIM) - API x-functions-key 不在收听者中
我有一个 Azure Function App,最近使用“az apim api import”cli 命令导入到 Azure APIM 中。这将是发布管道的一部分。到目前为止,导入的API正在运行
我正在使用 APIM 从外部服务获取数据(当然指向逻辑应用程序 HTTP 请求,使用 POST 方法)。该服务具有动态 URL,这些 URL 不断传递到我的 APIM API ...
使用 apiVersionSetId 创建 API 操作时如何更新父 API 集的 serviceUrl
我在 BICEP 代码中创建了这个 API 集: 资源 NamesApi 'Microsoft.ApiManagement/service/apis@2022-08-01' = { 名称:'${name}-api-交易' 父级:apimService 特性: { 显示...
我的 APIM 中有一项策略,用于在名为“client-id”的标头在一分钟内调用端点两次以上时限制对端点的调用。 节流部分工作正常,但是
<policies> <inbound> <choose> <when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.prod.abc.com"))"> <set-backend-service base-url=https://xyz.alpha.abc.com/lead /> </when> <when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.uat.abc.com"))"> <set-backend-service base-url=https://xyz.uat.alpha.abc.com/lead /> </when> <when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.qa.abc.com"))"> <set-backend-service base-url=https://xyz.qa.alpha.abc.com/lead /> </when> <otherwise> <set-backend-service base-url=https://xyz.dev.alpha.abc.com/lead/> </otherwise> </choose> <base /> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> 上述策略是否是为新加入的 Azure APIM API 设置后端 URL 的正确且最佳的方法? 或者有更好的方法来做同样的事情吗? 本质上,我希望后端uri能够根据APIM的环境动态设置。如果我在命名值中为每个环境都有一个后端 uri ...我可以动态使用它并且可以改进策略以使其更加简洁吗? 本质上,我希望后端uri能够根据APIM的环境动态设置。如果我在命名值中为每个环境都有一个后端 uri ...我可以动态使用它并且可以改进策略以使其更加简洁吗? 是的,您可以使用存储在命名值中的后端 uri,只需进行少量修改即可使用您的策略。 <policies> <inbound> <choose> <when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.prod.abc.com"))"> <set-backend-service base-url="{{BackendUrl-For-Prod}}" /> </when> <when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.uat.abc.com"))"> <set-backend-service base-url="{{BackendUrl-For-URL}}" /> </when> <when condition="@(context.Request.OriginalUrl.Host.Contains("xyz.qa.abc.com"))"> <set-backend-service base-url="{{BackendUrl-For-QA}}" /> </when> <otherwise> <set-backend-service base-url="{{BackendUrl-For-Dev}}" /> </otherwise> </choose> <base /> </inbound> </policies> 感谢@Thomas的评论。通过使用此策略,您可以引用命名值中的后端 URL,但订阅密钥和产品对于所有环境都将相同。 如果您希望所有环境都使用相同的密钥,那么您可以使用上述策略,或者您可以根据您的环境创建单独的 API。