【发布时间】:2016-07-28 10:10:32
【问题描述】:
我很难确定 CAC/Active Directory(AD) 身份验证在哪里对基于 Java 的 Web 应用程序起作用。以托管在多个 Weblogic 容器上的多个 J2E JSF 应用程序为例。这些应用程序中的每一个都通过检查用户所处的 AD 角色来限制用户的访问。如果所有这些应用程序都需要,在什么阶段执行 CAC/AD 身份验证?
据我了解,理想情况下,您希望网关与执行身份验证的应用程序分开。一个简单的例子是 F5 硬件/软件捆绑包。一旦用户使用他们的 CAC/pin 组合进行身份验证,他们就会被转发到 Weblogic 上已部署的应用程序,并在其标头中包含一些附加信息(如前面提到的 AD 角色)。我并不是说我应该购买它,因为没有可编程的解决方案,而是作为一个例子,身份验证和使用资源是两个独立的实体,不应该为这个问题结合起来。
然而,在实践中,我了解到许多项目正在结合 Microsoft 和 Apache 服务以允许身份验证。 Here is a good blog post that outlines some benefits. 一旦用户通过 IIS 进行身份验证,他们就会被转发到 apache 上的应用程序。无论如何,混合 IIS 和 Weblogic 似乎是一个坏主意,尤其是在尝试配置两个节点之间的通信时。
堆栈和网络上也有许多帖子,可以追溯到 2012 年前的日子,它们推荐了不同的解决方案。 One post recommends the following:
您可以指定一组可接受的证书策略,当服务器 验证客户端证书
虽然答案在一般意义上是有道理的,但作者从不深入探讨架构细节以进行这种交流。其他一些帖子推荐 JOSSO,以执行 SSO 功能,如前面提到的网关机制。这篇文章还讨论了使用PKCS11 通过使用制造商提供的驱动程序直接读取智能卡。还有一些没有答案的问题,例如Authenticating AD server user using DOD issued CAC in java。
考虑到其中一些帖子之间平均间隔 5 年,我不确定今天针对此问题的最佳做法是什么。网关方法是进行身份验证的理想方法吗?难道我的想法根本不适用,有更好的解决方案吗?
【问题讨论】:
标签: java authentication smartcard cac josso