核心关注点:

  0)'认证和授权'-->后续k8s的RBAC

  1)相关的'响应状态码': 401、403

  2)相应的'请求'和'响应'头

  3)'应用'中的体现:nginx、kubernetes、mysql

一    认证和授权

(1)认证

'authentication --> 身份验证意味着'确认您自己的身份'是否合法,'能否登陆'系统?

注意: 验证身份的合法'并不意味'着有'对应的access权限',换句话说可能登陆系统后'啥也做不了'

(2)授权

authorization

1)授权意味者可以'操作哪些资源'?

2)只有经过'身份验证',才会'进行授权'

3)授权意味着授予'对系统的访问权限',授权是验证'您有权访问'的过程

(3)总结

参考链接1

参考链接2

鉴权认证的基本概念

二   401和403状态码

400错误

(1)401

①  HTTP 401 错误 - 未授权: (Unauthorized)

您的Web服务器认为:客户端发送的 HTTP '数据流是正确(报文语法正确)'的,但进入网址 (URL) 资源,需要'用户身份验证' 

备注1: 这就是通常所知的' HTTP 基本验证',需客户端提供的验证请求在 'HTTP 协议'中被定义为 'WWW – 验证标头字段 (WWW-Authenticate header field)' 

备注2:桌面应用程序一般不会使用cookie, 而是把 "用户名+冒号+密码"用BASE64编码的字符串放在http request 中的'header Authorization'中发送给服务端,这种方式叫'HTTP基本认证'(Basic Authentication)

②  原因

因为request中'没有包含Authorization header',服务器会'返回一个401' Unauthozied给'客户端',并且在Response的header'www-authentivate'中添加信息

当客户端把'用户名密码'用'Base64加密后编码',放在'Authorization header中'发送给服务器,那么就会'认证成功'了

③  场景及办法

最近用postman偶然遇见了401的报错,是请求'用户的token'这个接口的时候,所有的Body'请求参数'和Headers都一样,但是就是'报错401'

'后端': 忘了加Authorization这个请求Header了

'解决办法':在Headers中添加'基本认证的键值对'

④  nginx中的体现

nginx basic auth指令

配置'Basic Auth'登录认证'ngx_http_auth_basic_module'

htpasswd命令详解

骏马威龙

1)密码创建

在开始配置Basic Auth登录认证前,我们需要使用'htpasswd生成账号及密码'

备注1: 密码'存放路径'没有限制,可'自定义'路径

备注2: htpasswd 是开源 http 服务器 'apache httpd' 的一个'命令工具',用于生成 http '基本认证'的密码文件

2)密码创建命令

方式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中的配置

备注: 注意修改后'进行reload'或者'restart'

4)测试

命令行、'postman'、浏览器

思考: 如何通过'curl命令行进行认证'?-->进而如何在代码'进行身份认证'

不输入浏览器或者'用户名和密码输入错误',表现如下

curl '命令行'访问

备注: 'wget访问'--> wget --http-user=magina --http-passwd=123456

'正确'

'alias'的原因-->导致'301 MOved Permanently'

二  403

可以简单的理解为'没有权限'访问此站 --> '没有权限'的原因很多

该状态表示服务器'理解了本次请求'但是'拒绝执行'该任务

特点:该请求'不会重发'给服务器。在HTTP请求的方法不是"HEAD",并且服务器想'让客户端知道'为什么没有权限的情况下,服务器应该在'返回的信息'中描述'拒绝的理由'

+++++++++++'备注'+++++++++++

https配置成http也可能报错

(1)403的原因

403具体的报错码

Logo

开源、云原生的融合云平台

更多推荐