【问题标题】:Web API Authentication Basic vs BearerWeb API 身份验证基本与承载
【发布时间】:2016-03-04 22:57:13
【问题描述】:

我在我的 Web API 应用程序中创建了基于 JWT 的身份验证。 我无法弄清楚两者之间的区别

  1. 基本令牌
  2. 不记名令牌

有人可以帮帮我吗?

【问题讨论】:

    标签: basic-authentication jwt bearer-token


    【解决方案1】:

    基本身份验证将凭据作为用户 ID/密码对传输,使用 base64 编码。客户端发送带有 Authorization 标头的 HTTP 请求,该标头包含单词 Basic 单词后跟一个空格和 base64-encoded 字符串 username:password。

    授权:基本 ZGVtbzpwQDU1dzByZA==

    注意:对于基本身份验证,由于用户 ID 和密码以明文形式通过网络传递(它是 base64 编码,但 base64 是可逆编码),因此基本身份验证方案不安全。 HTTPS / TLS 应与基本身份验证结合使用。


    不记名身份验证(也称为令牌身份验证)具有称为不记名令牌的安全令牌。 “Bearer authentication”这个名称可以理解为“授予对这个令牌的持有者的访问权”。不记名令牌是一个神秘的字符串,通常由服务器响应登录请求而生成。客户端在向受保护资源发出请求时必须在 Authorization 标头中发送此令牌:

    授权:承载

    注意:与基本身份验证类似,承载身份验证只能通过 HTTPS (SSL) 使用

    更多信息link1,link2

    【讨论】:

    • 所以这两个都是授权而不是真正的授权。在第一个中,您发送 base64 编码的字符串并获得授权,而在后者中,您返回一个令牌并使用它来访问资源
    • 通过用户名/密码传递令牌有什么好处?
    • @MuhammadUmer 您可以撤销令牌并授予它们精细访问权限(即仅读取访问权限)。
    • 我找到了答案,那就是您不必使用令牌进行数据库读取,您可以使用加密来验证令牌,最适合没有共享会话状态的微服务,尽管有负载均衡器,它可以将一个用户固定到一项服务,但它仍然是高性能的。
    • 对我来说最好的答案。只是想在某些场景中添加,例如支付网关,您需要两种类型的身份验证,一个使用基本信息进行身份验证的步骤,然后接下来的通信将使用 Brear ...Jwt.. 令牌。后面的 jwt 令牌来自第一个返回的 access_key 令牌。
    【解决方案2】:

    Basic 和 Digest 身份验证方案专用于使用用户名和密码进行身份验证(请参阅 RFC7616RFC7617)。

    承载身份验证方案专用于使用令牌进行身份验证,并由RFC6750 描述。即使此方案来自 OAuth2 规范,您仍然可以在客户端和服务器之间交换令牌的任何其他上下文中使用它。

    关于 JWT 认证,因为它是一个令牌,所以最好的选择是 Bearer 认证方案。 尽管如此,没有什么能阻止您使用适合您要求的自定义方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-31
      • 1970-01-01
      • 2014-04-09
      • 2015-12-25
      • 2013-06-11
      • 1970-01-01
      • 2019-06-15
      • 2011-06-30
      相关资源
      最近更新 更多