使用用户名/密码或客户端证书进行基于声明的身份验证

时间:2013-10-04 14:09:13

标签: c# asp.net-mvc-4 authentication asp.net-web-api claims-based-identity

我正在开始一个项目来构建一个网站/网络服务,该网站将通过浏览器使用用户名/密码登录,但设备将访问同一网站。设备将使用客户端证书对服务进行身份验证。

这将使用Web API / MVC4构建,并将使用基于声明的身份验证(并最终使用授权)。我很乐意使用基于声明的身份验证来验证登录用户,并且我认为我已经很好地掌握了使用客户端证书来验证访问该服务的设备。

我的问题围绕能够在同一站点中支持两种类型的身份验证。用户在导航到http://product.site.com/manage时会登录,设备会向http://product.site.com/updates发出请求。我还没有机会进行编码,但我希望我最终会遇到冲突的身份验证。例如,当设备发出请求时,用户名/密码auth将尝试对用户进行身份验证,并且它永远不会进入客户端证书验证。

我感觉我最终可能需要托管2个单独的站点,一个用于网站,另一个用于设备使用的服务,以便每个站点可以单独配置以进行身份​​验证。

有没有人有实施此类或建议的经验?

1 个答案:

答案 0 :(得分:1)

在webapi部分中,您可以使用messagehandler。你可以为用户名密码auth和cert设置一个消息处理程序,它在auth成功时设置currentprincipal