java - Apache oltu oauth2 通过 SSL 询问 token

标签 java ssl spring-security oauth-2.0 oltu

有没有办法使用 Apache oltu 通过 SSL 请求访问 token ? 如果我不使用 https(端口 8443)而只使用 http,它会很好用...

我的代码:

OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient());

OAuthClientRequest request = OAuthClientRequest.tokenLocation(MessageFormat.format("https://{0}:8443/applicationId/oauth/token", host)) //
        .setGrantType(GrantType.PASSWORD) //
        .setUsername("username") //
        .setPassword("password") //
        .setClientId("clientId") //
        .buildBodyMessage();

OAuthAccessTokenResponse oAuthResponse = oAuthClient.accessToken(request);

我收到以下异常消息:

    org.apache.oltu.oauth2.common.exception.OAuthSystemException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching localhost found
at org.apache.oltu.oauth2.client.URLConnectionClient.execute(URLConnectionClient.java:108)
at org.apache.oltu.oauth2.client.OAuthClient.accessToken(OAuthClient.java:65)
at org.apache.oltu.oauth2.client.OAuthClient.accessToken(OAuthClient.java:55)
at org.apache.oltu.oauth2.client.OAuthClient.accessToken(OAuthClient.java:71)

我知道有这种方法可以通过覆盖 HttpsURLConnection 的 HostnameVerifier 来解决这个问题,但是有没有办法在 apache oltu 中实现这个?:

static {
    //for localhost testing only
    javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(
    new javax.net.ssl.HostnameVerifier(){

        public boolean verify(String hostname,
                javax.net.ssl.SSLSession sslSession) {
            if (hostname.equals("localhost")) {
                return true;
            }
            return false;
        }
    });
}

最佳答案

URLConnectionClient 使用 HttpsURLConnection 因此您的代码应该可以工作;你试过了吗?

关于java - Apache oltu oauth2 通过 SSL 询问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27707907/

相关文章:

java - 如何让 AtomicInteger 在 Runnable 类中工作

java - Eclipse SWT Shell 到 JInternalFrame

asp.net - IHTTPModule 在 ASP.NET 中在 HTTP 和 HTTPS 之间切换

grails - 要求所有的请求映射网址

java - 关于CodeChef上的 "Uncle Johnny"问题_

java - 如何在旧版本的 Android 操作系统中使用 API V2 显示 GoogleMap(iam 使用 map fragment )

apache - 对某些页面强制使用 https,对所有其他页面强制使用 http

java - 在反向代理后面访问 ElastiC

java - 如何根据Spring用户权限显示HTML菜单

spring - 如何使 AuditorAware 与 Spring Data Mongo Reactive 一起工作