标签: azure-api-management

使用 az apim api 更新 apim 中的 api

在我的 azure devops 管道中,我有一个任务 AzureCLI@2,它将 api 部署到 apim。如何使用 az apim api执行相同的任务来更新 api?我知道有一个操作可以做到这一点,但文档没有显示如何操作,而且我没有找到任何示例。我正在使用管道中生成的开放 api 文件来创建,并且我想用它来更新 api。

azure azure-api-management azure-cli azure-devops apim

5
推荐指数
1
解决办法
5326
查看次数

Azure Function Timer 触发器和 API 管理 - 手动执行返回 404

我有一个功能应用程序:

  • 由定时器触发器触发的一些功能
  • 还有一些由HTTP 触发器触发。

我还为函数应用程序设置了Azure API 管理服务,其中HTTP 触发函数定义了其端点。

我正在尝试按照此处的指南手动触发计时器触发功能之一https://learn.microsoft.com/en-us/azure/azure-functions/functions-manually-run-non-http

然而,尽管看似正确的 URL 和x-functions-key.

功能: 在此输入图像描述

钥匙:

在此输入图像描述

请求:

在此输入图像描述

我还注意到:

  • 如果我不包含x-functions-key标题,那么我会得到401 Unauthorized结果
  • 如果我包含了不正确的密钥,那么我会得到403 Forbidden.

是否与为函数应用程序设置的API管理服务有关?

我该如何进一步解决这个问题?

azure azure-api-management azure-functions

5
推荐指数
1
解决办法
1185
查看次数

如何在 Azure APIM 中正确传递不记名令牌?

我正在尝试将一个不记名令牌从我通过 API 订阅的另一个 API 传递到我的 APIM 中。我的想法是添加入站处理,添加一个添加“授权”和“承载 xxxxxxxxxxxxxxxxxxxxx”的设置标头。所以我想知道这是否足够安全,因为我不希望我的不记名令牌公开,我不确定这是否可以在 APIM 本身之外进行追踪。

是否有更好的解决方案?

我在微软文档中找到了这个https://learn.microsoft.com/en-us/azure/api-management/policies/use-oauth2-for-authorization,但我不确定它是否也有效不记名令牌未链接到 Azure AD。但也许使用“发送请求”会让我走上正轨?

亲切的问候

api oauth azure oauth-2.0 azure-api-management

5
推荐指数
1
解决办法
4394
查看次数

我应该使用 API 密钥的授权标头吗

我们将通过 Azure API 管理公开自定义构建的 API (.NET)。我们希望尽可能遵守众所周知的标准,因此我们不会让 API 消费者感到惊讶。API 通过用户从 APIM 开发者门户生成的 API 密钥来保护。

我的理解是 Authorization 标头应该用于身份验证和授权目的。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization

但奇怪的是,API-Key 并未包含在身份验证方案中。

https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml#authschemes

API 使用者是否应该使用授权标头进行身份验证?

例如Authorization: API-Key xxx-xxx

或者自定义标头。

例如my-key:xxx-xxx

api rest authorization azure-api-management azure-api-apps

5
推荐指数
1
解决办法
1094
查看次数

从 azure apim 导出的 OAS 中的安全和策略

让 \xe2\x80\x99s 说我有不同的后端服务,在 azure api 管理 (apim) 中公开它们的 api。不同的服务依赖于不同的安全方法,例如jwt令牌和订阅密钥。后端开发人员指定这些差异并使用 OpenApi 规范 (OAS) 将其上传到 apim。然后我发现安全定义被忽略,那么开发人员必须在哪里指定此信息?而是在描述中?或者在 apim 中传递安全信息的正确方法是什么。

\n

此外,apim 可以设置有关安全的策略。这些政策也没有在美洲国家组织中公开。然而,除了订阅密钥之外,这只是默认行为,即使在 apim 的 api 设置中禁用了需要订阅的标签,订阅密钥仍然存在于 OAS 中。

\n

那么,当 OAS 中不存在后端服务安全性和 apims 安全性时,如何告知用户相关信息呢?我是否缺少某些配置?

\n

我的 apim 的想法是拥有不同的后端服务供应商,这样他们就可以有不同的安全级别 - 可以在 OAS 中指定 - 但不会在 apim 的导出版本中提供任何内容。

\n

此外,我作为 apim 的所有者将设置一些安全设置 - 这些设置仍然不会出现在 OAS 中。那么消费者应该怎么做才能了解如何使用下载的 OAS\xe2\x80\x99s 中公开的后端端点呢?

\n

azure azure-api-management openapi

5
推荐指数
1
解决办法
674
查看次数

Terraform:在azure中指定后端类型

上下文:在 Azure 中手动部署后端服务时,系统会提示我选择类型:自定义、azure 或服务结构。

在此输入图像描述

