asp.net-mvc – 客户端存储的身份验证令牌在哪里?
我想在Azure上托管一个MVC 4 Web API项目.我需要确保可以从任何第三方应用程序和任何浏览器访问API.实现一个简单地返回
JSON的RESTful API对我来说听起来不错.现在,对我来说最大的挑战是创建一个与平台无关的身份验证机制.我不想使用默认的MembershipProvider.我将使用SSL.我也不会使用FormsAuthentication.所有API调用都将通过
JQuery / AJAX进行.
我正在尝试理解基于令牌的身份验证.这就是我认为我能做到的: 现在,我不明白的部分是,客户端在哪里存储令牌?它是保存在cookie中的吗?如果是这样,非浏览器第三方应用程序在哪里保存身份验证令牌?令牌被盗是多么容易? 解决方法
身份验证令牌由ASP.net成员资格提供程序和身份验证模块存储在cookie中.在客户端,HTTP客户端库可以处理cookie.表单身份验证也可以进行无cookie身份验证.如果频道未加密(ssl或https),则中间人嗅探器可能会盗取令牌.安全的websapps为身份验证cookie设置了一个小超时,以便一小段不活动时间会使会话到期,从而使cookie失效.
但是,对于API身份验证,身份验证机制可能不同.每个呼叫都可以独立验证.因此,无需为客户端维护令牌.每个API调用的Authorization标头应该有一些服务器可以识别的秘密.亚马逊AWS使用这种API身份验证方式,其他许多方式也遵循这种风格.使用webapi,您可以实现此类身份验证. >客户端具有由服务器发布的帐户的私钥,或者由用户导入帐户的服务器. 2.客户端像往常一样调用API,但将一些信息放入Authorization标头中.该信息将是与客户的帐户ID和日期混合发送的数据的HMAC. 以下是HTTP API中的授权标头的外观 Authorization: account-id HMAC_OF_WITH_SECRET_KEY(data + account-id + GMT Date that will be in date header) 3.在服务器端(WebApi端),您需要为WebApi控制器提供自定义AuthorizeAttribute.这些自定义身份验证将接收来自客户端的请求,并反转客户端所做的事情.服务器具有客户端私钥,它可以在客户端完成时排列数据并再次计算HMAC.如果此HMAC与Authorization标头中发送的HMAC相同,则它是帐户或用户标识的身份验证客户端.请注意,授权标头具有帐户ID HMAC密钥.因此,在此标头服务器中使用account-id或user-id可以知道哪个客户端正在请求. 此机制涵盖身份验证和数据完整性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何使用Castle.Windsor传递带有依赖注入的
- asp.net – .Net LoginControls – 用户无法在Firefox中注销
- ASP.NET Core应用中如何记录和查看日志
- ASP.NET MVC学习教程之Razor语法
- asp.net-mvc – 抛出一个404像StackOverflow的,没有重定向,
- asp.net – System.Web.Security.MembershipProvider在哪里
- asp.net-core – 如何在VS2017 final中定位多个框架?
- asp.net – 有没有办法每天在.Net Web应用程序中运行一个进
- asp.net – Shutterfly Order API.
- treeview 和数据源绑定
- asp.net-web-api – 使用WIF和OWIN中间件的角色与
- ASP.NET:将ViewState移动到页面底部
- asp.net-mvc – ASP.NET MVC – 构建URL或链接的
- asp.net-mvc-5 – MVC 5 – 向用户添加声明
- asp.net-mvc – 在Visual Studio 2015中的ASP.NE
- ASP.NET发布Web API接口时请求方式版本差异问题
- asp.net-mvc – 创建/编辑父和子窗体MVC
- 如何在ASP.NET MVC中保留/保护Edit中的某些字段
- 使用CodeMirror在浏览器中实现编辑器的代码高亮效
- asp.net-mvc – 如何在DropDownListFor的扩展中添