标签: wso2-api-manager

javax.net.ssl.SSLPeerUnverifiedException:主机名与对等方提供的证书主题不匹配

我在stackoverflow上关注了许多链接并尝试了许多解决方案,但它们都没有为我工作.我正在使用WSO2 API manager版本1.9.1.我正面临以下错误:

Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: Host name 'XXXXXXXXX' does not match the certificate subject provided by the peer (CN=localhost, O=WSO2, L=Mountain View, ST=CA, C=US)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:465)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:395)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353)
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134)
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
    at com.java.pushNotifications.WSO2DemoClient.main(WSO2DemoClient.java:49)
Run Code Online (Sandbox Code Playgroud)

我开发了以下Java代码.请帮我解决这里出了什么问题.我需要连接不安全的方式,并允许连接到没有证书的 SSL站点.

public static void main(String[] args) throws ClientProtocolException, IOException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
        SSLContextBuilder builder = new SSLContextBuilder();
        builder.loadTrustMaterial(null, …
Run Code Online (Sandbox Code Playgroud)

java ssl ssl-certificate apache-httpclient-4.x wso2-api-manager

25
推荐指数
4
解决办法
6万
查看次数

身份验证流程中grant_type = client_credentials和grant_type = password之间的区别?

我想明白之间的差别grant_type=client_credentials,并grant_type=passwordAuthenticationOAuth2 Flow概念.我关注以下网站:

我相信grant_type=passwordnot secure这样只要使用gran_type的JavaScript开发.但我还是有些人可以帮助理解这个概念.

我还观察到,grant_type=client_credentials不提供" refresh_token",它只是提供了access_token 其中的grant_type=password同时提供了access_tokenrefresh_token.

希望得到详细的解释.我正在使用WSO2 API ManagerOAuth2进行应用程序开发

java wso2esb wso2is wso2-api-manager

8
推荐指数
1
解决办法
2万
查看次数

如何使用WSO2 API Manager在租户中将租户设置为标头

我有一个API,要求租户作为标题.

如果我按顺序创建自定义:

<sequence name="WSO2AM--Ext--In">
    <header
       name="X-Tenant-Id"
       scope="transport"
       action="set"
       expression="???????????????????"
    />
</sequence>
Run Code Online (Sandbox Code Playgroud)

有没有我可以用来实现这个目的的表达式?或者我应该创建一个per-API中介来设置它?

PS:看看WSO2源代码(CarbonTenantInfoConfigurator.java),我发现这个片段可以作为一个提示:

PrivilegedCarbonContext cc = PrivilegedCarbonContext.getThreadLocalCarbonContext();
String tenantDomain = cc.getTenantDomain();
int tenantId = cc.getTenantId();
messageContext.setProperty("tenant.info.domain", tenantDomain);
messageContext.setProperty("tenant.info.id", tenantId);
Run Code Online (Sandbox Code Playgroud)

但是,如果可能的话,我不知道如何在自定义序列中访问这些属性.

wso2 wso2carbon wso2-api-manager

7
推荐指数
1
解决办法
966
查看次数

Jaggery(WS02)端点引用/动态端点

我目前正在开发一个我在其API管理器上部署的Jaggery应用程序.

从Jaggery后端我使用此处记录的方法调用SOAP Web服务,该方法指定:

<%      
var url = 'http://jaggeryjs.org/apidocs/resources/home.jag'; 
var xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.setRequestHeader("user" , "madhuka");
xhr.send();

print("ReadyState : "+xhr.readyState);
print("<br>ResponseStatus : "+xhr.status);
print("<br>ResponseText : "+xhr.responseText);
%>
Run Code Online (Sandbox Code Playgroud)

我已经完成所有工作并且工作正常,但是我想删除硬编码的URL并将其替换为基于环境的某种URL查找.

这样做的正确方法是什么?我可以在API管理器中指定端点并参考它吗?或者也许使用EPR文件.从这个意义上讲,我对Jaggery文档的运气不大.

web-services wso2 wso2-api-manager jaggery-js api-manager

7
推荐指数
1
解决办法
175
查看次数

如何解决"证书主题名称与目标主机名不匹配"的错误?

  curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer 90d2c018-73d1-324b-b121-a162cf870ac0' 'https://172.17.0.1:8243/V1.0.2/stock/getNA?name=te'
Run Code Online (Sandbox Code Playgroud)

终端提示

"curl:(51)SSL:证书使用者名称(localhost)与目标主机名"172.17.0.1"不匹配

Howerver,在我将"172.17.0.1"更改为"localhost"后,它工作并获得了结果.

为什么?是不是有错误的配置?同时,http_access.log中没有登录.

wso2 wso2esb wso2carbon wso2-api-manager api-manager

7
推荐指数
2
解决办法
4万
查看次数

如何从 WSO2 API Manager 验证 JWT

在后端 Web 服务位于单独的服务器上并且需要确定给定请求通过 APIM 网关身份验证和授权机制的情况下,验证 JWT 是否由特定 API 管理器实例发出的推荐方法是什么?

我知道 JWT 中的标头字段包含一个“x5t”字段,它是对租户密钥存储中证书的编码引用,详情如下:

https://asankastechtalks.wordpress.com/2013/12/05/obtaining-certificate-used-to-sign-a-jwt/

由于后端 Web 服务位于单独的服务器上,我们是否需要以某种方式将公钥分发给它?另外,我们如何更新用于签署 JWT 的证书,因为它现在使用的是默认值?

validation wso2 jwt wso2-api-manager

6
推荐指数
1
解决办法
2267
查看次数

尝试连接到端点时出错.不能为ssl借用客户端

此错误正在WSO2 API Manager wso2carbon.log中打印.

sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:88)
    at org.wso2.carbon.databridge.agent.endpoint.binary.BinarySecureClientPoolFactory.createClient(BinarySecureClientPoolFactory.java:53)
    ... 9 more
