Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为我的应用程序使用相同的凭证处理程序配置';在生成新密码散列时使用的容器?_Java_Tomcat_Jakarta Ee - Fatal编程技术网

Java 如何为我的应用程序使用相同的凭证处理程序配置';在生成新密码散列时使用的容器?

Java 如何为我的应用程序使用相同的凭证处理程序配置';在生成新密码散列时使用的容器?,java,tomcat,jakarta-ee,Java,Tomcat,Jakarta Ee,我的Web应用程序的上下文定义类似于 我可以在action listener中添加哪些内容来执行以下操作: String passwordHash = credentialHandler.mutate(newPassword); 其中,credentialHandler是应用于正在处理的请求的credentialHandler实例 关键是要将配置放在一个地方,即上下文配置,而不是在上下文配置和生成并存储新哈希的代码中复制配置。基本上,您需要遵循Christopher Schultz的说明。

我的Web应用程序的上下文定义类似于


我可以在action listener中添加哪些内容来执行以下操作:

String passwordHash = credentialHandler.mutate(newPassword);
其中,
credentialHandler
是应用于正在处理的请求的
credentialHandler
实例


关键是要将配置放在一个地方,即上下文配置,而不是在上下文配置和生成并存储新哈希的代码中复制配置。

基本上,您需要遵循Christopher Schultz的说明。假设您不反对在构建过程中引用Tomcat 8.x
catalina.jar
,首先导入所需的类:

import javax.servlet.ServletContext;
import org.apache.catalina.CredentialHandler;
import org.apache.catalina.Globals;
然后,获取
CredentialHandler
只需使用正确的键查找
ServletContext
的属性:

public static CredentialHandler getCredentialHandler(final ServletContext context) {
  return (CredentialHandler) context.getAttribute(Globals.CREDENTIAL_HANDLER);
}
幻灯片提供了一种使用反射的替代方法,以避免在编译类路径中包含
catalina.jar


注意,但这仅在
context.xml
中配置了一个未列出的
时有效。如果你用<代码> LockoutRealm < /代码>包装你的<代码> <代码>,例如,查找只考虑最外层的代码<代码>域>代码>返回一个通用的<代码> CurimalAdvalds/COD>,而不是钻到<代码> > CurdMatalHuffer-<代码> >你配置好了.< /P>不错的答案。你如何解决你在上一段中描述的只返回一般凭证处理程序的问题?我有一个LockoutRealm和NestedCredentialHandler,我有这个确切的问题。取决于实现细节,它总是脆弱的。在写了这篇文章之后,我重新考虑了一下,在另一个项目中,我选择将
CredentialHandler
中的哈希逻辑复制到我自己的类中。存在的危险是,上下文中的配置和我自己的代码中的配置会分离,变得不兼容,但我认为这是两个弊病中较小的一个。