我正在为以下场景寻找好的想法/资源/实现
位于 http://mywebsite.com 的 MVC 网站
位于 http://myapi.com 的 Webapi REST 服务
重要——请注意单独的域/应用程序..
用户登录网站,数据通过 JSONP/CORS 从 API 获取
显然我不希望用户使用基本身份验证在 webapi 上进行身份验证。但是 API 也暴露给 Android/IOS 应用程序,所以我需要基本授权
我考虑过从 MVC 站点返回一个 token ,然后在 webapi 站点上编写一个 DelegatingHandler 以使用该 token 进行身份验证,但我想要一些输入,或者甚至可能是更好的解决方案
我为这个位置做了一个漂亮的图表:
最佳答案
虽然 JSONP 也可以考虑使用 CORS WebApi 实现的一些示例 here .
考虑为您的代币遵循一个标准(至少是一个草案),而不是创建您自己的代币。 Json Web Token (JWT) 似乎是一种很好的方法规范 here包括格式并确定加密或签名方法。有一些库支持这种 token ,例如 Thinkteckture Identity Model this article涵盖了该库和 JWT 的一些用法。 Google 有很好的开发指南 here .
免责声明,仅考虑以上阅读的一些 OAuth 和 JWT 标准化 criticisms .
如果您确实使用了 HTTP header ,我不确定您 need a custom header (@Vipul)“授权:” header 用于此类信息。
如果您使用的是自定义 token ,请确保它有到期日期,请考虑使用 nonce如果您想防止重放攻击并使用众所周知的算法进行签名或加密。
同意你的观点delegating handler是放置 token 验证的好地方。 ActionFilter 被称为很多 later than necessary in the stack中间立场是实现 System.Web.Http.AuthorizeAttribute .
关于c# - mvc 和 webapi 之间的身份验证(单独的域/应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13796570/