The*_*ght 16 c# security oauth asp.net-web-api
我有一个Web API应用程序,我知道OAuth将是API的标准安全模型,其中Authentication Server将负责生成授权令牌,以便用户可以发送到我们的服务器并使用服务.
我对此很新,但我理解所涉及的角色:
但OAuth究竟在实践中是什么,而不是理论上的?它是一个.NET库吗?这是一家由独立公司提供的服务吗?这是我可以在我的本地开发机器上配置的东西,看看它是如何工作的?
如何开始使用OAuth来保护Web API应用程序?
jan*_*sen 17
OAuth是一个协议; 当前版本是OAuth 2.0.更多问题,该链接列出了各种技术中协议的几种实现.要与.NET Web API一起使用,您可能对DotNetOpenAuth感兴趣,它提供了OAuth 1和OAuth 2的实现.
我正在我正在使用的应用程序中使用DotNetOpenAuth来保护.NET Web API.我有一个OAuth2Handler扩展DelegatingHandler,它在传入的请求到达任何控制器之前插入到Web API管道中. OAuth2Handler执行以下操作:
ResourceServer ResourceServer.GetPrincipal()读取和解密访问令牌的调用(由其他地方发出AuthorizationServer并返回
OAuthPrincipal (在我的情况下,我正在读取DotNetOpenAuth实现允许您传递和创建的其他数据ClaimsPrincipal.)IPrincipal包含从访问令牌读取的用户信息包含到线程的User属性和当前HTTP上下文中,以便可以从ApiController.User服务控制器中的属性获取它: httpContext.User = Thread.CurrentPrincipal = principal;老实说,让这一切工作(例如,设置授权服务器,资源服务器,证书等)并非易事.不幸的是,DotNetOpenAuth网站似乎没有一个好的指南.如果您走这条路线,这里还有一些其他任务:
IAuthorizationServer - 这是DotNetOpenAuth提供的界面,允许您插入库并使用其实现来发布OAuth2访问令牌.您还需要实现INonceStore,ICryptoKeyStore并使用EntityFramework上下文进行存储.AuthorizationServer和ResourceServer每次使用证书来加密/解密的访问令牌,确保他们只是相互访问.我构建了一些自定义配置,因此我可以在web.config授权服务器应用程序和我的Web API服务(资源服务器)的文件中管理此配置.我希望这有助于您深入了解如何开始使用OAuth和.NET Web API.这是一篇博客文章,展示了其中的一些步骤.这个SO答案给出了图片客户端的更多高级细节.
(DotNetOpenAuth在线文档现在似乎已经失效了...抱歉没有链接到它们;显然它之前已经发生过).
| 归档时间: |
|
| 查看次数: |
14650 次 |
| 最近记录: |