HTTP Auth

2023-05-16

文章目录

    • 关于 HTTP Auth
    • 1、session
    • 2、authorization 的 http header
      • 2.1 Basic 形式
      • 2.2 Bearer 类型 (token)


参考资源

  • free-coder:【web】权限认证的常见方式
    https://www.bilibili.com/video/av74292592?from=search&seid=16832319085872437451

  • free-coder:cookie/session/localstorage/sessionstorage web中的k-v存储们有什么区别?
    https://www.bilibili.com/video/av60633692


关于 HTTP Auth

  • authentication 登录; 如 401 错误
  • authorization 权限;如 402 错误,权限不足。

HTTP 是无状态的,无法确认现在的请求,是否是用户之前发起过的;所以有以下认证方式


1、session

是存储在 server 端,以 key-value 结构存储到内存中;

http 第一次请求进行登录,服务端会记录 session ID,包含用户端元数据信息(账号、密码,uuid 等),并将 session ID 返回给客户端。

下一次请求,客户端会将 session ID 放到 cookie 中,传给服务端;服务端会拿 session ID 去查找是否存在对应的 用户元数据信息。


缺点:

cookie 不能被其他人获取到。

session 默认存在当前服务器;如果是使用 ngix 分布式处理,比如代理了三台服务器,机器A和B 不一定都存了用户session。对应的解决方案是,ngix 可以配置基于客户端 IP 哈希的负载均衡方案;或者将 session 存到共享的 server 上,如 radius 上。


2、authorization 的 http header

形式就是 type_xxx,对应的是 authorization 的具体内容;内容含以下有两种形式

2.1 Basic 形式

对用户的 username 和 password 进行 base64 编码。

服务端收到请求后,对header 中的 authorization 字段进行解析。如果发现是 Basic 类型,则将内容进行base64 解码;然后将账号密码以: 分割获取。

一般用 https 请求,不用担心被抓包截获。

比较高效。


缺点:每次都穿 username 和 password,导致服务器每次都要访问一次数据库再进行一次用户认证,导致性能差一点。


2.2 Bearer 类型 (token)

内容接的是一个 token(令牌)

token 生成的方式有很多种。

举个栗子,将用户的 uid 、服务器指定的key 等信息拼成字符串,然后进行AES 加密。服务端将密文发给客户端,客户端下一次请求时,将 token 放到 authorization 的 header 中传给服务端。服务收到后进行解密校验。

