我目前正在分析几种替代方案,以实现不要求用户提供凭据的身份验证机制。为什么不?因为我们正在谈论仅在(应该)驻留在Kerberos领域内的内部网络内使用的Web应用程序。
我花了一些时间试图弄清楚哪种方法,但是似乎混乱在我脑海中越来越大。我要问的是应该使用哪种策略来连接这些组件,或者是否有不需要的任何组件:
- Kerberos:这是(假定的)身份验证机制,用户在使用Windows配置文件登录时将获得身份验证。我很确定它是否确实为要检索的主体提供了明确的索偿清单。
- ADFS:在我看来,通过将工单包装到更标准的SAML协议中,联合身份验证服务可以只是Kerberos的扩展。我认为,一旦将Web应用程序暴露于外部网络,这便会有所帮助。因此,我是否正确地说我不需要将应用程序集成到SSO机制中?否则仍将需要它作为集成方式。
- Oracle WebLogic:这是将托管Web应用程序的选定应用程序服务器。似乎有多种方法可以将WLS配置为Kerberos领域的一部分。集成的重点是密钥表。在这里,我找到了一个旧示例,但似乎在WLS 12c中也差不多需要做同样的事情:http://www.ateam-oracle.com/kerberos-and-weblogic-server-on-windows-step-by-step/
- SPNEGO:这似乎是用于配置体系结构的标准协议,而HTTP协议用于访问服务提供商(Web应用程序)。对我来说,它只是Kerberos的扩展,这在我的用例中是必需的,因为该服务确实是通过HTTP(Angular SPA + SpringBoot通过REST进行通信)访问的。
- SpringSecurity-Kerberos扩展:SpringSecurity提供了许多扩展,其中之一是支持Kerberos和SPNEGO的模块。我现在想到两个问题:
- 如果不进行集成,我认为这是替代方法
在应用程序服务器(Oracle WLS)中处理。如果是这样,那将是
更好的方法?
- Spring在其文档中提供了使用此扩展的安全适配器设置示例(主要集成点:仍为keytab)。但是,如何检索用户详细信息呢?仍然需要一项服务来连接到单独存储它们的Active Directory吗?
我对替代方案以及可以一起使用的所有组件非常困惑。我还没有找到这种用例的简洁流程图,只有其中的一个单独工作。那么,假设我们具有上述所有组件,可以设计哪种方法?
注意:另外,现在,Angular层已通过SpringBoot后端视图JWT上的虚拟服务进行了身份验证。我想尽可能地将JWT保留在两者之间,但是如果可以轻松地检索和解析Kerberos票证以获得声明,它将变得过时。