我对基本的HTTP授权感到困惑。是需要在每个请求中都发送 Authorization
头部,还是只需要在第一个请求中发送一次并让浏览器记住授权令牌,就像会话ID一样?
我对基本的HTTP授权感到困惑。是需要在每个请求中都发送 Authorization
头部,还是只需要在第一个请求中发送一次并让浏览器记住授权令牌,就像会话ID一样?
每次请求都需要发送Authorization头信息。但例如Chrome会记住授权令牌并在每次请求时自动发送。
Authorization
的HTTP头中具有身份验证信息。Authorization: Basic <base64(username:password)>
在这里,用户名和密码会使用冒号(“:”)连接起来,然后生成的字符串进行 base64编码。
如果授权头不是请求的一部分,或者其中的凭据无效,则服务器应该以HTTP 401未经授权响应作出回应,并包括类似于以下的HTTP头:
WWW-Authenticate: Basic realm="myRealm"
基本认证是一种隐式身份验证方案,因此用户输入有效凭据后,浏览器将在每个页面请求中发送它们。
对于 AJAX 请求,您需要从代码中附加此标头。然而,您真的不应该使用基本认证来保护 API,原因如下:
没错,第一次用户登录时,会对其凭据进行验证,如果正确,则生成一个授权令牌。
授权令牌是一个自包含实体(其中存储了一些使用密钥签名的数据)
此令牌与刷新令牌一起存储在客户端(通常是在客户端存储)
对于所有后续请求,此令牌都保留在授权标头中(Bearer + token)
当服务器接收到此令牌时,它使用先前用于签署该令牌的密钥对其进行解密。并使用存储的数据
如果授权令牌已过期,则使用刷新令牌。
以下是一些链接 OAuth 2的高级别工作原理 和jwt.io以获取有关令牌的感觉