带有X.509证书的Spring Security

我正在慢慢地试图配置Spring Security 3.0.0来保护应用程序。

我已将服务器(jetty)配置为需要客户端身份validation(使用智能卡)。 但是,我似乎无法正确获取applicationContext-security.xml和UserDetailsS​​ervice实现。

首先,从应用程序上下文文件:

        

UserDetailsS​​ervice如下所示:

 public class AccountServiceImpl implements AccountService, UserDetailsService { private static final Log log = LogFactory.getLog(AccountServiceImpl.class); private AccountDao accountDao; @Autowired public void setAccountDao(AccountDao accountDao) { this.accountDao = accountDao; } public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException, DataAccessException { log.debug("called loadUserByUsername()"); System.out.println("called loadByUsername()"); Account result = accountDao.getByEdpi(s); return result; } 

}

该应用程序有一个带有“登录”按钮的“首页”,因此访问该应用程序不需要任何forms的身份validation。

任何帮助表示赞赏。

该应用程序有一个带有“登录”按钮的“首页”,因此访问该应用程序不需要任何forms的身份validation。

这里有点不对劲。 如果您将servlet容器设置为要求客户端身份validation,则不能拥有这样的open-for-all页面,在这种情况下,对于没有智能卡的用户,auth握手将不会成功,他们甚至不会看到容器错误页面 – 它将是浏览器而错误。

可以做容器以允许客户端授权并使登录页面对匿名用户开放并通过SpringSec保护其他页面。 但我不建议将此用于smartcard-PKI应用程序。 智能卡身份validation意味着安全性的重要性,让非智能卡用户在容器握手时尽早抛出是更可靠的。 在这种情况下,您仍然可以在另一个端口上拥有用户友好的登录页面,其中“登录”按钮链接到您的应用程序。

如果您需要有关SpringSecurity安装的帮助,请在post中添加有关问题的更多信息。

从配置的角度来看,这看起来很好。 你看到的错误是什么? 您是否看到使用X.509证书中的CN调用了UserDetailsS​​ervice?