For one JDBC-based configuration , is the URL useful? According Remote Instance and Mount Configuration Details, The URL of the remote instance can be deduced as follows:
Let the URL of the destination server be https://localhost:9443/services. Then the URL of the remote instance will be https://localhost:9443/registry. Let the URL of the destination server be https://10.20.30.40:9445/webcontext/services. Then the URL of the remote instance will be https://10.20.30.40:9445/webcontext/registry.
But in the APIM 2.0 deployment, the publisher's configuration is as below:
<remoteInstance url="https://publisher.apim-wso2.com">
<id>gov</id>
<cacheId>user#jdbc:mysql://regdb.mysql-wso2.com:3306/regdb</cacheId>
<dbConfig>govregistry</dbConfig>
<readOnly>false</readOnly>
<enableCache>true</enableCache>
<registryRoot>/</registryRoot>
</remoteInstance>
Modify the /etc/hosts entries to map the relevant IP addresses to the remoteInstance URLs.
127.0.0.1 publisher.apim-wso2.com
Why does it use "https://publisher.apim-wso2.com" , but not "https://localhost:9445" ?
BTW, Is cacheId useful in JDBC-based configuration? if yes, what's the cacheId name rule? JDBC URL?
remoteInstance url is not used in JDBC case.
cacheId is required. See this.
WSO2 API Manager - Setting 'CacheId' when clustering with SQL Server
Related
WSDL 1.1 & WSDL 2.0 are not opening in the management console when I open the WSDL in the management console it shows This site can’t be reached error I don't know why this happening. So please help me to sort this out.
Note: No error throws in both carbon and wire logs
Thanks!
you have misconfiguration problem i think. becouse you have wso2 in AWS and this ip-10-50-11-169... is not a hostname or your ip adress.
Can you check your /etc/hosts on server? maybe you must change fqdn in aws account
or you can check wso2 hostname/ip adress configuration in axis2.xml <parameter name="WSDLEPRPrefix"..
You need to add the following property to your axis2.xml to pick the correct FQDN/Hostname when generating WSDL URLs. So add the Hostname you are using to access the services here or if you are using the same hostname used for management console add the hostname with the correct service port.(8280 or 8343)
<parameter name="WSDLEPRPrefix" locked="false">http://ei.wso2.com:80</parameter>
Refer to instructions here.
Also, make sure the FQDN is resolvable and your security groups are allowing access to relevant ports.
· Changing the hostnames from localhost to IP / Domain is not working. Running the API manager server overrides the configuration files (carbon.xml and api-manager.xml) to previous configuration. How should we change the domain names from localhost to domain or live IPs?
· The configuration is not editable in https://localhost:9443/carbon. Is there any other way to change configuration? Even the configuration is not visible in https://localhost:9443/admin.?
Please help...
I guess you are referring to APIM 3.0.0 which comes with new configuration model. These configs are need to be modified in the deployment.toml file. Please refer https://apim.docs.wso2.com/en/latest/Reference/ConfigCatalog/ for more information.
See details on changing hostname in https://apim.docs.wso2.com/en/latest/InstallAndSetup/DeployingWSO2APIManager/changing-the-hostname/
I'm using WSO2 identity server (on port 9443) and enterprise service bus (ESB, on port 9444). I configured ESB to use IS SSO. But everytime I try to login into ESB it redirects me to IS and there it redirects me to URL localhost:9443/samlsso.
I already tried changing this URL in identities.xml and carbon.xml without access.
Where can I configure the redirection address?
In carbon.xml I specified the hostname as "HostName" and "MgtHostName". But IS still uses localhost.
Thanks!
WSO2 has a script located at:
<IOTS_HOME>/scripts
run
./change-ip.sh
Tip: The script will find and replace the IP address given in argument1 (localhost) with the IP address given as argument2 (10.10.10.14), in the necessary configuration files.
Check Docs to configure Hostname
SSO configuration should in /repository/conf/security/authenticators.xml as follows to change the hostname of redirection url of Identity Server,
<Authenticator name="SAML2SSOAuthenticator" disabled="false">
<Priority>1</Priority>
<Config>
<Parameter name="LoginPage">/carbon/admin/login.jsp</Parameter>
<Parameter name="ServiceProviderID">carbonServer</Parameter>
<Parameter name="IdentityProviderSSOServiceURL">https://<HostNameOfIdentitiyServer>:9443/samlsso</Parameter>
<Parameter name="NameIDPolicyFormat">urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</Parameter>
<Parameter name="AssertionConsumerServiceURL">https://<HostNameOfIdentitiyServer>:9443/acs</Parameter>
</Config>
Ok, I found a solution.
I did a search+replace over all XML documents inside the IS and ESB package and replaced all "localhost" by my hostname.
In the identity.xml there's a SSOService/IdentityProviderURL tag, that one seems important for SAML authentication.
carbon.xml file under /repository/conf folder.
Change <HostName>localhost</HostName> to your IP.
<HostName>x.x.x.x</HostName>
Add the URL of your VM in system32/drivers/etc/hosts and map it to localhost.
Change the hosts file and map localhost to Ip-address of your VM where WSO2 is running.
I have a configuration as follows:
1 server with seperate Publisher (9446) and Store (port 9447). Both are configured with shared gov/config registry (note that the publisher is the same except localhost:9446/registry for the remote instance url:
<dbConfig name="govregistry">
<dataSource>jdbc/WSO2SHAREDCONREG_DB</dataSource>
</dbConfig>
<remoteInstance url="https://localhost:9447/registry">
<id>gov</id>
<dbConfig>govregistry</dbConfig>
<readOnly>false</readOnly>
<enableCache>true</enableCache>
<registryRoot>/</registryRoot>
</remoteInstance>
<mount path="/_system/governance" overwrite="true">
<instanceId>gov</instanceId>
<targetPath>/_system/governance</targetPath>
</mount>
<mount path="/_system/config" overwrite="true">
<instanceId>gov</instanceId>
<targetPath>/_system/nodes</targetPath>
</mount>
I have a Gateway and Key Manager on a different server. These are both deployed to different directories and the WSO2 documentation did not say to do anything additional for the registry.xml file so they look like:
<currentDBConfig>wso2registry</currentDBConfig>
<dbConfig name="wso2registry">
<dataSource>jdbc/WSO2CarbonDB</dataSource>
</dbConfig>
When the API is published and then I attempt to use the 'try it' functionality I get the following error (regardless of if the API is set to require a token or not)...
This error is on the gateway server:
[2014-01-23 21:54:31,111] ERROR - APIAuthenticationHandler API authentication failure
org.wso2.carbon.apimgt.gateway.handlers.security.APISecurityException: Access failure for API: /newphoneverify, version: 1.0.0 with key: null
Do I need to do something additional like setting up governance and config registry sharing on the keymanager and gateway as well?
This happens if the OPTIONS verb of the API is not enabled with 'None' auth type. Check [1].
[1]https://wso2.org/jira/browse/APIMANAGER-1819
I have the same problem:
Swagger UI does not works and return the same screenshots above, but if I use chrome/postman the API return the correct value so is just the swagger UI that has problems, I have an Apache in front of the API manager and the external name of the store is different from the internal name and apache proxypass the request.
I have configured the api-manager.xml and the API does not have authorization (all set to none) have really no idea on how to fix it.
I have developed a SOAP webservice in mule, which has the endpoint configured as say
for e.g.
http:inbound-endpoint exchange-pattern="request-response" address="http://localhost:7001/helloService"
doc:name="HTTP"
It is deployed as a WAR file in tomcat server. Am able to access the wsdl from my local desktop like this - endpoint?wsdl and works perfectly fine.
How can I access this when deployed in a remote server? What endpoint should it be given? Can it contain localhost and port as it is?
Do I need to refer the context path of the web app? Its a little bit confusing...Can someone help pls?
You're binding to localhost so it'll only work on the machine it's running. You can bind to all interfaces using 0.0.0.0 and the access it remotely using the machine's IP address or domain name.