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

Lar*_*sen 16 c# authentication asp.net-mvc cross-domain asp.net-web-api

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

MVC网站http://mywebsite.com

http://myapi.com上的 Webapi REST服务

重要信息 - 请注意单独的域/应用程序..

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

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

我已经考虑过从MVC站点返回一个令牌,然后在webapi站点写一个DelegatingHandler来使用该令牌进行身份验证,但我想要一些输入,或者甚至更好的解决方案

我做了一个漂亮的图表只是为了掩盖:

图

Mar*_*nes 9

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

考虑遵循标记(至少是草稿)而不是创建自己的标记.Json Web Token(JWT)似乎是一个很好的方法,这里的规范包括格式并确定加密或签名方法.有一些库可以支持这种令牌,例如Thinkteckture Identity Model, 本文将介绍该库和JWT的一些用法.谷歌在这里有一个很好的开发指南.

免责声明,只考虑以上内容,了解了一些OAuth和JWT标准化批评.

如果您确实使用了HTTP标头,我不确定您是否需要自定义标头(@Vipul),"Authorization:"标头用于此类信息.

如果您使用的是自定义令牌,请确保它具有过期日期,如果您想要防止重放攻击并使用众所周知的算法进行签名或加密,请考虑使用nonce.

同意委托处理程序是放置令牌验证的好地方.在堆栈中调用ActionFilter的时间要晚得多,中间地带将实现System.Web.Http.AuthorizeAttribute.