我已经有一个ESB(非 WSO2 产品)的工作系统。我现在正在尝试WSO2 API Manager为 3rd 方开发人员集成到我的工作系统中。是否有可能取代WSO2 ESB在API Manage与现有的non-WSO2 ESB?
我正在评估 WSO2 Identity Server 和 WSO2 API Manager。
我在 API Manager 上注册了一个 API 和一个应用程序。我可以成功调用资源。
我还可以将用户添加到 Identity Server 中并使用 oAuth 身份验证登录该用户。
但是,目前还不清楚如何一起使用这两个系统。我想使用 API Manager 将我的 API 公开给某些应用程序。而且,我想使用身份服务器来记录最终用户。那可能吗?我如何“插入”这两个系统?
我不确定这是否是最好的方法,所以请给我建议。
谢谢
我正在尝试更新通过 API Manager 生成的令牌。
生成令牌的 curl 语句是:
curl -k -d "grant_type=client_credentials" -H "Authorization: Basic TDQ0SktDZm5DcVVDSVBjdGYwVDIyRWwwUGY4YT
o2d19NQm9xYnBFXzRLNHR0Wkc0NXhxd0NMTDRh , Content-Type: application/x-www-form-urlencoded" https://10.108.106.214:8250/token
Run Code Online (Sandbox Code Playgroud)
回应是
"scope":"am_application_scope default","token_type":"bearer","expires_in":1094,"access_token":"6d1d0f8afbd147d24bcd42bbc5361a1"
Run Code Online (Sandbox Code Playgroud)
根据文档,它应该生成一个未生成的重新令牌。我错过了什么?
同样,当我将 grant_type 作为 refresh_token 传递时。我收到无效授权错误。
curl -X POST -H "Authorization: Basic TDQ0SktDZm5DcVVDSVBjdGYwVDIyRWwwUGY4YTo2d19NQm9xYnBFXzRLNHR0Wkc0NXhxd0NMTDRh" -H "Content-Type: application/x-www-form-urlencoded" -d 'grant_type=refresh_token&refresh_token=6d1d0f8afbd147d24bcd42bbc5361a1' 'https://10.108.106.214:8250/token'
Run Code Online (Sandbox Code Playgroud)
我指的是 URL https://docs.wso2.com/display/AM191/Token+API#TokenAPI-RenewingaccesstokensRenewing 中的文档
那么我错过了什么?
我的目标是在 WSO2 发布者中自动为新的 Web 服务创建 API,这些 Web 服务目前使用 swagger 2 进行了记录。为了尽可能高效地做到这一点,我想使用一个指向 的 URL swagger.json,就像使用UI 下:WSO2 发布者,添加现有 API;最好以这样的方式使用 swagger 填充名称和其他必填字段(如果它们存在于 swagger json 中)。
解决方案的可能途径:
在“我尝试过的内容”部分下,我们看到第 1 步的响应消息是“已导入”,因此如果我们能弄清楚如何在第 2 步中调用导入的模板应该可以解决问题。
我尝试过的:
“找到的资源”部分中的所有链接详细说明了如何使用显式 swagger json 来帮助创建 api - 并且仍然需要名称、上下文等必填字段(即使在 json 中找到)。我无法获得像上面那样的命令来处理 url,我已经尝试过使用该字段swagger_url="urlToSwaggerJson"(请参阅下一节末尾)。
我猜答案在于实际使用 UI 命令,类似于以下描述的内容:http: //yasassriratnayake.blogspot.nl/2015/06/creating-api-with-curl-commands-with.html
在“使用正常创建流程创建 API”下。使用 UI 时,第一步是从 中创建模板描述swagger url,因此我尝试通过添加下面的步骤 1 来调整过程。问题:设计步骤没有找到步骤1中启动的api。
0)登录:
curl -k -X POST -c cookies URLtoWSO2/publisher/site/blocks/user/login/ajax/login.jag -d 'action=login&username=admin&password=admin'
Response: {"error" : false}
Run Code Online (Sandbox Code Playgroud)
1)开始过程:
curl -k -X POST -b cookies URLtoWSO2/publisher/site/blocks/item-design/ajax/add.jag -F import-definition="swagger-url" …Run Code Online (Sandbox Code Playgroud) 我有一个 https 端点,我需要从 wso2 API 管理器访问它。(使用 1.10)。我已经将证书文件添加到“client-truststore.jks”文件中。但现在它给出了如下错误。
hostname in certificate didn't match:<ip>!=<entry name>.
Run Code Online (Sandbox Code Playgroud)
我也已经更新了axis2.xml 文件,如下所示。
<parameter name="HostnameVerifier">AllowAll</parameter>
Run Code Online (Sandbox Code Playgroud)
如何使用 WSO2 APIManager 解决此问题以访问此 https 后端服务
我有一个 WSO2 API Manager 2.5.0 安装,作为主动-主动部署在两个节点中。它还具有 WSO2 分析和 WSO2 身份服务器作为密钥管理器。
每个节点启动时,都会在日志中留下三倍相同的错误:
2018-11-14 07:56:50,989 [-] [DisruptorInboundEventThread-8] ERROR AndesSubscriptionManager Could not add subscription: subscriptionId=3091b9ba-867b-4539-bf25-fee511d1813d,storageQueue=AMQP_Topic_throttledata_NODE:OpenDataApiM1/10.0.0.101,protocolType=AMQP,isActive=true,subscriberConnection=Y29ubmVjdGVkSVA9LzEwLjAuMC40OjMzMTgyLzEsY29ubmVjdGVkTm9kZT1OT0RFOk9wZW5EYXRhQXBpTTEvMTAuMC4wLjQscHJvdG9jb2xDaGFubmVsSUQ9Y2Y3NDI4MDgtZGY3MS00NzJhLWFiMTEtOTY1Nzc2ZTBkNTZl
org.wso2.andes.kernel.subscription.SubscriptionException: StorageQueue: AMQP_Topic_throttledata_NODE:OpenDataApiM1/10.0.0.101 is not registered while creating subscription id=3091b9ba-867b-4539-bf25-fee511d1813d
at org.wso2.andes.kernel.subscription.AndesSubscription.<init>(AndesSubscription.java:136)
at org.wso2.andes.kernel.subscription.AndesSubscriptionManager.reloadSubscriptionsFromStorage(AndesSubscriptionManager.java:921)
at org.wso2.andes.kernel.disruptor.inbound.InboundDBSyncRequestEvent.reloadSubscriptions(InboundDBSyncRequestEvent.java:208)
at org.wso2.andes.kernel.disruptor.inbound.InboundDBSyncRequestEvent.updateState(InboundDBSyncRequestEvent.java:76)
at org.wso2.andes.kernel.disruptor.inbound.InboundEventContainer.updateState(InboundEventContainer.java:268)
at org.wso2.andes.kernel.disruptor.inbound.StateEventHandler.onEvent(StateEventHandler.java:70)
at org.wso2.andes.kernel.disruptor.inbound.StateEventHandler.onEvent(StateEventHandler.java:40)
at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:128)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
2018-11-14 07:56:50,991 [-] [DisruptorInboundEventThread-8] ERROR AndesSubscriptionManager Could not add subscription: subscriptionId=c9a279eb-6c1f-447c-84bc-c077d33a06e1,storageQueue=AMQP_Topic_throttledata_NODE:OpenDataApiM1/10.0.0.101,protocolType=AMQP,isActive=true,subscriberConnection=Y29ubmVjdGVkSVA9LzEwLjAuMC40OjM0NTA0LzEsY29ubmVjdGVkTm9kZT1OT0RFOk9wZW5EYXRhQXBpTTEvMTAuMC4wLjQscHJvdG9jb2xDaGFubmVsSUQ9NGI5YmVmZmUtNjk1OC00M2Q4LTg3NGYtMzA5YmE5M2IyNzMw
org.wso2.andes.kernel.subscription.SubscriptionException: StorageQueue: AMQP_Topic_throttledata_NODE:OpenDataApiM1/10.0.0.101 is not registered while creating subscription id=c9a279eb-6c1f-447c-84bc-c077d33a06e1
at org.wso2.andes.kernel.subscription.AndesSubscription.<init>(AndesSubscription.java:136)
at org.wso2.andes.kernel.subscription.AndesSubscriptionManager.reloadSubscriptionsFromStorage(AndesSubscriptionManager.java:921)
at …Run Code Online (Sandbox Code Playgroud) 是否可以使用 WSO2 API 管理器版本 3 删除我的 api 列表中某些特定请求的安全性。
例如,我有以下请求
/customer - post
/products - get
/customer/address - get
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我不需要安全性/products - get。
我尝试了@Pubci 获取请求响应的建议
Invalid Credentials. Make sure your API invocation call has a header: 'Authorization : Bearer ACCESS_TOKEN' or 'Authorization : Basic ACCESS_TOKEN' or 'apikey: API_KEY
Run Code Online (Sandbox Code Playgroud) 我正在开发一些通过 WSO2 APIM 公开 REST 的 SpringBoot 微服务。
微服务本身不实现任何类型的身份验证或授权机制,它委托给APIM。
如果我将 API 设置为使用此处所述的密码授予,前端应用程序可以进行身份验证并生成 JWT 令牌。
现在的问题是我无法从 JWT 负载中获取用户角色,因为 APIM 没有添加它。此信息很重要,因为前端根据用户角色呈现菜单和按钮。
我在生成令牌时传递的用户确实具有一些角色,如下所示:
但生成的 JWT 令牌不包含有关角色的任何信息。这是一个示例令牌:
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5UZG1aak00WkRrM05qWTBZemM1TW1abU9EZ3dNVEUzTVdZd05ERTVNV1JsWkRnNE56YzRaQT09In0.eyJodHRwOlwvXC93c28yLm9yZ1wvY2xhaW1zXC9hcHBsaWNhdGlvbnRpZXIiOiJVbmxpbWl0ZWQiLCJodHRwOlwvXC93c28yLm9yZ1wvY2xhaW1zXC92ZXJzaW9uIjoidjEiLCJodHRwOlwvXC93c28yLm9yZ1wvY2xhaW1zXC9rZXl0eXBlIjoiUFJPRFVDVElPTiIsImlzcyI6IndzbzIub3JnXC9wcm9kdWN0c1wvYW0iLCJodHRwOlwvXC93c28yLm9yZ1wvY2xhaW1zXC9hcHBsaWNhdGlvbm5hbWUiOiJDYWRhc3RybyBkZSBDbGllbnRlcyIsImtleXR5cGUiOiJTQU5EQk9YIiwiaHR0cDpcL1wvd3NvMi5vcmdcL2NsYWltc1wvZW5kdXNlciI6ImVtaWxpb0BjYXJib24uc3VwZXIiLCJodHRwOlwvXC93c28yLm9yZ1wvY2xhaW1zXC9lbmR1c2VyVGVuYW50SWQiOiItMTIzNCIsImh0dHA6XC9cL3dzbzIub3JnXC9jbGFpbXNcL3N1YnNjcmliZXIiOiJhZG1pbiIsImh0dHA6XC9cL3dzbzIub3JnXC9jbGFpbXNcL3RpZXIiOiJVbmxpbWl0ZWQiLCJzY29wZSI6ImRlZmF1bHQiLCJleHAiOiIxNTk5NTYyOTQ4MDI4IiwiaHR0cDpcL1wvd3NvMi5vcmdcL2NsYWltc1wvYXBwbGljYXRpb25pZCI6IjIiLCJodHRwOlwvXC93c28yLm9yZ1wvY2xhaW1zXC91c2VydHlwZSI6IkFwcGxpY2F0aW9uX1VzZXIiLCJjb25zdW1lcktleSI6IktJaTdnUk1RYmg1OWZGbmpVOFhNbnhGcm9pNGEiLCJodHRwOlwvXC93c28yLm9yZ1wvY2xhaW1zXC9hcGljb250ZXh0IjoiXC9ia25nXC92MSJ9.km4w2V7dGmoGl8f4_ZqKHvdofAPLOOw__GPjWKrpjYelbi7IjDIpRODEZNn8hE1krRdDTSjKRviJ-NBvXtTXIiLdfPh1p-zNtX26vrS77ZcSZ2WsQA7Ku21YMqcm6cyZvEhZ99qfTxOtbJfkwt6Yt8itkyr-aqk83pNp85LTnwtNboib9VOOvh37zNEJUImzKw4WvENp4SGLuHO978FriHyHPN9vibzPjpItW5DOXTFNdN4rP6RK_vcOH6hpuZHwivJpTHxf9qMB3Gd2yTig-Hkr-sZGbx89pQf8kqtCLWbhRG5jOtcEJNf2CSNLB0Glg_e4F6LfhVD5JUCz15jdlg
Run Code Online (Sandbox Code Playgroud)
当我在https://jwt.io/中提取它时,我得到以下有效负载:
{
"http://wso2.org/claims/applicationtier": "Unlimited",
"http://wso2.org/claims/version": "v1",
"http://wso2.org/claims/keytype": "PRODUCTION",
"iss": "wso2.org/products/am",
"http://wso2.org/claims/applicationname": "Cadastro de Clientes",
"keytype": "SANDBOX",
"http://wso2.org/claims/enduser": "emilio@carbon.super",
"http://wso2.org/claims/enduserTenantId": "-1234",
"http://wso2.org/claims/subscriber": "admin",
"http://wso2.org/claims/tier": "Unlimited",
"scope": "default",
"exp": "1599562948028",
"http://wso2.org/claims/applicationid": "2",
"http://wso2.org/claims/usertype": "Application_User",
"consumerKey": "KIi7gRMQbh59fFnjU8XMnxFroi4a",
"http://wso2.org/claims/apicontext": "/bkng/v1"
}
Run Code Online (Sandbox Code Playgroud)
如何将用户角色添加到 JWT 负载?我是否需要按照此处所述实现自定义生成器?
提前致谢!
是否有可能在 WSO2 API Manager 中,或者可能在路线图上,发布异步 API(例如在 Kafka 中),并像其他具有规范(异步 API 规范)、安全性、分析等的同步 API 一样管理它?
我不是指 websocket API,我知道 WSO2 AM 已经支持它。它是基于事件的异步 API。
我在 wso2 网站上找不到任何有关它的明确信息。
您好,我已经搜索了文档,但找不到如何通过 terraform 发布开发人员门户。我的 terraform 确实使用 API 管理服务资源来假脱机资源组,但我希望它也发布开发人员门户并启用 CORS。这可以通过 terraform 实现吗?还是必须在 rg 假脱机后手动完成?
更新了 terraform,查看此处的文档:https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management#host_name
开发者门户有一个块,但我不确定这是否真的发布了它,也不确定在主机名中放入什么。请协助。