我正在开始一个项目,以建立一个网站/网络服务,这将被人们通过浏览器登录使用用户名/密码,但同一网站将被访问的设备。设备将使用客户端证书向服务进行身份验证。
这将使用Web API/MVC4构建,并将使用基于声明的身份验证(最终还将使用授权)。我习惯于使用基于声明的身份验证来验证登录的用户,并且我认为我已经很好地掌握了如何使用客户端证书来验证访问服务的设备。
我的问题围绕着能否在同一站点中支持这两种类型的身份验证。用户将在导航到:http://product.site.com/manage时登录,并且设备将向:http://product.site.com/updates发出请求。我还没有机会对此进行编码,但我预计我最终会遇到相互冲突的身份验证。例如,当设备发出请求时,用户名/密码身份验证将尝试对用户进行身份验证,但永远不会通过客户端证书验证。
我有一种感觉,我可能最终不得不托管两个独立的网站,一个用于网站,另一个用于设备使用的服务,以便每个网站都可以单独配置用于身份验证。
有没有人有实现这样的东西或建议的经验?
发布于 2013-10-05 02:42:46
在webapi部分,你可以使用messagehandler。对于用户名、口令、auth和证书,都可以有一个消息处理程序,用于在auth成功时设置currentprincipal
https://stackoverflow.com/questions/19183402
复制相似问题