MVC和的WebAPI之间的认证(独立域/应用)(Authentication between mv

2019-08-03 18:42发布

即时寻找好的想法/资源/实现了以下方案

一个MVC网站http://mywebsite.com

在A处的WebAPI REST服务http://myapi.com

重要提示 - 请注意不同的域/应用..

用户在该网站登录数据和被取出从经由JSONP / CORS的API

显然,我不希望用户在使用基本身份验证的WebAPI验证。 但是,API也暴露到Android / IOS的​​应用程序,所以我需要的基本身份验证

我想过从MVC站点返回一个令牌,然后在该网站的WebAPI写DelegatingHandler使用令牌进行身份验证,但我想一些投入,甚至可能是更好的解决方案

我做了一个漂亮的图只是为了occation:

Answer 1:

尽管JSONP作品也可以考虑使用CORS的WebAPI实现的一些例子在这里 。

考虑下面为您的令牌,而不是创建自己的标准(至少草案)。 JSON网络令牌(JWT)似乎是一个不错的方法规范这里包括格式,并确定加密或签名的方法。 有支持这种标记,如库Thinkteckture身份型号 本文介绍了一些图书馆和智威汤逊的用法。 谷歌有很好的开发者指南这里 。

免责声明,只考虑已经了解一些的OAuth和JWT标准化的上述批评 。

如果你没有使用一个HTTP头,我不知道你需要一个自定义标题 (@Vipul)“授权:”头是有这方面的信息。

如果您使用的是自定义的令牌,确保它有一个截止日期,可以考虑使用一个随机数 ,如果你想防止重放攻击,并签署或使用众所周知的算法加密。

你同意委托处理程序是把令牌验证的好地方。 一个ActionFilter被称为多堆栈中的超过必要后和中间地带将是实现System.Web.Http.AuthorizeAttribute 。



Answer 2:

令牌的解决方案听起来不错。

获得从MVC应用程序的身份验证令牌,您可以发送该令牌与一些自定义标题中的每个API请求。 创建ActionFilterAttribute和OnActionExecuting您可以验证令牌并采取相应的行动。



文章来源: Authentication between mvc and webapi (Separate domains/Applications)