加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 客户端存储的身份验证令牌在哪里?

发布时间:2020-12-16 03:22:06 所属栏目:asp.Net 来源:网络整理
导读:我想在Azure上托管一个MVC 4 Web API项目.我需要确保可以从任何第三方应用程序和任何浏览器访问API.实现一个简单地返回 JSON的RESTful API对我来说听起来不错.现在,对我来说最大的挑战是创建一个与平台无关的身份验证机制.我不想使用默认的MembershipProvide
我想在Azure上托管一个MVC 4 Web API项目.我需要确保可以从任何第三方应用程序和任何浏览器访问API.实现一个简单地返回 JSON的RESTful API对我来说听起来不错.现在,对我来说最大的挑战是创建一个与平台无关的身份验证机制.我不想使用默认的MembershipProvider.我将使用SSL.我也不会使用FormsAuthentication.所有API调用都将通过 JQuery / AJAX进行.

我正在尝试理解基于令牌的身份验证.这就是我认为我能做到的:
? – 客户端通过HTTPS将其用户凭据发送到服务器
? – 服务器对客户端进行身份验证,创建令牌,将其与日期时间戳和有效期一起保存到数据库,然后将其发送回客户端
? – 客户端每次访问API时都会将令牌发送到服务器

现在,我不明白的部分是,客户端在哪里存储令牌?它是保存在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可以知道哪个客户端正在请求.

此机制涵盖身份验证和数据完整性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读