OAuth 2.0 MAC Tokens
发布日期:2025-04-22 14:38:22 浏览次数:5 分类:精选文章

本文共 1816 字,大约阅读时间需要 6 分钟。

OAuth 2.0 MAC Tokens

摘要

本文阐述了HTTP MAC访问身份验证方案,一个基于MAC算法的HTTP认证方法,旨在为客户端和服务端之间提供安全的身份验证机制。文档详细说明了MAC证书的颁发、请求处理及验证流程,并探讨了相关的安全考虑和应用场景。


1. 简介

HTTP MAC访问身份验证方案与HTTP基本认证方案类似,但其核心区别在于:MAC方案不直接包含客户端的私密密钥,而是通过共享对称密钥的方式进行身份验证。该方案利用MAC算法为客户端发起的HTTP请求生成唯一的请求认证码(MAC值),服务端可通过验证MAC值来确认客户端的身份。

MAC方案的主要优势包括:

  • 简化了HTTPS需求:通过在TLS握手阶段建立共享密钥,服务端可在不安全的通道中保护客户端的会话信息。
  • 防止重放攻击:客户端提供唯一的timestamp和nonce,服务端可通过存储机制有效防止攻击者重复使用合法认证信息。
  • 适合无TLS环境:在网络环境不支持或不需要TLS的场景下,仍能提供基本的身份验证保护。

2. MAC证书颁发

本规范使用OAuth 2.0机制为客户端颁发MAC证书。颁发的MAC证书必须包含以下属性:

  • MAC key identifier:用于计算请求MAC值的密钥标识符。
  • MAC key:服务端共享的对称密钥,用于生成请求MAC值。
  • MAC算法:支持hmac-sha-1hmac-sha-256及其他预注册的算法。

3. 请求处理

客户端在发起已认证的HTTP请求时,需包含有效的MAC证书信息。具体要求如下:

  • Authorization请求头:形似RFC2617定义的架构,包含以下字段:

    • id:MAC key identifier,REQUIRED。
    • ts:请求时间戳,REQUIRED,格式为RFC2616标准的时间字符串。
    • nonce:客户端生成的唯一随机字符串,REQUIRED。
    • mac:请求MAC值,REQUIRED。
  • 规范化请求字符串:客户端需按照特定顺序拼接请求元素(如HTTP方法、URI、主机、端口等),并附加timestamp和nonce,形成规范化的请求字符串用于MAC计算。

  • MAC算法:支持hmac-sha-1hmac-sha-256等算法,计算方式如下:

    • hmac-sha-1:基于RFC2014定义的HMAC-SHA1算法。
    • hmac-sha-256:基于RFC2014定义的HMAC-SHA256算法。

4. 请求验证

服务端接收到认证请求后,需执行以下验证步骤:

  • MAC值验证:重新计算请求MAC值,并与客户端提供的mac值进行对比。
  • timestamp、nonce及key identifier唯一性验证:确保接收到的组合唯一且未超出有效时间范围。
  • 范围与凭证有效性验证:检查MAC证书的有效性及使用范围。
  • 服务端若发现验证失败,应返回401 Unauthorized状态码。


    5. 使用OAuth 2.0

    MAC方案可与OAuth 2.0集成,通过发布MAC-type access token的方式进行身份验证。服务端在颁发access token时,需包含以下参数:

    • access_token:MAC key identifier。
    • mac_key:服务端共享的MAC密钥。
    • mac_algorithm:请求MAC计算的算法。

    6. 安全考虑

    尽管MAC方案提供了基本的身份验证功能,但仍需注意以下安全问题:

    • MAC key传输:需通过传输层安全机制(如TLS/SSL)确保MAC key的安全传输。
    • 请求机密性:MAC方案不提供请求内容的机密性保护,建议结合其他安全机制(如SLS)进行防护。
    • 伪造攻击:服务端需验证服务器真实性,确保攻击者无法伪造合法认证信息。
    • 密钥安全:服务端需妥善保护MAC key,防止未经授权的访问。
    • 熵饥饿攻击:服务端需控制资源使用,防止攻击者通过大量请求耗尽系统资源。
    • 时间攻击:建议使用固定时间字符串比较器,避免通过时间差推测MAC值。
    • CSRF攻击:建议结合传统的CSRF防御机制(如绑定cookie或使用Origin header),以抵御跨站请求伪造攻击。

    7. 名词解释

    • MAC:消息认证码(Message Authentication Code)。
    • TLS:传输层安全(Transport Layer Security)。
    上一篇:OAuth 及 移动端鉴权调研
    下一篇:OAuth 2.0

    发表评论

    最新留言

    网站不错 人气很旺了 加油
    [***.192.178.218]2025年04月08日 20时51分59秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章