【问题标题】:Asp Web API. JWT Authentication vs username / password AuthenticationASP Web API。 JWT 身份验证与用户名/密码身份验证
【发布时间】:2018-07-13 00:19:10
【问题描述】:

抱歉这个新手问题。

我对网络安全还很陌生。

有人可以向我解释一下,当我可以包含 { username |每个 API 请求的电子邮件 } / 密码?

【问题讨论】:

    标签: asp.net-web-api asp.net-core-webapi websecurity


    【解决方案1】:

    大多数情况下,这是一个关注点分离的事情。 JWT 是一种授权请求的方法,而用户名/密码是一种身份验证的方法。关键区别在于身份验证是您理想情况下只需要执行一次的操作,并且应该由负责该操作的专用端点完成。对于其他所有请求,您只需确认您从初始身份验证中收到的授权。

    如果您要在每个请求中发送用户名和密码,那么每个端点都必须处理身份验证逻辑,这将是一场噩梦。使用 JWT,端点可以简单地验证它是否有效并继续执行它实际负责的工作。

    JWT 只是一种授权方法。在传统的网站风格应用程序中,这将由 cookie 处理。然后,这使用户能够登录一次,然后继续浏览站点的受保护区域,而无需再次登录。相当于您的建议基本上就像强制用户每次单击链接时再次登录,只是为了查看下一页。

    【讨论】:

    • 嗨@[Chris Pratt],非常感谢您的澄清。我正在尝试消化您的建议。我仍然觉得我没有完全理解。使用网络核心身份(我相信这是通过使用 cookie 发生的)来处理 API 授权有什么问题?一个例子:pioneercode.com/post/…。我也不明白,你提到了往返。但是对于企业级 JWT,在每个 API 请求上,令牌都会被发送到另一个端点进行验证。这也是性能成本
    • HTTP 是一种无状态协议。每个请求都是唯一的,因此如果该请求需要访问受保护的内容,则它必须包含为其提供访问权限的内容。在 API 的世界中,这通常是 Authorization 标头(JWT 所在的位置)。对于传统网站,这将是一个 cookie。
    猜你喜欢
    • 2016-04-24
    • 2017-09-11
    • 2019-03-15
    • 2016-04-12
    • 2017-07-30
    • 2018-03-26
    • 2017-03-09
    相关资源
    最近更新 更多