如何通过 terraform 声明类型(我想选择 Azure 资源)并说出我想使用哪个应用程序?根据文档,它说使用应用程序的资源 ID(我在部署开始时生成的),我尝试了以下操作:

    resource "azurerm_api_management_backend" "polo-backend" {
  name                = "polo-backend"
  resource_group_name = azurerm_resource_group.polo-rg.name
  api_management_name = azurerm_api_management.polo-api-mgmt.name
  protocol            = "http"
  url                 = "https://myurl"
  resource_id = azurerm_windows_web_app.app-service.id
}
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误:

错误:创建/更新后端:(名称“polo-backend”/服务名称“polo-api-mgmt”/资源组“polo1-default-rg”):apimanagement.BackendClient#CreateOrUpdate:响应请求失败:StatusCode=400 -- 原始错误:autorest/azure:服务返回错误。Status = 400 Code =“ValidationError”Message =“一个或多个字段包含不正确的值:”详细信息= [{“code”:“ValidationError”,“message”:“值应代表绝对http URL”,“target”:“资源 ID"}]

此外..如果应用程序是使用 terraform 生成的,我如何在 URL 部分动态分配 URL?

azure azure-api-management terraform

5
推荐指数
1
解决办法
782
查看次数

Azure API 管理 - API 端点域与实际 API URL

我已经设置了 Azure API 管理服务并在自定义域上进行了配置。在 Azure 门户中 API 管理服务的配置部分下,我设置了以下内容: API 管理服务 - 配置

因为这是一个客户端系统,所以我必须屏蔽细节,但这里是基础知识:

  • API 端点域:api.example.com
  • 开发者门户域:apiportal.example.com
  • 两者都上传了 SSL。

因为我将 Type 设置为 Custom,所以我需要输入 API ENDPOINT 和 DEV PORTAL。

当我进入发布门户并设置 API 时,我得到以下信息: API 发布者门户 - API 设置

我需要能够运行一个开发者门户,但有 2 个不同的 API 服务器(1-沙盒,2-生产),但它们将有不同的子域(api-sandbox.example.com 和 api.example.com)

这可能吗?为什么 API 设置会使用我在 API 管理配置中输入的内容覆盖 Web 服务 URL/URL 后缀?

api azure azure-api-management azure-api-apps

4
推荐指数
1
解决办法
3372
查看次数

Azure - 从API管理向EventHub记录请求详细信息

当我将Log to EventHub操作添加到我的Incoming处理时,Microsoft提供的基本示例很有用,但我希望能够记录请求内容和内容长度.目前,我找不到本示例中使用的上下文或context.Request对象的任何文档或定义.

<log-to-eventhub logger-id ='logger-id'>
  @( string.Join(",", DateTime.UtcNow, context.Deployment.ServiceName, context.RequestId, context.Request.IpAddress, context.Operation.Name))
</log-to-eventhub>
Run Code Online (Sandbox Code Playgroud)

有人可以请指出我的文档,或者至少告诉我如何获取请求体的内容或体长?

azure azure-api-management azure-eventhub

4
推荐指数
1
解决办法
468
查看次数

如何从Azure API Management调用调试500错误?

我将我的API连接到Azure的API Management服务.当我尝试调用我的一个端点时,出现以下错误:

{
  "statusCode": 500,
  "message": "Internal server error",
  "activityId": "79c1bef9-a05d-4734-b729-0657c1749e40"
}
Run Code Online (Sandbox Code Playgroud)

我启用了跟踪,这是跟踪json

{
"traceId": "79c1bef9a05d4734b7290657c1749e40",
"traceEntries": {
    "inbound": [
    {
        "source": "api-inspector",
        "timestamp": "2017-10-24T21:50:09.6322945Z",
        "elapsed": "00:00:00.0002259",
        "data": {
        "request": {
            "method": "GET",
            "url": "https://mysite.azure-api.net/partner/api/partner/ClientsActions",
            "headers": [
            {
                "name": "Ocp-Apim-Subscription-Key",
                "value": "..."
            },
            {
                "name": "Connection",
                "value": "Keep-Alive"
            },
            {
                "name": "Host",
                "value": "mysite.azure-api.net"
            }
            ]
        }
        }
    },
    {
        "source": "api-inspector",
        "timestamp": "2017-10-24T21:50:09.6322945Z",
        "elapsed": "00:00:00.0002352",
        "data": {
        "configuration": {
            "api": {
            "from": "/partner",
            "to": null,
            "version": null,
            "revision": "1" …
Run Code Online (Sandbox Code Playgroud)

azure azure-api-management

4
推荐指数
2
解决办法
7297
查看次数

Azure API响应中没有任何跟踪

标记Ocp-Apim-Trace已设置为true

API响应在“跟踪”选项卡下显示以下信息:

响应中未指定跟踪位置,或者跟踪日志不可用。

但是没有任何痕迹。如何解决这个问题?

azure-api-management

4
推荐指数
2
解决办法
2894
查看次数