在我的 azure devops 管道中,我有一个任务 AzureCLI@2,它将 api 部署到 apim。如何使用 az apim api执行相同的任务来更新 api?我知道有一个操作可以做到这一点,但文档没有显示如何操作,而且我没有找到任何示例。我正在使用管道中生成的开放 api 文件来创建,并且我想用它来更新 api。
我有一个功能应用程序:
我还为函数应用程序设置了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管理服务有关?
我该如何进一步解决这个问题?
我正在尝试将一个不记名令牌从我通过 API 订阅的另一个 API 传递到我的 APIM 中。我的想法是添加入站处理,添加一个添加“授权”和“承载 xxxxxxxxxxxxxxxxxxxxx”的设置标头。所以我想知道这是否足够安全,因为我不希望我的不记名令牌公开,我不确定这是否可以在 APIM 本身之外进行追踪。
是否有更好的解决方案?
我在微软文档中找到了这个https://learn.microsoft.com/en-us/azure/api-management/policies/use-oauth2-for-authorization,但我不确定它是否也有效不记名令牌未链接到 Azure AD。但也许使用“发送请求”会让我走上正轨?
亲切的问候
我们将通过 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
让 \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 或服务结构。
如何通过 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 API 管理服务并在自定义域上进行了配置。在 Azure 门户中 API 管理服务的配置部分下,我设置了以下内容:

因为这是一个客户端系统,所以我必须屏蔽细节,但这里是基础知识:
因为我将 Type 设置为 Custom,所以我需要输入 API ENDPOINT 和 DEV PORTAL。
当我进入发布门户并设置 API 时,我得到以下信息:

我需要能够运行一个开发者门户,但有 2 个不同的 API 服务器(1-沙盒,2-生产),但它们将有不同的子域(api-sandbox.example.com 和 api.example.com)
这可能吗?为什么 API 设置会使用我在 API 管理配置中输入的内容覆盖 Web 服务 URL/URL 后缀?
当我将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)
有人可以请指出我的文档,或者至少告诉我如何获取请求体的内容或体长?
我将我的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) 标记Ocp-Apim-Trace已设置为true。
API响应在“跟踪”选项卡下显示以下信息:
响应中未指定跟踪位置,或者跟踪日志不可用。
但是没有任何痕迹。如何解决这个问题?