问题标签 [apiman]
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.
apiman - 通过 GUI 在 ApiMan 中删除 polictDef
我添加Policy Definition
错误,而是将其添加为 custom Plugin
。
现在,如果我尝试添加插件,它会抱怨name 的插件已经存在。只有更新策略的选项,如果我尝试设置"deleted": true
。它根本没有更新,因为我可以看到配置保持不变。
我怎样才能删除它policy definition
并将其安装为plugin
. 我想我可以更改为 new"id"
并将其添加为plugin
. 可能吗 ?但是有没有办法policy
直接删除呢?
编辑:我可以在 ES 注册表中将"id"
它添加为带有新的插件。primary key
但仍然找不到删除它的方法。policydefs
存储在系统中的什么位置?我们可以使用 ES 查询删除吗?
java - Apiman 不恢复网关
您能否帮助我解决以下问题。我使用 Apiman 1.2.1 版
我通过 kubernetes 公开这个版本,作为我在同一个容器中使用 postgres 的持久卷。一旦我第一次创建它,之后在 apiman 中我添加了 Organization/API/.... 和所有必要的人员。
我按下按钮发布 api,并可能检查它是否完美运行,因此我使用kubectl port-forward pod-name 8080:8080
并可能通过浏览器检查我的网关http:localhost:8080/apiman-gateway/ORgId/bla/bla/bla/bla?givemedescriptionbyid=1
。
在这之后我去控制台并杀死 apiman pod,作为 pod 重启的结果,同样的操作kubectl port-forward new-pod-name 8080:8080
,我可以看到 apiman 的所有数据,如组织、apis 和所有其他人员都已经存在。
但是,如果您再次尝试调用网关,则会出现一个大问题,它会告诉您:
{"responseCode":500,"message":"API not found.","trace":"io.apiman.gateway.engine.beans.exceptions.InvalidApiException: API not found.\n\tat io.apiman.gateway .engine.impl.ApiRequestExecutorImpl$3.handle(ApiRequestExecutorImpl.java:278)\n\tat io.apiman.gateway.engine.impl.ApiRequestExecutorImpl$3.handle(ApiRequestExecutorImpl.java:271)\n\tat io.apiman.gateway .engine.impl.SecureRegistryWrapper$1.handle(SecureRegistryWrapper.java:122)\n\tat io.apiman.gateway.engine.impl.SecureRegistryWrapper$1.handle(SecureRegistryWrapper.java:111)\n\tat io.apiman.gateway .engine.es.CachingESRegistry.getApi(CachingESRegistry.java:116)\n\tat io.apiman.gateway.engine.impl.SecureRegistryWrapper.getApi(SecureRegistryWrapper.java:111)\n\tat io.apiman.gateway.engine .impl.ApiRequestExecutorImpl。执行(ApiRequestExecutorImpl.java:270)\n\tat io.apiman.gateway.platforms.servlet.GatewayServlet.doAction(GatewayServlet.java:232)\n\tat io.apiman.gateway.platforms.servlet.GatewayServlet.doGet( GatewayServlet.java:77)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:687)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow。 servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)\n\tat io.undertow.server。handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)\n\tat io.undertow.servlet.handlers.security。 ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler. java:46)\n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) \n\tat io.undertow.servlet。handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)\n\tat io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)\n\tat io.undertow.security.handlers.SecurityInitialHandler。 handleRequest(SecurityInitialHandler.java:76)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest( JACCContextIdHandler.java:61)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) \n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)\n\tat io.undertow。servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)\n\tat io.undertow.servlet.handlers.ServletInitialHandler $1.handleRequest(ServletInitialHandler.java:172)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774 )\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat java.lang .Thread.run(Thread.java:745)\n"}访问$000(ServletInitialHandler.java:80)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java: 199)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util .concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(Thread.java:745)\n"}访问$000(ServletInitialHandler.java:80)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java: 199)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util .concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(Thread.java:745)\n"}ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(Thread.java:745) \n"}ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)\n\tat java.lang.Thread.run(Thread.java:745) \n"}
我可以看到,通过 api manager 中的调用指标,我所有的调用都可以到达 apiman-gateway,但我得到了 500 个响应代码。
api - 如何通过 APIMAN Policy 更改 Host 标头请求
我有一个关于如何-H "Host: my.host.com"
从网关配置到我的 api 的问题。所以,我有以下逻辑:
我尝试覆盖,例如
my-api.net
通过 apiman-gateway。例如,我可以对我的 api 进行以下直接调用,例如
'curl -X GET --header 'Accept: */*' -H "Host: www.google.com" 'http://my-api.net/accounts?accountNumber=12314123'
.基于这个调用,我的 api 会知道,例如,我的消费者是谷歌。但是一旦我尝试通过 apiman-gateway 进行调用
'curl -X GET --header 'Accept: */*' -H "Host: www.google.com" 'http://apiman-gateway/GoogleOrganization/API/V1/accounts?accountNumber=12314123'
,主机就无法通过,并且我的 api 的实现告诉我它不知道任何主机名,例如已经部署my-api.net
。可能有人可以告诉我如何通过策略进行设置,可能只是为了使用上面的主机参数从 apiman-gateway 调用我的 api?提前感谢你的帮助
mysql - APIMan 与 Tomcat 和 MySQL
我是 APIMan 的新手。我已经用 Apache Tomcat 实例配置了 apiman-tomcat-final-distro。现在因为它使用默认作为 APIMan 的 H2 数据库,我想用它来配置 MySQL 数据库。
RedHat APIMan 页面上提供了一些文档,但它们不清楚且没有正确说明。
任何循序渐进的方法,即 Blogger 或 Tutorial 都会有很大帮助。
谢谢。
apiman - 如何在 apiman 中本地测试 API?
期望的行为
我想在本地测试一个 apiman API 以查看apiman-quickstarts/echo-service的响应(或者如果这在最新版本的 apiman 中不再适用,那么任何 echo 响应都会很棒)。
我试过的
我使用来自官方 apiman 站点apiman
的以下内容进行安装: Ubuntu 17.10
使用 apiman GUI ( localhost:8080/apimanui/api-manager
),我创建了一个Organisation
、一个Public API
没有API Security
、一个Endpoint
任意定义为http://localhost:8080/apiman-echo
和一个Client App
。由于 API 被定义为Public
,我的理解是不需要Contract
在Client App
. 该Managed Endpoint
API 在 GUI 中提供为:
实际行为
这些是卷曲结果:
速成课程文档 ( apiman.io/latest/crash-course.html ) 指出以下是 apiman 文件夹的内容,但是在我的电脑上quickstarts
的wildfly-10.1.0.Final
文件夹中搜索不会返回任何结果:
我觉得我在某处遗漏了几个与“安装”echo-service
并使其可用于测试的步骤。
echo
在apiman.gitbooks.io/apiman-user-guide和apiman.gitbooks.io/apiman-production-guide中搜索不会产生任何结果,而apiman.io/latest/developer-guide.html状态:
模拟后端 API 是一个简单的“回声”API,它使用 JSON 有效负载响应所有请求,描述它收到的请求
但我不确定如何解释和利用这些信息。
wso2 - WSO2 API Manager 2.1.0 源代码
我正在尝试为 API Manager 2.1.0 找到正确版本的源代码。
APIM 2.1.0 包中的 apimgt 包版本为 6.1.66,但在 Git 存储库中找不到。请提供正确版本的链接。
apiman - Apiman X-Fowarded-For 上的简单标头策略
我想知道是否有某种方法可以在 API Man 的请求标头上添加客户端远程 IP。
我需要添加一个简单的标头策略,其中包含一个包含客户端远程 ip 的“X-Forwarded-For”。
我的后端正在获取 APIMan IP 作为远程客户端,但我需要获取客户端 IP。
mysql - 调用 APIMAN 的 API 时出错
所以,我刚开始使用 APIMAN 并做了一些配置。我用 BASIC Authentication 创建了一个 API 服务。我使用 JDBC url 作为 jdbc:mysql://localhost:3036/Demo。
然后我创建了一个应用程序服务来使用该 API。但是当我使用 API 端点时,它会给我带来一些错误。
错误:-
{"responseCode":500,"message":"无法获取 jdbcUrl=jdbc:mysql://localhost:3306/?user=root","trace":"java.lang.RuntimeException: 无法获取的驱动程序实例jdbcUrl=jdbc:mysql://localhost:3306/?user=root\n\tat com.zaxxer.hikari.util.DriverDataSource.(DriverDataSource.java:88)\n\tat com.zaxxer.hikari 的驱动程序实例。 pool.PoolElf.initializeDataSource(PoolElf.java:143)\n\tat com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:112)\n\tat com.zaxxer.hikari.HikariDataSource.(HikariDataSource.java: 73)\n\tat io.apiman.gateway.engine.impl.DefaultJdbcComponent.datasourceFromConfig(DefaultJdbcComponent.java:101)\n\tat io.apiman.gateway.engine.impl.DefaultJdbcComponent.createShared(DefaultJdbcComponent.java:58) \n\tat io.apiman.gateway.engine.impl.DefaultJdbcComponent.createStandalone(DefaultJdbcComponent.java:70)\n\tat io.apiman.gateway.engine.policies.auth.JDBCIdentityValidator.createClient(JDBCIdentityValidator.java:126)\n\tat io.apiman.gateway.engine.policies.auth.JDBCIdentityValidator.validate( JDBCIdentityValidator.java:90)\n\tat io.apiman.gateway.engine.policies.BasicAuthenticationPolicy.validateCredentials(BasicAuthenticationPolicy.java:169)\n\tat io.apiman.gateway.engine.policies.BasicAuthenticationPolicy.doApply(BasicAuthenticationPolicy. java:126)\n\tat io.apiman.gateway.engine.policies.BasicAuthenticationPolicy.doApply(BasicAuthenticationPolicy.java:45)\n\tat io.apiman.gateway.engine.policies.AbstractMappedPolicy.apply(AbstractMappedPolicy.java: 70)\n\tat io.apiman.gateway.engine.policy.RequestChain.applyPolicy(RequestChain.java:68)\n\tat io.apiman.gateway.engine.policy.Chain.doApply(Chain.java:148) \n\tat io.apiman.gateway.engine.policies。RateLimitingPolicy$1.handle(RateLimitingPolicy.java:104)\n\tat io.apiman.gateway.engine.policies.RateLimitingPolicy$1.handle(RateLimitingPolicy.java:91)\n\tat io.apiman.gateway.engine.es。 ESRateLimiterComponent.updateBucketAndReturn(ESRateLimiterComponent.java:117)\n\tat io.apiman.gateway.engine.es.ESRateLimiterComponent.accept(ESRateLimiterComponent.java:83)\n\tat io.apiman.gateway.engine.policies.RateLimitingPolicy。 doApply(RateLimitingPolicy.java:91)\n\tat io.apiman.gateway.engine.policies.RateLimitingPolicy.doApply(RateLimitingPolicy.java:45)\n\tat io.apiman.gateway.engine.policies.AbstractMappedPolicy.apply( AbstractMappedPolicy.java:70)\n\tat io.apiman.gateway.engine.policy.RequestChain.applyPolicy(RequestChain.java:68)\n\tat io.apiman.gateway.engine.policy.Chain.doApply(Chain. java:148)\n\tat io.apiman.gateway.engine.impl.ApiRequestExecutorImpl。lambda$execute$4(ApiRequestExecutorImpl.java:276)\n\tat io.apiman.gateway.engine.impl.ApiRequestExecutorImpl.lambda$loadPolicies$7(ApiRequestExecutorImpl.java:666)\n\tat io.apiman.gateway.engine。 policy.PolicyFactoryImpl.loadPolicy(PolicyFactoryImpl.java:95)\n\tat io.apiman.gateway.engine.impl.ApiRequestExecutorImpl.loadPolicies(ApiRequestExecutorImpl.java:634)\n\tat io.apiman.gateway.engine.impl。 ApiRequestExecutorImpl.lambda$execute$6(ApiRequestExecutorImpl.java:397)\n\tat io.apiman.gateway.engine.impl.SecureRegistryWrapper$2.handle(SecureRegistryWrapper.java:189)\n\tat io.apiman.gateway.engine。 impl.SecureRegistryWrapper$2.handle(SecureRegistryWrapper.java:171)\n\tat io.apiman.gateway.engine.es.CachingESRegistry.getContract(CachingESRegistry.java:103)\n\tat io.apiman.gateway.engine.impl .SecureRegistryWrapper.getContract(SecureRegistryWrapper.java:171)\n\tat io.apiman.gateway.engine.impl.ApiRequestExecutorImpl.execute(ApiRequestExecutorImpl.java:363)\n\tat io.apiman.gateway.platforms.servlet.GatewayServlet.doAction(GatewayServlet.java:178) \n\tat io.apiman.gateway.platforms.servlet.GatewayServlet.service(GatewayServlet.java:79)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat io. undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)\n\tat io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)\n\tat io.undertow.servlet。 handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)\n\tat org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)\n\tat io.undertow.server.handlers.PredicateHandler。handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)\n\tat io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest( ServletAuthenticationCallHandler.java:57)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) \n\tat io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)\n\tat io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)\n\tat io.undertow.servlet.handlers.security。CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)\n\tat io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)\n\tat io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler. java:43)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java: 61)\n\tat io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)\n\tat org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)\n \tat io.undertow.server.handlers.PredicateHandler。handleRequest(PredicateHandler.java:43)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java :81)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)\n\tat io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)\ n\tat io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)\n\tat io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)\n\tat org .wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)\n\tat org.wildfly.extension.undertow.deployment。UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)\n\tat org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)\n\tat org. wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1508)\n\tat org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java: 1508)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)\n\tat io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)\n\ tat io.undertow.servlet.handlers.ServletInitialHandler$1。handleRequest(ServletInitialHandler.java:104)\n\tat io.undertow.server.Connectors.executeRootHandler(Connectors.java:326)\n\tat io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:812)\ n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread .run(Thread.java:748)\n原因:java.sql.SQLException: 没有合适的驱动程序\n\tat java.sql.DriverManager.getDriver(DriverManager.java:315)\n\tat com.zaxxer.hikari。 util.DriverDataSource.(DriverDataSource.java:81)\n\t... 74 更多\n"}ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748) \n原因:java.sql.SQLException: 没有合适的驱动程序\n\tat java.sql.DriverManager.getDriver(DriverManager.java:315)\n\tat com.zaxxer.hikari.util.DriverDataSource.(DriverDataSource.java: 81)\n\t... 74 更多\n"}ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat java.lang.Thread.run(Thread.java:748) \n原因:java.sql.SQLException: 没有合适的驱动程序\n\tat java.sql.DriverManager.getDriver(DriverManager.java:315)\n\tat com.zaxxer.hikari.util.DriverDataSource.(DriverDataSource.java: 81)\n\t... 74 更多\n"}
preflight - 授权策略正在破坏 APIMAN 中的预检检查
我的 API 有 2 个策略(cors +1),第一个是 keycloakOauthPolicy,第二个是 AuthorizationPolicy。
当我发出一些预检请求(然后使用动词 OPTIONS 并且标头中没有任何标记)时,我从 AuthorizationPolicy 收到该错误:
身份验证期间未提取任何角色。确保 >authorization 策略出现在>your configuration 中的兼容身份验证策略之后
我究竟做错了什么?