Java 结合Kerberos、ADFS和Spring安全性的SSO身份验证

Java 结合Kerberos、ADFS和Spring安全性的SSO身份验证,java,spring-boot,kerberos,adfs,spnego,Java,Spring Boot,Kerberos,Adfs,Spnego,我目前正在分析几种实现身份验证机制的替代方案,这种机制不会要求用户提供凭据。为什么不呢?因为我们讨论的web应用程序只在内部网络中使用,而内部网络应该位于Kerberos领域中 我花了一些时间试图找出哪一种方法,但似乎困惑正在我的脑海中滋长。我想问的是,我应该使用哪种策略来连接这些组件,或者如果存在任何不必要的策略: Kerberos:这是假定的身份验证机制,用户在使用Windows配置文件登录时会得到身份验证。我不太确定它是否提供了一个明确的索赔清单,供委托人检索。 ADFS:在我看来,联合服

我目前正在分析几种实现身份验证机制的替代方案,这种机制不会要求用户提供凭据。为什么不呢?因为我们讨论的web应用程序只在内部网络中使用,而内部网络应该位于Kerberos领域中

我花了一些时间试图找出哪一种方法,但似乎困惑正在我的脑海中滋长。我想问的是,我应该使用哪种策略来连接这些组件,或者如果存在任何不必要的策略:

Kerberos:这是假定的身份验证机制,用户在使用Windows配置文件登录时会得到身份验证。我不太确定它是否提供了一个明确的索赔清单,供委托人检索。 ADFS:在我看来,联合服务可以只是Kerberos的一个扩展,将其票证包装到更标准的SAML协议中。在我看来,一旦将web应用程序公开给外部网络,这会有所帮助。因此,我说我不需要它来将应用程序集成到SSO机制中,对吗?或者,它仍然需要作为一种整合手段。 Oracle WebLogic:这是将承载web应用程序的选定应用程序服务器。似乎有办法将WLS配置为Kerberos领域的一部分。集成的主要点是keytab。这里我找到了一个老例子,但在WLS 12c中似乎也需要做同样的事情: SPNEGO:这似乎是配置体系结构时使用的标准协议,HTTP协议用于访问web应用程序的服务提供商。对我来说,这只是Kerberos的一个扩展,在我的用例中是必要的,因为服务确实是通过HTTP+SpringBoot通过REST进行通信来访问的。 SpringSecurity Kerberos扩展:SpringSecurity提供了许多扩展,其中一个是支持Kerberos和SPNEGO的模块。现在有两个问题在我脑海里沸腾: 我认为这是一种替代方案,以防集成失败 在应用服务器Oracle WLS中处理。如果是的话,哪一个是 更好的方法是什么? Spring在其文档中提供了一个使用此扩展主集成点设置安全适配器的示例:仍然是keytab。但是用户详细信息的检索又如何呢?是否仍需要服务来连接到单独存储它们的Active Directory? 我对替代方案和所有可以一起工作的组件感到非常困惑。我还没有找到这样一个用例的简明流程图,只有那些单独工作的流程图。那么,假设我们拥有上述所有组件,那么可以设计哪一种方法


注意:另外,现在Angular层通过SpringBoot后端视图JWT上的虚拟服务进行身份验证。如果可能的话,我希望将JWT保持在两者之间,但是如果可以轻松检索和解析Kerberos票证以获得声明,它将变得过时。

使用我的Tomcat SPNEGO AD扩展,它包含一个Spring Sec垫片。

使用我的Tomcat SPNEGO AD扩展,它包含一个Spring Sec垫片