Gre*_*omu 0 certificate mqtt hivemq
我正在深入研究HiveMQ插件开发.我开发了基于AfterLoginCallback的自定义功能.我配置了一个有效的TLS连接,我可以连接客户端证书.
mosquitto_pub.exe -t test -m "testMessage" --cafile myCertificates/hivemq-server-cert.pem --cert myCertificates/sender.crt --key myCertificates/sender.key -p 8883"
Run Code Online (Sandbox Code Playgroud)
但是,当我调试AfterLoginCallback代码时,我发现我的"ClientData - > certificate"为"null",在访问时抛出IllegalStateExcpetion.
[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)
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释,为什么证书是空的?
谢谢,Lomungo
小智 6
在检查凭据的回调中,clientData必须将其处理为 ClientCredentialData
这是一个例子:
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();
...
}
}
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |