Java WebApp中的CAC身份验证

Ste*_*eve 1 java authentication weblogic11g cac

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

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

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

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

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

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

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

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

哪种解决方案更容易?

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

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

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

史蒂夫

imj*_*osh 5

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

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

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

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

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

祝好运!