c# - mvc 和 webapi 之间的身份验证(单独的域/应用程序)

标签 c# asp.net-mvc authentication cross-domain asp.net-web-api

我正在为以下场景寻找好的想法/资源/实现

位于 http://mywebsite.com 的 MVC 网站

位于 http://myapi.com 的 Webapi REST 服务

重要——请注意单独的域/应用程序..

用户登录网站,数据通过 JSONP/CORS 从 API 获取

显然我不希望用户使用基本身份验证在 webapi 上进行身份验证。但是 API 也暴露给 Android/IOS 应用程序,所以我需要基本授权

我考虑过从 MVC 站点返回一个 token ,然后在 webapi 站点上编写一个 DelegatingHandler 以使用该 token 进行身份验证,但我想要一些输入,或者甚至可能是更好的解决方案

我为这个位置做了一个漂亮的图表:

Diagram

最佳答案

虽然 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/

相关文章:

c# - 快速排序算法抛出stackoverflow异常错误

c# - 我需要端口转发吗?

c# - ASP.NET MVC 4 ViewModel查询

asp.net-mvc - MVC Razor @foreach

c# - 如何读取和处理属于一起的多行?

javascript - 当 Javascript Validation 返回 false 时如何防止服务器端操作?

ASP.NET 数据注释 : How to validate a List of string?

http - 使用 HTTPS 时 OAuth 是否无关紧要?

Android:客户端-服务器,用户认证

.htaccess - htaccess htpasswd 没有提示