我正在为以下场景寻找好的想法/资源/实现
MVC 网站位于http://mywebsite.com http://mywebsite.com
Webapi REST 服务位于http://myapi.com http://myapi.com
重要信息 - 请注意单独的域/应用程序..
用户登录网站并通过 JSONP/CORS 从 API 获取数据
显然我不希望用户使用基本身份验证在 Web api 上进行身份验证。但API也暴露给Android/IOS应用程序,所以我需要基本的身份验证
我考虑过从 MVC 站点返回一个令牌,然后在 webapi 站点上编写一个 DelegatingHandler 来使用该令牌进行身份验证,但我想要一些输入,或者甚至更好的解决方案
我专门为这个场合制作了一个漂亮的图表:
虽然 JSONP 也可以工作,但也可以考虑使用CORS http://en.wikipedia.org/wiki/Cross-origin_resource_sharingWebApi 实现的一些示例here https://stackoverflow.com/questions/12732147/cors-with-webapi-for-xmlhttprequest.
考虑遵循您的代币标准(至少是草案),而不是创建自己的标准。 Json Web Token (JWT) 似乎是规范的一个好方法here http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html包括格式并确定加密或签名方法。有一些库支持这种令牌,例如思维架构身份模型 https://github.com/thinktecture/Thinktecture.IdentityModel.40 本文 http://leastprivilege.com/2012/05/25/json-web-token-jwt-support-in-thinktecture-identitymodel/涵盖了该库和 JWT 的一些用法。谷歌有一个很好的开发指南here https://developers.google.com/accounts/docs/OAuth2ServiceAccount.
免责声明,仅在阅读了一些 OAuth 和 JWT 标准化后才考虑上述内容批评 http://hueniverse.com/2012/07/oauth-2-0-and-the-road-to-hell/.
如果您确实使用了 HTTP 标头,我不确定您是否需要自定义标头 https://stackoverflow.com/questions/7802116/custom-http-authorization-header(@Vipul)“授权:”标头就是用于此类信息的。
如果您使用自定义令牌,请确保它有到期日期,请考虑使用nonce http://en.wikipedia.org/wiki/Cryptographic_nonce如果您想防止重放攻击并使用众所周知的算法进行签名或加密。
同意你的观点委托处理程序 http://codebetter.com/johnvpetersen/2012/04/04/moving-from-action-filters-to-message-handlers/是放置令牌验证的好地方。 ActionFilter的调用方式很多晚于堆栈中所需的时间 http://blogs.msdn.com/b/kiranchalla/archive/2012/05/06/asp-net-mvc4-web-api-stack-diagram-currently-in-development.aspx中间立场是实施System.Web.Http.AuthorizeAttribute http://www.codeproject.com/Tips/376810/ASP-NET-WEB-API-Custom-Authorize-and-Exception-Han.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)