gpt4 book ai didi

java - Rampart:如何在没有任何密码的情况下使用 JKS 证书

转载 作者:行者123 更新时间:2023-12-01 23:52:26 25 4
gpt4 key购买 nike

我有以下情况:

没有密码的 JKS keystore 文件,包含也不 protected 私钥。我尝试配置 Rampart 以便使用此 keystore ,但我不断收到以下错误:

Caused by: org.apache.rampart.RampartException: No password supplied by the callback handler for the user : "username"

我的密码回调处理程序如下:

公共(public)类 PWCBHandlerCertificate 实现 CallbackHandler {

public void handle( Callback[] callbacks ) throws IOException, UnsupportedCallbackException {

for ( int i = 0; i < callbacks.length; i++ ) {
WSPasswordCallback pwcb = (WSPasswordCallback) callbacks[i];

String id = pwcb.getIdentifer();
int usage = pwcb.getUsage();
if ( usage == WSPasswordCallback.DECRYPT || usage == WSPasswordCallback.SIGNATURE ) {
Element temp = pwcb.getCustomToken();
// used to retrieve password for private key
if ( "username".equals( id ) ) {
pwcb.setPassword( "" );
}

}
}
}

}

我错过了什么?

提前致谢

最佳答案

事实证明,ramart 1.5.2(我不知道更新的版本,我必须保留这个......)强制证书具有有效的密码(不为空也不为空)。我下载了 Rampart 1.5.2 的源代码,并在 BindingBuilder.java 类(包 org.apache.rampart.builder)中找到了以下代码:

WSPasswordCallback[] cb = { new WSPasswordCallback(user,
WSPasswordCallback.SIGNATURE) };

try {
handler.handle(cb);
if(cb[0].getPassword() != null && !"".equals(cb[0].getPassword())) {
password = cb[0].getPassword();
log.debug("Password : " + password);
} else {
//If there's no password then throw an exception
throw new RampartException("noPasswordForUser",
new String[]{user});
}
}

问题出在这里:

if(cb[0].getPassword() != null && !"".equals(cb[0].getPassword()))

如果从回调中接收到的密码为 null 或空,则会引发异常。为了避免这个问题,我不得不注释掉部分代码,如下所示:

if(cb[0].getPassword() != null /*&& !"".equals(cb[0].getPassword())*/)

我重新编译了该类并替换了rampart-core-1.5.2.jar 中生成的.class

异常消失了,我现在可以成功使用无密码证书。

希望对您有所帮助。

关于java - Rampart:如何在没有任何密码的情况下使用 JKS 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58215622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com