asp.net – Web API中的客户端证书和基于声明的身份
如果访问通过HTTPS实现为ASP.NET Web API Controller的端点的客户端提供客户端证书,则该证书可通过Request.GetClientCertificate获得.但是,我想知道:是否有可能以基于声明的模型的形式提供与.NET 4.5中的安全模型集成的信息?
我想这样做的主要原因是我需要不同的客户端才能以不同的方式进行身份验证以访问相同的服务,因此我更愿意从证书等细节中抽象出来.我希望我的控制器能够根据当前用户的索赔做出决策,而不必担心这些索赔的起源. 我知道有一个X509CertificateClaimSet类型,这使得它看起来像自然流程: >通过TLS / SSL传递的客户端证书通过某种令牌映射过程表示为X509CertificateClaimSet(类似于您可以用于ACS的联合提供程序生成的传入cookie由SessionSecurityTokenHandler处理的方式) 甚至还有一个X509SecurityTokenHandler,听起来应该这样做.但是,据我所知,这是针对在发送的消息中处理基于证书的身份验证的情况而设计的 – 它似乎没有任何支持证书的所有权证明发生在传输级别,即作为TLS / SSL握手的一部分. 我想知道是否需要编写自己的模块来执行此操作.从理论上讲,看起来可能只是处理AuthenticateRequest事件,查看证书请求,如果存在,则从证书构建X509CertificateClaimSet.但是……那又怎样?我只是创建自己的ClaimsPrincipal并替换现有用户吗?或者是否有一些“正确”的方式将我发现的声明添加到集合中? (客户端证书不一定是声明的唯一来源 – 我的应用程序已经在使用与ACS集成的声明.是否有一种标准机制来确保所有可能的声明来源都正确合并?) 它看起来像SessionAuthenticationModule(SAM)是当前提供声明主体的身份模型组件,它只是替换先前在上下文中的那个以及当前线程的用户.但它似乎提供了可扩展性 – 如果覆盖其ValidateSessionToken,则返回构成主体的ClaimsIdentity对象集.所以在理论上,我可以覆盖它并在那时添加任何其他声明. 但我不确定这是不行的方式.据我所知,SAM在ClaimsAuthenticationManager完成其声明转换后执行此操作.或者声称转换错误的模型与这里一起去? 解决方法
看看
here:客户端证书身份验证和声明生成是Thinktecture.IndetityModel的一部分.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何在Html.RenderAction(MVC3)中发送模型对
- asp.net-web-api – Ajax Post:405方法不允许
- asp.net – 向通过Google OAuth2创建的用户添加角色或声明
- asp.net – 太多的Cookie OpenIdConnect.nonce导致错误页面
- asp.net – 在测试期间如何使电子邮件到本地文件夹?
- asp.net-mvc-3 – 如何将模型绑定中使用的所有ValueProvide
- asp.net – Web API外部承载未经授权
- Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文
- asp.net – 如何绑定gridview中的下拉列表?
- asp.net-mvc-4 – 在ASP.NET MVC4 WebAPI中实现ETag支持
- 在ASP.NET MVC 3 Web应用程序项目之间共享视图
- asp.net-mvc – 我一直在使用MVC3获取HTML5语法错
- ASP.NET核心Facebook身份验证中间件用户图片
- asp.net-mvc – 覆盖控制器AuthorizeAttribute只
- asp.net-mvc-3 – 实体框架检测到冲突的更改.尝试
- asp.net-mvc – 注入AutoMapper实例
- asp.net-core-mvc – 在Mvc6中,WriteAsync函数在
- asp.net-mvc – MvcHtmlString.Create()和Html.R
- asp.net-core – app.UseErrorHandler()可以访问
- asp.net-mvc-3 – DropDownListFor中的ViewBag属