没有太大的数据库压力,比较流行。比较有代表性的是 json web token。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP Auth 的相关文章

  • Node.js 中的 HTTPS 代理服务器

    我正在开发一个node js代理服务器应用程序 我希望它支持HTTP and HTTPS SSL 协议 作为服务器 我目前正在使用node http proxy https github com nodejitsu node http pr
  • 如何让 NSURLRequest 获取 Twitter 请求令牌?

    我正在尝试使用以下代码从 Twitter 获取请求令牌 NSMutableURLRequest mURLRequest NSMutableURLRequest alloc initWithURL NSURL URLWithString ht
  • Non-Authoritative-Reason 标头字段 [HTTP]

    当我有响应标头时 我很难找出它的含义Non Authoritative Reason HSTS 我搜索了很多 但只是想出了一些关于 HSTS 从 HTTP 重定向到 HTTPS 的解释 有人能帮我吗 顺便说一句 我正在使用 Chrome T
  • AWS ALB 截断 HTTP 响应

    我有一个带有目标组的 ALB 和运行 PHP API 的 ECS 集群 我正在尝试查询 API 以获得 CSV 响应 但如果请求通过 ALB 我会得到被截断的结果 当我通过 SSH 连接到运行集群的 EC2 实例并尝试手动运行curl 通过
  • 有人成功用 Robolectric 模拟 HttpRequests 吗?

    我刚刚开始使用 Robolectric 模拟大多数 Android 类似乎工作正常 但是当我的测试类尝试创建 DefaultHttpClient 时 它会收到可怕的 Stub 错误 被测试的类在这一行失败 HttpClient httpcl
  • 为什么使用 HTTP 动词?

    因为动词的目标是像 server domain getallrecords 或 server domain delete1record 或类似的 URL 而getallrecords delete1record都是专门为特定目的而设计的 为
  • 删除 servlet 中的 cookie 时出现问题

    我尝试使用以下代码删除 servlet 中的 cookie Cookie minIdCookie null for Cookie c req getCookies if c getName equals iPlanetDirectoryPr
  • 如何确定服务器是否支持 Range 标头?

    我一直在尝试使用 Range 标头值从特定点流式传输音频 但我总是从一开始就得到歌曲 我正在通过程序执行此操作 因此不确定问题是否出在我的代码中或服务器上 如何确定服务器是否支持 Range 标头参数 Thanks 方式HTTP规范 htt
  • 如何解析 Content-Disposition 标头以检索文件名属性?

    使用 go 如何解析从 http HEAD 请求检索到的 Content Disposition 标头以获取文件的文件名 此外 如何从 http HEAD 响应中检索标头本身 这样的事情正确吗 resp err http Head http
  • HttpWebRequest vs Webclient(特殊场景)

    我知道这个问题之前已经回答过thread https stackoverflow com questions 1694388 webclient vs httpwebrequest httpwebresponse 但我似乎找不到详细信息 在
  • python 2.7 中的 HTTP 2 请求

    在 python 中向 HTTP 1 和 HTTP 2 发出请求有什么区别吗 我可以像这样在 python 中进行 HTTP 1 x 调用 url http someURL values param1 key param2 key2 dat
  • 如何在flutter项目中使用http拦截器?

    我必须向我的所有 Api 添加标头 有人告诉我为此使用 http 拦截器 但我无法理解如何做到这一点 因为我是颤振的新手 谁能帮我举个例子吗 您可以使用http 拦截器 https pub dev packages http interce
  • JS 库请求的常见 HTTP 标头是什么?

    使用JavaScript 框架原型 http www prototypejs org 我注意到 Ajax 请求通过一个名为X Requested With 其他 JavaScript 库 如 jQuery dojo 和 YUI 是否会向其
  • UNIX/MacOS 上静态文件的“临时 Web 服务器”?

    是否有一个像小型网络服务器这样的东西 我可以从命令行调用它 只从本地文件系统获取文件并通过特定端口上的 HTTP 为它们提供服务 我希望能够做这样的事情 cd Sites mysite serve 10 0 1 1 8080 这应该会启动一
  • HTTP Header Key 可以重复吗?

    在 JAVA HttpUrlConnection 中 请求 Header 设置的主要逻辑代码如下 public synchronized void set String k String v for int i nkeys i gt 0 i
  • 我可以使用 HTTP 范围标头“有意”加载部分文件吗?

    我正在研究 HTTP 范围标头 specs http www w3 org Protocols rfc2616 rfc2616 sec14 html sec14 16 据我了解 我可以设置文件的字节范围ala 0 199 2000 200
  • 如何使用 python 的 http.client 准确读取一个响应块?

    Using http client在 Python 3 3 或任何其他内置 python HTTP 客户端库 中 如何一次读取一个分块 HTTP 响应一个 HTTP 块 我正在扩展现有的测试装置 使用 python 编写 http clie
  • 用 C++ 解析 HTTP 标头

    我正在使用curl 与服务器通信 当我发出数据请求时 我收到 HTTP 标头 后跟由边界分隔的 jpeg 数据 如下所示 我需要解析出 边界字符串 内容长度 我已将传入数据复制到 char 数组 如下所示 static size t OnR
  • Flutter http请求上传mp3文件

    我使用这个 api 上传 mp3 文件 使用这种方法 Future
  • 注册期间现有电子邮件的 422 或 409 状态代码

    我正在构建 RESTful API 遇到了一种情况 在用户注册期间 如果电子邮件已存在 则在422 and 409哪个http响应代码有意义 我浏览过类似的one https stackoverflow com questions 9269