TID: [-1] [] [2016-12-28 22:16:04,043] ERROR {org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker} -  Error while trying to connect to the endpoint. Cannot borrow client for ssl://192.168.1.36:9711 {org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker}
org.wso2.carbon.databridge.agent.exception.DataEndpointAuthenticationException: Cannot borrow client for ssl://192.168.1.36:9711
    at org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker.connect(DataEndpointConnectionWorker.java:100)
    at org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker.run(DataEndpointConnectionWorker.java:43)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.wso2.carbon.databridge.agent.exception.DataEndpointException: Error while opening socket to 192.168.1.36:9711. Connection refused: connect
    at org.wso2.carbon.databridge.agent.endpoint.binary.BinarySecureClientPoolFactory.createClient(BinarySecureClientPoolFactory.java:58)
    at org.wso2.carbon.databridge.agent.client.AbstractClientPoolFactory.makeObject(AbstractClientPoolFactory.java:39)
    at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1212)
    at org.wso2.carbon.databridge.agent.endpoint.DataEndpointConnectionWorker.connect(DataEndpointConnectionWorker.java:92)
    ... 6 more
Caused by: java.net.ConnectException: Connection refused: …
Run Code Online (Sandbox Code Playgroud)

wso2 wso2carbon wso2-api-manager

6
推荐指数
1
解决办法
6473
查看次数

WSO2 - 禁用 HTTPS

如何禁用 WSO2 Api Manager(admin/gw/其他组件)的 HTTPS?我们希望在前端负载均衡器上终止 SSL,而不是在终端 WSO2 产品上终止 SSL。如果我访问端口 9763,我将被重定向到 9443。我们正在运行使用 docker-images 部署的 2.1.0。

wso2 wso2-api-manager

6
推荐指数
1
解决办法
6500
查看次数

如何确定用于访问令牌的授权类型

我在WSO2 API Manager中配置了一个API,允许多种不同的OAuth 2.0授权类型(客户端凭据和openid).

我的API需要不同的行为,具体取决于它是通过客户端凭据生成的access_token还是openid来调用的.API如何验证提供的访问令牌是通过客户端凭据还是openid生成的?

编辑和解决方案:

我找到了一种方法来做到这一点.以下WSO2文档显示了如何配置API Manager以传递包含某些特定于令牌的信息的JWT.在该令牌中,您将找到" http://wso2.org/claims/usertype "声明.如果您的api是通过客户端凭证授予类型访问的,那么如果通过openid或SAML访问它,它的值将是APPLICATION,它将是APPLICATION_USER.我没有找到专门概述这种情况的文档,但似乎有效.

wso2 oauth-2.0 wso2-api-manager

6
推荐指数
1
解决办法
300
查看次数

WSO2 API Manager Client Credentials 更新令牌

我正在尝试更新通过 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 oauth-2.0 wso2-api-manager

5
推荐指数
1
解决办法
1147
查看次数