首页 > 解决方案 > 在 Java 9 中替换 DialogCallbackHandler

问题描述

我正在使用带有 NSS 的 SunPKCS11 从智能卡获取客户端证书。为了获得 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

当请求客户端证书身份验证时,应该提示用户输入他们的 PIN,就像他们使用DialogCallbackHandler 一样

  1. 是否有DialogCallbackHandler的替代品?
  2. 如果 #1 的答案是否定的,Java 8 有一个背书目录,您可以在其中放入额外的 JAR。Java 9+ 中是否有类似的功能?我可以简单地使用 DialogCallbackHandler 创建一个 JAR 并将其添加到某个地方以便它在系统范围内生效吗?

标签: javajava-11pkcs#11

解决方案


推荐阅读