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

本文关键字:于声明 声明 身份验证 证书 用户 密码 客户端 | 更新日期: 2023-09-27 18:34:06

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

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

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

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

没有人有实施这样的东西的经验或建议?

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

在 webapi 部分中,您可以使用消息处理程序。您可以为用户名密码身份验证和证书设置一个消息处理程序,该处理程序在身份验证成功时设置当前主体