Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 它是否需要在任何具有基本身份验证的请求中传递用户名:密码组合?_Java_Http_Authentication_Basic Authentication - Fatal编程技术网

Java 它是否需要在任何具有基本身份验证的请求中传递用户名:密码组合?

Java 它是否需要在任何具有基本身份验证的请求中传递用户名:密码组合?,java,http,authentication,basic-authentication,Java,Http,Authentication,Basic Authentication,我混淆了基本的http授权。需要使用授权头将每个请求发送到服务器,或者只发送第一个请求,然后浏览器记住身份验证令牌,如会话id?您必须在每个请求上发送授权头。但是,例如,Chrome会记住身份验证令牌,并在每次请求时自动发送它。是的,所以当用户首次登录时,会根据一些数据验证其凭据,如果正确,则会生成身份验证令牌 Auth令牌几乎是一个自包含的实体(它存储一些用密钥签名的数据) 此令牌在客户端获取存储(通常与刷新令牌一起) 对于所有后续请求,此令牌保存在授权标头中(承载者+令牌) 当服务器接收到这

我混淆了基本的http授权。需要使用
授权头将每个请求发送到服务器,或者只发送第一个请求,然后浏览器记住身份验证令牌,如会话id?

您必须在每个请求上发送授权头。但是,例如,Chrome会记住身份验证令牌,并在每次请求时自动发送它。

是的,所以当用户首次登录时,会根据一些数据验证其凭据,如果正确,则会生成身份验证令牌

Auth令牌几乎是一个自包含的实体(它存储一些用密钥签名的数据)

此令牌在客户端获取存储(通常与刷新令牌一起) 对于所有后续请求,此令牌保存在授权标头中(承载者+令牌)

当服务器接收到这个令牌时,它将使用密钥对其进行解密,该密钥之前用于对该令牌进行签名。并使用存储的数据

如果该身份验证令牌已过期,则刷新令牌将起作用

首先是一些链接
和jwt.io要使用基本身份验证获得令牌的感觉,每个请求都需要有一个
授权
HTTP头,格式如下:

Authorization: Basic <base64(username:password)>
基本身份验证是一种安全机制,因此在用户输入有效凭证后,浏览器会将其与每个页面请求一起发送

对于AJAX请求,您需要从代码中附加此标头。但是,您确实不应该使用基本身份验证来保护API,原因有很多:

  • 您将强制客户机将这些凭证保存在代码中,这样很容易被盗
  • 您必须将HTTPS与基本身份验证一起使用,因为base64编码根本不提供凭据保护
  • 用户名/密码组合的有效期通常比访问令牌的有效期长得多,从而增加了它们被盗的风险
  • 密码验证应该是一个缓慢的过程,以减轻暴力攻击,其中令牌验证只是验证数字签名
  • 每次必须通过网络发送用户名/密码都会增加试图破坏加密的人的攻击面

  • 更好的保护web API的替代方案是like或基于HMAC的身份验证方案like或

    ,这取决于服务器是否具有会话持久性。这不是基本身份验证规范的一部分。是。如果未提供,浏览器将为您执行此操作。然而,它总是为每个请求传递。问题是关于基本身份验证。您的答案是关于基于令牌的身份验证。这是两件完全不同的事情。看起来你是对的,从你的回答中学到了一些东西,谢谢
    WWW-Authenticate: Basic realm="myRealm"