我对基本的http授权感到困惑。需要将每个请求发送到具有Authorization
标头的服务器或仅发送第一个请求,然后在该浏览器之后重新启动身份验证令牌,如会话ID?
答案 0 :(得分:1)
您必须在每个请求上发送Authorization标头。但是,例如Chrome会记住身份验证令牌并在每次请求时自动发送。
答案 1 :(得分:1)
是的,这是正确的,因此,当用户首次登录时,会根据某些数据验证其凭据,如果正确,则会生成身份验证令牌。
Auth令牌几乎是一个自包含的实体(存储一些用密钥签名的数据)
此令牌在客户端获取存储(通常与刷新令牌一起) 对于所有后续请求,此令牌保留在授权标头(承载+令牌)
中当服务器收到此令牌时,它会使用之前用于签署该令牌的密钥对其进行解密。并使用存储的数据
如果该身份验证令牌已过期,则刷新令牌开始起作用。
开头的一些链接 On a high level, how does OAuth 2 work? 和jwt.io一起获得令牌的感觉
答案 2 :(得分:0)
使用基本身份验证,每个请求都需要格式为Authorization
的HTTP标头:
Authorization: Basic <base64(username:password)>
其中用户名和密码使用冒号连接(&#39;:&#39;),结果字符串为base64 encoded。
如果Authorization标头不是请求的一部分,或者内部的凭据无效,则服务器应响应HTTP 401 Unauthorized响应并包含HTTP标头,如:
WWW-Authenticate: Basic realm="myRealm"
基本身份验证是implicit authentication scheme,因此在用户输入有效凭据后,浏览器会将其与每个页面请求一起发送。
对于AJAX请求,您需要从代码中附加此标头。但是,您确实不应使用基本身份验证来保护API ,原因如下:
保护网络API的更好替代方案是token based authentication schemes,例如OAuth2或基于HMAC的身份验证方案,例如Hawk或AWS