Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 两种身份验证机制:Kerberos和HTTP basic_Java_Spring_Authentication - Fatal编程技术网

Java 两种身份验证机制:Kerberos和HTTP basic

Java 两种身份验证机制:Kerberos和HTTP basic,java,spring,authentication,Java,Spring,Authentication,我有一个springboot应用程序,它使用SpringSecurityLDAP使用通常的HTTP基本身份验证 后来,我使用spring-security-Kerberos-core和spring-security-Kerberos-web将其修改为使用单点登录(Kerberos)身份验证 到目前为止一切正常 现在我需要使用这两种机制。其想法是在前端应用程序中使用SSO,以便用户自动登录。以及使用HTTP basic(用户名/密码)进行REST接口或测试 可能我需要有两个入口点(例如,SSO的“

我有一个springboot应用程序,它使用
SpringSecurityLDAP
使用通常的HTTP基本身份验证

后来,我使用
spring-security-Kerberos-core
spring-security-Kerberos-web
将其修改为使用单点登录(Kerberos)身份验证

到目前为止一切正常

现在我需要使用这两种机制。其想法是在前端应用程序中使用SSO,以便用户自动登录。以及使用HTTP basic(用户名/密码)进行REST接口或测试

可能我需要有两个入口点(例如,SSO的“/login”和HTTP basic的“/login userpass”)。这是正确的方法吗?还是有其他方法来实现它

在我看来,这是一个常见的要求,但我找不到如何实现这一点的例子

编辑:
事实上,这是一个好主意。我没有将Kerberos与Spring一起使用,但我以前已经用basic、form和CA SSO实现了一个应用程序。但是,如果不看一些代码,特别是WebSecurity配置适配器,我只能给出一般的指导

使用Spring,您需要许多映射到不同URL的身份验证过滤器,这些过滤器将拦截登录,根据需要执行401质询,然后创建未经身份验证的身份验证实例。典型的过滤器是BasicAuthenticationFilter和UsernamePasswordAuthenticationFilter,您需要找到KerBeros的过滤器

稍后,未经身份验证的身份验证将提供给AuthenticationProviderManager,后者将找到适当的AuthenticationProvider来执行身份验证。这是使用密码哈希(可能是SSO回调)进行数据库查询的地方,如果用户已通过身份验证,则创建新的身份验证,通常需要扩展AbstractAuthenticationToken或选择现有身份验证之一。请记住复制未经验证的身份验证的详细信息

在Spring4中,使用AuthenticationManagerBuilder配置AuthenticationProvider,这是在需要覆盖的WebSecurity配置适配器的配置方法中完成的

请记住,您可以有一个筛选器和多个AuthenticationProvider,也可以有多个筛选器和一个AuthenticationProvider,具体取决于您的需要


我目前可以访问的应用程序只有一个表单登录,但是一些额外的隐藏字段(以及会话中的内容)控制着4个可用的AuthenticationProviders中的哪一个将负责身份验证,并根据哪个提供者对用户进行了身份验证创建了不同的身份验证类,因此,我们可以将应用程序的某些区域限制为特定的身份验证类型

谢谢你的回答。是的,我了解一般的机制,但我真的需要一段代码,我可以看到所有的细节。