随机推荐

  • ubuntu20.04使用微软Azure Kinect DK 实现三维重建demo记录

    本文仅为在ubuntu20 04实现Azure Kinect DK 三维重建demo xff0c 此文记录实现过程仅供学习 xff0c 同时为大家避坑 xff0c 文中参考大量文章已列至末尾 1 ros安装 2 安装微软 DK的sdk 3
  • 常见一面问题

    1 智能指针 常用的c 43 43 库 Standard Template Library STL Algorithms 算法 Containers 容器 Functions 函数 Iterators 迭代器 Boost 同样是大量C 43
  • ROS datatype/md5sum错误

    I got this error today Problem ERROR 1576785283 032878520 Client rostopic 21515 1576784759002 wants topic timestamp to h
  • 快速安装Pytorch和Torchvision

    文章目录 1 Linux下激活自己的虚拟环境并查看Python版本2 查看需要安装的Pytorch和Torchvision版本3 直接命令行安装3 1 如果不报错的话3 2 ERROR Could not install packages
  • 【Darknet-53】YOLOv3 backbone Darknet-53 详解

    文章目录 1 模型计算量与参数量2 Darknet 53网络3 感谢链接 1 模型计算量与参数量 模型计算量与参数量的计算方式主要有两种 xff0c 一种是使用thop库 xff0c 一种是使用torchsummaryX 使用pip ins
  • ubuntu 默认命令行_从命令行在Ubuntu上设置默认浏览器

    ubuntu 默认命令行 Ubuntu Linux has a default browser functionality that will automatically launch the correct browser when cl
  • 【DeeplabV3+】DeeplabV3+网络结构详解

    文章目录 1 常规卷积与空洞卷积的对比1 1 空洞卷积简介1 2 空洞卷积的优点 2 DeeplabV3 43 模型简介3 DeeplabV3 43 网络代码4 mobilenetv2网络代码5 感谢链接 聊DeeplabV3 43 网络前
  • 【YOLOv3 decode】YOLOv3中解码理解decode_box

    文章目录 1 解码是什么意思2 代码解读3 生成网格中心 代码详解4 按照网格格式生成先验框的宽高 代码详解5 感谢链接 1 解码是什么意思 在利用YOLOv3网络结构提取到out0 out1 out2之后 xff0c 不同尺度下每个网格点
  • 【DeeplabV3+ MIoU】DeeplabV3+计算评价指标

    文章目录 1 分割常用评价指标1 1 什么是MIoU1 2 什么是PA1 2 什么是MPA 2 根据混淆矩阵计算评价指标2 1 计算MIoU2 2 计算PA2 3 计算MPA 3 计算 MIoU 总体代码4 compute mIoU 函数
  • 【MobileNetV3】MobileNetV3网络结构详解

    文章目录 1 MobileNetV3创新点2 block变成了什么样2 1 总体介绍2 2 SE模块理解2 3 ReLu6和hardswish激活函数理解 3 网络总体结构4 代码解读5 感谢链接 在看本文前 xff0c 强烈建议先看一下之
  • 【Smooth L1 Loss】Smooth L1损失函数理解

    文章目录 1 引言2 L1 Loss3 L2 Loss4 Smooth L1 Loss5 曲线对比分析6 参考链接 1 引言 目标检测任务的损失函数由Classificition Loss和Bounding Box Regeression
  • Command errored out with exit status 1类似问题解决方案

    在使用pip install onnx时遇到如下错误 xff1a Building wheels for collected packages onnx Building wheel for onnx setup py error ERRO
  • 【tensorflow onnx】TensorFlow2导出ONNX及模型可视化教程

    文章目录 1 背景介绍2 实验环境3 tf2onnx工具介绍4 代码实操4 1 TensorFlow2与ONNX模型导出4 2 ONNX正确性验证4 3 TensorFlow2与ONNX的一致性检查4 4 多输入的情况4 5 设定输入 输出
  • 【PaddlePaddle onnx】PaddlePaddle导出ONNX及模型可视化教程

    文章目录 1 背景介绍2 实验环境3 paddle onnx export函数简介4 代码实操4 1 PaddlePaddle与ONNX模型导出4 2 ONNX正确性验证4 3 PaddlePaddle与ONNX的一致性检查4 4 多输入的
  • 【linux命令】如何查看文件/文件夹所占空间大小

    文章目录 1 查看文件大小1 1 方法1 xff1a ls lh1 2 方法2 xff1a du sh1 3 方法3 xff1a stat 2 查看文件夹所占大小2 1 方法1 xff1a du2 2 方法2 xff1a ncdu 1 查看
  • 更改ubuntu中默认python版本

    在ubuntu中更改python版本 因为刚开始学习python 不论是网上教程还是书上都推荐python3 因为学习需要我用的电脑上只有ubuntu系统 在终端输入python它默认是如下 xff1a python exit 退出pyth
  • vlc 提取音轨_如何使VLC自动选择英语音轨

    vlc 提取音轨 If you ve used VLC player to play anything that has multiple audio tracks you ve probably noticed that it doesn
  • Android 串口通信 原来如此简单

    EasySerial串口通信SDK 一 前言二 SDK的使用介绍引入库EasyKeepReceivePort的使用EasyWaitRspPort的使用其他API的使用介绍 三 github传送门四 鸣谢五 转载请注明出处 一 前言 如果你的
  • 超声波模块HC-SRO4

    1 xff09 引脚和原理 xff1a 该模块有VCC GND Trig和Echo针脚 TRIG是输出和ECHO是输入 该模块的工作原理为 xff0c 先向TRIG脚输入至少10us的触发信号 该模块内部将发出 8 个 40kHz 周期电平
  • HTTP Auth

    文章目录 关于 HTTP Auth1 session2 authorization 的 http header2 1 Basic 形式2 2 Bearer 类型 xff08 token xff09 参考资源 free coder xff1a