Java WebApp中的CAC身份validation

我看到stackoverflow上还有一些其他Java和CACpost。 我是所有这些东西的初学者,我仍在尝试一个框架,该做什么以及在我的脑海中去哪里。

我正在为一个大型组织工作,该组织使用带有Windows 7盒子的CAC来validation想要进入他们PC的用户。 他们将CAC固定在键盘上并键入PIN码。

我的老板想改变我们的Java Webap,这样如果用户在他们的计算机上安装了CAC,它就不会让用户进行身份validation。 如果没有,他们将通过传统的LDAP登录。

我们正在使用WebLogic 11g和Java 6。

从谷歌搜索似乎有两种方法:

  1. 实现applet以读取用户的CAC并将SSL证书发送到webapp。

  2. 在Web服务器中实现“相互SSL身份validation”,这将导致浏览器将CAC上的SSL证书发送到Web应用程序

我对我的选择有正确的评价吗?

哪种解决方案更容易?

从长远来看哪个更麻烦,更强大?

我对SSL几乎一无所知,这似乎在两种解决方案中都很常见。 我发现了一些关于抽象概念的SSL教程。 任何人都可以推荐一个很好的教程,我想做什么?

非常感谢您提供任何信息或提示

史蒂夫

  1. 实现applet以读取用户的CAC并将SSL证书发送到webapp。

  2. 在Web服务器中实现“相互SSL身份validation”,这将导致浏览器将CAC上的SSL证书发送到Web应用程序

你会想做#2。 你真的不想搞乱智能卡硬件/软件。 让操作系统完成所有工作。

我已经在IIS上完成了这项工作,但一般来说,为了实现这一点,您需要将Web服务器配置为需要客户端证书并信任DoD CA. 您可能需要配置Web服务器以向其信任的CA通告客户端。 如果Win7客户端具有由您信任的CA签名的客户端证书,则客户端将尝试使用它。 如果是智能卡证书,Windows将自动提示用户输入引脚; 你不必担心。 如果用户键入了正确的引脚,则证书将发送到您的Web服务器,然后该服务器应该能够通过CAvalidation证书。 如果它是有效证书,则您的软件可以解析证书中的字段并使用这些值来帮助validation用户(即,尽管拥有有效证书,但实际上是否允许用户根据其姓名/电子邮件地址登录/等等)。 这取决于你如何从那里处理它。

如果您忘记用户正在使用智能卡或CAC,您将更容易理解这一点并查找信息,并且开始时您将使用客户端证书进行身份validation 。 首先创建一个自签名CA测试证书。 然后为您的Web服务器创建服务器证书,并为您的测试CA签署一个客户端证书。 在客户端和服务器上添加测试CA证书作为受信任的根证书。 然后尝试编写一个小测试应用程序,该应用程序使用客户端证书对您的Web服务器进行身份validation。 完成后,您可以添加DoD CA并尝试从CaC证书中提取信息。

祝好运!