首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HiveMQ ClientData对象中的证书

HiveMQ ClientData对象中的证书
EN

Stack Overflow用户
提问于 2016-09-15 19:32:23
回答 1查看 251关注 0票数 0

我目前正在深入研究HiveMQ插件的开发。我开发了基于AfterLoginCallback的自定义功能。我配置了一个有效的TLS连接,并且我能够使用客户端证书进行连接。

代码语言:javascript
复制
mosquitto_pub.exe -t test -m "testMessage" --cafile myCertificates/hivemq-server-cert.pem  --cert myCertificates/sender.crt --key myCertificates/sender.key -p 8883"

然而,当我调试AfterLoginCallback代码时,我发现我的"ClientData ->证书“是”空的“,在访问时抛出一个IllegalStateExcpetion。

代码语言:javascript
复制
[INFO] java.lang.IllegalStateException: Optional.get() cannot be called on an absent value
[INFO]  at com.google.common.base.Absent.get(Unknown Source)
[INFO]  at mycode.hivemq.plugins.first_plugin.callbacks.AfterLoginCallbackTest.afterSuccessfulLogin(AfterLoginCallbackTest.java:33)

谁能解释一下,为什么证书是空的?

谢谢,Lomungo

EN

回答 1

Stack Overflow用户

发布于 2019-01-29 20:26:29

在检查凭据的回调中,必须将clientData作为ClientCredentialData处理

下面是一个示例:

代码语言:javascript
复制
public class AuthorizationCallback implements OnAuthenticationCallback, OnAuthorizationCallback {

    @Override
    public Boolean checkCredentials(@NotNull final ClientCredentialsData clientData) throws AuthenticationException {

        //Throw out clients which didn't provide a client certificate
        if (!clientData.getCertificate().isPresent()) {
            log.debug("Client {} didn't provide a client certificate. Disconnecting client", clientData.getClientId());
            throw AuthenticationExceptions.WRONG_CERTIFICATE;
        }

        final Certificate certificate = clientData.getCertificate().get().certificate();
        ...
        }

}

希望这能有所帮助!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39510026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档