通过 IAM 代理 WSO2 API Manager 3.0 时出现问题

Problem proxying WSO2 API Manager 3.0 through IAM

1)我们想要的:

我们希望 Carbon (WSO2 API-Manager 3.0) 由 Nginx throughafter 与它的交互代理我们的 IAM 登录流程。

2) 我们做了什么:

我们反向代理到 our_proxy/wso2 的初始页面,客户没有提到 wso2_host 机器。

我们按照“配置代理服务器和负载平衡器”中的说明设置反向代理。

https://apim.docs.wso2.com/en/latest/install-and-setup/setup/setting-up-proxy-server-and-the-load-balancer/configuring-the-proxy-server-and-the-load-balancer/#step-2-configure-the-load-balancerreverse-proxy-server

这些是我们在步骤 3 中使用的设置,“在产品中配置反向代理设置”:

[transport.https.properties]
proxyPort = 443
[server]
hostname = "our-api-store-url"

在文件 <API-M_HOME>/repository/conf/deployment.toml.

3) 我们得到了什么:

在身份验证过程中,客户端被重定向到 wso2_host:port 上的 Carbon,并在收到他们的身份验证令牌后保持在那里,因此没有代理后续工作。

这是一个问题,因为我们无法管理网关的 URL 外观,或者在不公开 wso2_host 和要求应用程序端口开放的情况下公开它。

这是来自日志文件的相应错误消息:

api-manager_1             | JAVA_HOME environment variable is set to /opt/java/o                           penjdk
api-manager_1             | CARBON_HOME environment variable is set to /home/wso                           2carbon/wso2am-3.0.0
api-manager_1             | Using Java memory options: -Xms256m -Xmx1024m
api-manager_1             | [2020-05-07 10:52:41,478]  INFO {org.wso2.config.map                           per.ConfigParser} - Applying Configurations upon new Templates
api-manager_1             | [2020-05-07 10:52:41,483]  WARN {org.wso2.config.map                           per.ConfigParser} - Overriding files in configuration directory /home/wso2carbon                           /wso2am-3.0.0
api-manager_1             | [2020-05-07 10:52:41,730] ERROR {org.wso2.config.map                           per.TomlParser} - server previously defined at line 1, column 1 (line 237, colum                           n 1)
api-manager_1             | [2020-05-07 10:52:41,732]  SEVERE {org.wso2.carbon.s                           erver.Main handleConfiguration} - Error while performing configuration changes
api-manager_1             | org.wso2.config.mapper.ConfigParserException: Error                            parsing deployment configuration
api-manager_1             |     at org.wso2.config.mapper.TomlParser.parse(TomlP                           arser.java:140)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.parse(Con                           figParser.java:249)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.deploy(Co                           nfigParser.java:217)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.deployAnd                           StoreMetadata(ConfigParser.java:180)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.parse(Con                           figParser.java:127)
api-manager_1             |     at org.wso2.carbon.server.Main.handleConfigurati                           on(Main.java:231)
api-manager_1             |     at org.wso2.carbon.server.Main.main(Main.java:10                           3)
api-manager_1             |     at sun.reflect.NativeMethodAccessorImpl.invoke0(                           Native Method)
api-manager_1             |     at sun.reflect.NativeMethodAccessorImpl.invoke(N                           ativeMethodAccessorImpl.java:62)
api-manager_1             |     at sun.reflect.DelegatingMethodAccessorImpl.invo                           ke(DelegatingMethodAccessorImpl.java:43)
api-manager_1             |     at java.lang.reflect.Method.invoke(Method.java:4                           98)
api-manager_1             |     at org.wso2.carbon.bootstrap.Bootstrap.loadClass                           (Bootstrap.java:70)
api-manager_1             |     at org.wso2.carbon.bootstrap.Bootstrap.main(Boot                           strap.java:51)
api-manager_1             |
apim-with-analytics_api-manager_1 exited with code 0
api-manager_1             | [2020-05-07 10:52:41,732]  SEVERE {org.wso2.carbon.s                           erver.Main handleConfiguration} - Error while performing configuration changes
api-manager_1             | org.wso2.config.mapper.ConfigParserException: Error                            parsing deployment configuration
api-manager_1             |     at org.wso2.config.mapper.TomlParser.parse(TomlP                           arser.java:140)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.parse(Con                           figParser.java:249)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.deploy(Co                           nfigParser.java:217)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.deployAnd                           StoreMetadata(ConfigParser.java:180)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.parse(Con                           figParser.java:127)
api-manager_1             |     at org.wso2.carbon.server.Main.handleConfigurati                           on(Main.java:231)
api-manager_1             |     at org.wso2.carbon.server.Main.main(Main.java:10                           3)
api-manager_1             |     at sun.reflect.NativeMethodAccessorImpl.invoke0(                           Native Method)
api-manager_1             |     at sun.reflect.NativeMethodAccessorImpl.invoke(N                           ativeMethodAccessorImpl.java:62)
api-manager_1             |     at sun.reflect.DelegatingMethodAccessorImpl.invo                           ke(DelegatingMethodAccessorImpl.java:43)
api-manager_1             |     at java.lang.reflect.Method.invoke(Method.java:4                           98)
api-manager_1             |     at org.wso2.carbon.bootstrap.Bootstrap.loadClass                           (Bootstrap.java:70)
api-manager_1             |     at org.wso2.carbon.bootstrap.Bootstrap.main(Boot                           strap.java:51)
api-manager_1             |
apim-with-analytics_api-manager_1 exited with code 0
api-manager_1             | JAVA_HOME environment variable is set to /opt/java/o                           penjdk
api-manager_1             | CARBON_HOME environment variable is set to /home/wso                           2carbon/wso2am-3.0.0
api-manager_1             | Using Java memory options: -Xms256m -Xmx1024m
api-manager_1             | [2020-05-07 10:52:41,478]  INFO {org.wso2.config.map                           per.ConfigParser} - Applying Configurations upon new Templates
api-manager_1             | [2020-05-07 10:52:41,483]  WARN {org.wso2.config.map                           per.ConfigParser} - Overriding files in configuration directory /home/wso2carbon                           /wso2am-3.0.0
api-manager_1             | [2020-05-07 10:52:41,730] ERROR {org.wso2.config.map                           per.TomlParser} - server previously defined at line 1, column 1 (line 237, colum                           n 1)
api-manager_1             | [2020-05-07 10:52:41,732]  SEVERE {org.wso2.carbon.s                           erver.Main handleConfiguration} - Error while performing configuration changes
api-manager_1             | org.wso2.config.mapper.ConfigParserException: Error                            parsing deployment configuration
api-manager_1             |     at org.wso2.config.mapper.TomlParser.parse(TomlP                           arser.java:140)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.parse(Con                           figParser.java:249)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.deploy(Co                           nfigParser.java:217)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.deployAnd                           StoreMetadata(ConfigParser.java:180)
api-manager_1             |     at org.wso2.config.mapper.ConfigParser.parse(Con                           figParser.java:127)
api-manager_1             |     at org.wso2.carbon.server.Main.handleConfigurati                           on(Main.java:231

关于我们可以改变什么来解决问题的任何想法?

我们按照 API 管理器文档中 "Troubleshooting 'Registered callback does not match with the provided url' error" 中的步骤解决了这个问题。

https://apim.docs.wso2.com/en/latest/troubleshooting/troubleshooting-invalid-callback-error/

此外,我们让我们的身份提供者 (IDP/IAM) 团队使用相同的回调更新设置到 carbon,然后调用商店和发布者的 webapp。