首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat 6 Ssl和表单身份验证同时进行

Tomcat 6 Ssl和表单身份验证同时进行
EN

Stack Overflow用户
提问于 2012-05-30 21:50:03
回答 3查看 507关注 0票数 2

在Tomcat 6.xxx中可以同时使用两种身份验证方法吗?

故事:现在我的应用程序运行在端口80和443上。在443连接器中有clientAuth="want“参数。如果客户端超过80,则不需要证书。但是当客户端超过443并且客户端在读卡器中有智能卡时,即使客户端不想登录,证书也会被自动询问。

对于使用用户证书登录,我有FormFallBack认证器,这意味着如果客户端没有发送证书(他的读卡器中没有智能卡)或者认证器认证失败,认证器直接转到表单,他可以使用密码和用户名登录。我的英语不是很好,所以下面是类似系统的更好的概述:http://wiki.apache.org/tomcat/SSLWithFORMFallback

但是,如果浏览器多次询问证书,则询问用户证书的过程对用户来说是恼人的;如果用户不想使用智能卡登录(但他在阅读器中有智能卡),则他想使用用户名和密码登录。

所以有以下选项:我有登录页面,其中有用户名和密码字段和登录按钮。如果用户按下登录按钮,他将使用用户名和密码登录(定向到form authenicator)。

但在同一页面上有“使用智能卡登录”按钮。如果他按下此按钮,服务器将要求用户证书并将其提供给身份验证器。

希望你能理解这个问题。

EN

回答 3

Stack Overflow用户

发布于 2012-05-30 22:50:57

我相信您必须编写自己的Tomcat身份验证器来理解这些需求。

这实际上可能是不可能的,因为AFAICT要求能够在每个用户的基础上重新配置SSL连接器的行为,并且您不能在SSL协商发生之前为用户配置连接器。

票数 1
EN

Stack Overflow用户

发布于 2012-05-30 23:07:16

如果在servlet会话中保持身份验证状态,则可以通过提供两个不同的按钮(或链接),通过表单或客户端证书登录。

我在这里假设您可以使用像/login/form这样的路径作为表单,/login/cert作为通过客户端证书进行身份验证的路径。

当使用SSL/TLS重新协商访问/login/cert时,您可以按需触发客户端证书身份验证。为此,在连接器配置中使用clientAuth="false",但使用<auth-method>CLIENT-CERT</auth-method>在webapp中的该路径上放置一个安全约束:这将在需要时触发重新协商。

为此,您需要一个版本的JRE that supports RFC 5746 (OracleJava6 r22或更高版本),而且您的客户机也应该支持它。现代版本的浏览器/操作系统现在应该支持这一点。

票数 1
EN

Stack Overflow用户

发布于 2012-05-31 06:03:22

请参阅Google Code中的AuthenticRoast项目。它做的就是这件事,甚至更多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10817683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档