【问题标题】:How to get client certificate in a Java HttpsServer implementation for a webservice?如何在 Web 服务的 Java HttpsServer 实现中获取客户端证书?
【发布时间】:2012-08-27 00:58:40
【问题描述】:

我使用 Sun Ws 实现编写了一个 Web Service 服务器,并使用 HttpsServer 进行发布(TLS 相互身份验证)。

        httpServer=HttpsServer.create(...);
        ssl=SSLContext.getInstance("TLS");
        ...
        ssl.init(keyFactory.getKeyManagers(),trustFactory.getTrustManagers(),new SecureRandom());
        configurator=new HttpsConfigurator(ssl) {
           public void configure (HttpsParameters params) 
           {
               SSLContext context; 
               SSLParameters sslparams;

               context=getSSLContext();
               sslparams=context.getDefaultSSLParameters();
               sslparams.setNeedClientAuth(true);
               params.setSSLParameters(sslparams);
           }
       }; 
       ((HttpsServer)httpServer).setHttpsConfigurator(configurator);
       ...
       endPoint=getSunWsProvider().createEndPoint(...);
       httpContext=httpServer.createContext(...);
       endPoint.publish(httpContext);
       httpServer.start();
       ...

一切正常。当Web Service的服务器端的实现由客户端执行时,我想知道哪个客户端在执行代码(管理权限)。知道每个客户端都有自己的证书,如何在 Web 服务调用之前获取用于 TLS 协商的客户端证书? (我更愿意根据客户端证书分析找到解决方案,而不是在每个 Web Service 调用中添加标识信息)。

感谢您的帮助。

【问题讨论】:

  • 您的 Web 服务是否在“Sun Ws 实现”中实现为 Servlet?如果是这样,getUserPrincipal() 给出了什么? (在HttpServletRequest。)
  • 在web服务实现中... @Resource WebServcieContext wsctx;
  • @martijno 在 Web 服务实现中... WebServcieContext wsctx; MessageContext mctx=wsctx.getMessageContext(); mctx.get(MessageContext.SERVLET_CONTEXT) ... 为空 mctx.get(MessageContext.SERVLET_REQUEST) ... 为空且 wsctx.getUserPrincipal() 为空。

标签: java web-services authentication certificate httpserver


【解决方案1】:

在您的处理程序中,您得到的不是HttpExchange 实例,而是它的子类HttpsExchange 的实例,它具有额外的方法:

抽象SSLSessiongetSSLSession();

除其他外,SSLSession 公开对等身份

【讨论】:

    【解决方案2】:

    getUserPrincipal() 为您提供httpservletrequest 中的证书。

    【讨论】:

    • 不,它没有。它给你一个校长。
    猜你喜欢
    • 2020-10-23
    • 2014-02-23
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多