我正在将SunPKCS11与NSS结合使用,以从智能卡获取客户端证书。为了获得PIN,我使用DialogCallbackHandler。这些都在java.security文件中指定。
我需要一种提示用户输入PIN的方法。 不能存储,不能从文件中读取,不能作为命令行参数传递等等。
请注意,我无法控制用于身份验证的代码。它使用标准的Java安全性实现。
我研究了CallbackHandler的所有Java 11实现。他们似乎都没有做我想要的事情。
以下是 java.security 中的相关代码行,它们在Java 8中有效,但在Java 9中无效:
security.provider.10=sun.security.pkcs11.SunPKCS11 /etc/pkcs11.cfg
auth.login.defaultCallbackHandler=com.sun.security.auth.callback.DialogCallbackHandler
当请求客户端证书认证时,应该像 DialogCallbackHandler 一样提示用户输入PIN。