复制代码
1
2
3
4
5
6
7
8
9核心关注点: 0)'认证和授权'-->后续k8s的RBAC 1)相关的'响应状态码': 401、403 2)相应的'请求'和'响应'头 3)'应用'中的体现:nginx、kubernetes、mysql
一 认证和授权
(1)认证
复制代码
1
2
3
4'authentication --> 身份验证意味着'确认您自己的身份'是否合法,'能否登陆'系统? 注意: 验证身份的合法'并不意味'着有'对应的access权限',换句话说可能登陆系统后'啥也做不了'
(2)授权
复制代码
1
2
3
4
5
6
7authorization 1)授权意味者可以'操作哪些资源'? 2)只有经过'身份验证',才会'进行授权' 3)授权意味着授予'对系统的访问权限',授权是验证'您有权访问'的过程
(3)总结
参考链接1
参考链接2
鉴权认证的基本概念
二 401和403状态码
400错误
(1)401
① HTTP 401 错误 - 未授权: (Unauthorized)
复制代码
1
2
3
4
5您的Web服务器认为:客户端发送的 HTTP '数据流是正确(报文语法正确)'的,但进入网址 (URL) 资源,需要'用户身份验证' 备注1: 这就是通常所知的' HTTP 基本验证',需客户端提供的验证请求在 'HTTP 协议'中被定义为 'WWW – 验证标头字段 (WWW-Authenticate header field)' 备注2:桌面应用程序一般不会使用cookie, 而是把 "用户名+冒号+密码"用BASE64编码的字符串放在http request 中的'header Authorization'中发送给服务端,这种方式叫'HTTP基本认证'(Basic Authentication)
② 原因
复制代码
1
2
3因为request中'没有包含Authorization header',服务器会'返回一个401' Unauthozied给'客户端',并且在Response的header'www-authentivate'中添加信息 当客户端把'用户名密码'用'Base64加密后编码',放在'Authorization header中'发送给服务器,那么就会'认证成功'了
③ 场景及办法
复制代码
1
2
3
4
5最近用postman偶然遇见了401的报错,是请求'用户的token'这个接口的时候,所有的Body'请求参数'和Headers都一样,但是就是'报错401' '后端': 忘了加Authorization这个请求Header了 '解决办法':在Headers中添加'基本认证的键值对'
④ nginx中的体现
nginx basic auth指令
复制代码
1配置'Basic Auth'登录认证'ngx_http_auth_basic_module'
htpasswd命令详解
骏马威龙
1)密码创建
复制代码
1
2
3
4
5在开始配置Basic Auth登录认证前,我们需要使用'htpasswd生成账号及密码' 备注1: 密码'存放路径'没有限制,可'自定义'路径 备注2: htpasswd 是开源 http 服务器 'apache httpd' 的一个'命令工具',用于生成 http '基本认证'的密码文件
2)密码创建命令
复制代码
1
2
3
4
5
6
7
8
9
10
11方式1:printf "wzj:$(openssl passwd -crypt 123456)n" >>conf/htpasswd -->'可以不覆盖,添加多个身份认证' -->'推荐方式' 方式2:htpasswd -bc conf/htpasswd wzj 123456 ++++++++++++++++++++'分割线'++++++++++++++++++++ cat 'conf/htpasswd' wzj:xyJkVhXGAZ8tM 备注: wzj是'用户名',后面的密码是'123456'的base64编码
3)nginx中的配置
复制代码
1备注: 注意修改后'进行reload'或者'restart'
4)测试
复制代码
1
2
3命令行、'postman'、浏览器 思考: 如何通过'curl命令行进行认证'?-->进而如何在代码'进行身份认证'
复制代码
1不输入浏览器或者'用户名和密码输入错误',表现如下
复制代码
1
2
3curl '命令行'访问 备注: 'wget访问'--> wget --http-user=magina --http-passwd=123456
复制代码
1
2
3'正确' 'alias'的原因-->导致'301 MOved Permanently'
二 403
复制代码
1
2
3
4
5
6
7
8
9可以简单的理解为'没有权限'访问此站 --> '没有权限'的原因很多 该状态表示服务器'理解了本次请求'但是'拒绝执行'该任务 特点:该请求'不会重发'给服务器。在HTTP请求的方法不是"HEAD",并且服务器想'让客户端知道'为什么没有权限的情况下,服务器应该在'返回的信息'中描述'拒绝的理由' +++++++++++'备注'+++++++++++ https配置成http也可能报错
(1)403的原因
403具体的报错码
最后
以上就是痴情汉堡最近收集整理的关于Nginx(八)认证和授权的全部内容,更多相关Nginx(八)认证和授权内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复