问题标签 [apim]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure - Generics in APIM policy breaks Terraform
The following APIM policy cannot be deployed via Terraform:
With the following error: The 'JObject' start tag on line 15 position 26 does not match the end tag of 'value'. Line 18, position 4.
This is due to the content.As<JObject>
.
The policy is defined as in the Terraform documentation.
Same error when using xml_content = "${file("xxx")}"
.
How to proceed, besides finding a workaround to not use content.As<JObject>
?
wso2 - JWT Enrichment with external rest service
我正在使用 WSO2,我需要为每个请求丰富 JWT 令牌。浓缩需要通过外部休息服务来完成。
我们正在使用 WSO2 2.2 我试图通过扩展类“org.wso2.carbon.apimgt.keymgt.token.JWTGenerator”并使用 java HTTPClient 库与其余服务一起工作来丰富 JWT。但是在 apim 产品中使用 HTTPClient 代码似乎并不自然。
这是我可以使用的代码,但似乎 wso2 应该能够为我提供一种更好的方式来作为客户端连接到 api。
azure - 如何创建 Powershell 脚本来创建 Azure API 管理资源
我试图弄清楚如何从脚本创建 API 管理资源和 API 管理 API。我相信有两种选择:
.
使用 AzureRm.ApiManagement 中的 powershell Management api
为此,我相信要使用的两个命令是:
新AzureRmapiManagement
新AzureRmapiManagementApi
.
使用管理 REST API
为此,我相信创建您需要使用第一个选项的资源,然后可以将以下方法与 Invoke-RestMethod powershell 命令一起使用:
PUT https://management.azure.com/subscriptions/ {subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}?api-version=2019-01-01
.
我只想传递新的管理 api 资源的名称和 devlab 的名称以在其下创建它并创建它,然后在其下创建一个与产品无关(或与无限制的默认产品关联)的 api。 ..哪个更容易)。
任何人都可以帮助使用 powershell 脚本来执行此操作吗?
谢谢。
azure - Azure Api 规则不适用于使用具有身份验证基本和身份验证证书的默认助手
我正在添加一个入站处理策略规则以应用所有 Azure API 服务方法。使用策略向导,我找到了我在下一行中编写的基本身份验证。
那么,为什么当我使用基本身份验证从 Postman 调用时它不适用。总是响应是 200-OK,如果我更改用户和密码,它就不会了。总是响应没问题。我检查来自客户端的标头请求,它添加了正确的身份验证用户:密码
azure - azure apim 中的 JWT 验证失败错误
我目前正在尝试使用以下文档实施 Oauth2.0 来保护 API
https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad
目前使用 azure apim 提供的 DEMO CONFERENCE API 来测试实现。
目前在开发人员门户中的测试期间收到错误:
“消息”:“JWT 验证失败:声明值不匹配:aud=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx..”
通过解码和匹配将传递的令牌与声明值进行比较。
我有如下的 jwt 令牌验证策略
wso2 - 如何在具有 apache 前端的分布式设置中正确设置 APIM 存储?
WSO2 APIM 2.6.0 的场景:
1 个用于 API Publisher 的 VM -> 前端:https://mgt.mydomain(网关工作人员的经理)
1 个用于 API 存储的 VM -> 前端:https://store.mydomain
1 台 VM 用于流量管理器 -> 前端:https://trafficmanager.mydomain
2 台 VM 用于网关集群 -> LB:https://api.mydomain (网关工作人员)
2 台 VM 用于 IS 作为 KM 集群 -> LB:https ://security.mydomain
商店中的 carbon.xml:
商店中的 apimanager.xml:
发布我的测试 API 后,当我尝试测试它时,商店使用它作为请求 URI:
请求 URL:https://store.mydimain/testAPI/v1.0.0/info
来自 API 商店的示例请求:
curl -k -X GET " https://store.mydomain/testAPI/v1.0.0/info " -H "接受:应用程序/json" -H "授权:承载 1fcf7e3f-8292-3110-8cff-27226caa59a8"
直接向网关 LB 发出的请求是可以的。
示例请求:
curl -k -X GET " https://api.mydomain/testAPI/v1.0.0/info " -H "accept: application/json" -H "Authorization: Bearer 1fcf7e3f-8292-3110-8cff-27226caa59a8 "
响应:{"version":"1.0.0","nome":"test-api"}
附加信息:在网关工作人员之间
安装了一个 NFS 在 IS-KM 之间安装了一个 NFS
发布者应该是网关管理器
附加信息
可以观察到,在发布 API 后,APIM 发布者和 APIM 商店中的概述不会'不显示端点:
但是我在 Publisher Server 中的 apimanager.xml 看起来正确配置如下:
PUBLISHER 中的 apimanager.xml:
新更新
对于 VirtualServer api.mydomain:443 insideapache 我的配置是:
azure-api-management - 从响应对象中提取非字符串值
在APIM
我想OAuth
在调用后端之前获取一个令牌并将其存储在APIM
缓存中。
我设法得到OAuth
令牌。
我希望将我的令牌存储在缓存中,为此我需要一段时间。从响应正文中提取持续时间是我的问题。
首先,我提取令牌和持续时间以将它们保存在变量中。然后变量用于在缓存中存储一个值。
提取“expires_in”的整数值时失败。
响应对象:
提取数据并放入变量:
存储在缓存中:
提取“expires_in”会导致对象引用未设置为对象的实例。
azure - 未检索 APIM 服务的指标
我正在使用 Rest API 来检索 APIM 服务的指标。
我能够检索前两天的指标,但突然我无法检索它们。检索指标是否有任何限制?
azure - 在 AAD 凭据下记录 API 调用
我有一堆 API 在 APIM 后面运行在 Azure 中,这些 API 需要我的 AAD 进行 OIDC 身份验证,一切都按预期工作,但我想知道监视/记录哪些用户调用哪个 API 的最佳方法是什么。这些信息在 APIM 的 OIDC 服务生成的 JWT 中可用,所以我希望它是可能的。
默认的 APIM 服务分析记录一些基本信息,例如,没有做任何特殊的事情,每次调用都记录在用户“匿名”下,并带有一个随机生成的(持久的?)用户 ID。
我可以创建一堆 APIM 用户并将相应的订阅密钥分发给我的 AAD 用户,并在发出请求时将密钥添加到他们的标题中。有了这个,电话就会记录在他们的名字下,这正是我想要的。问题在于它似乎不是特别安全。是什么阻止了订阅密钥的共享和/或 AAD 用户凭据与 APIM 订阅密钥之间的不匹配?
这样做的正确方法是什么?可以从 APIM/AAD 中完成,还是我需要使用事件中心之类的东西?
编辑:
我找到了一个可行的解决方案。通过启用 Application Insights,以下入站 API 策略将 JWT 令牌的名称字段存储为跟踪。
如果 JWT 不包含字段名称并拒绝 API 调用(可能是错误请求),也许我还应该添加一个策略。
无论如何,这听起来像是一种方法,但不是正确的解决方案,看起来不像是一个独特的问题。