当前位置: 首页 > news >正文

合肥企业建站程序建设医院网站服务

合肥企业建站程序,建设医院网站服务,建设银行360网站登录不了,网站建设的售后服务流程一.简介 这篇文章来学习下security的认证方式其中的HTTP基本认证。 二.Spring Security的认证方式 2.1什么是认证 认证: 就是用来判断系统中是否存在某用户,并判断该用户的身份是否合法的过程,解决的其实是用户登录的问题。认证的存在,是…

一.简介

这篇文章来学习下security的认证方式其中的HTTP基本认证。

二.Spring Security的认证方式

2.1什么是认证

认证:
就是用来判断系统中是否存在某用户,并判断该用户的身份是否合法的过程,解决的其实是用户登录的问题。认证的存在,是为了保护系统中的隐私数据与资源,只有合法的用户才可以访问系统中的资源。

2.2认证的方式

在Spring Security中,常见的认证方式可以分为HTTP层面和表单层面,常见的认证方式如下:

  1. HTTP基本认证;
  2. Form表单认证
  3. HTTP摘要认证;

这篇文章先讲HTTP基本认证

三. HTTP基本认证

3.1HTTP基本认证概念

在Spring Security 4.x版本中,默认采用的登录方式是Http基本认证,该方式会弹出一个对话框,要求用户输入用户名和密码。在每次进行基本认证请求时,都会在Authorization请求头中利用Base64对 “用户:密码” 字符串进行编码。这种方式并不安全,并不适合在Web项目中使用,但它是一些现代主流认证的基础,而且在Spring Security的OAuth中,内部认证的默认方式就是用的Http基本认证。

3.2HTTP基本认证核心API

在基本认证时,系统中所涉及到的各种核心API及其执行流程,在这篇文章中,我们先对这些有基本了解即可。
在这里插入图片描述
简单的执行流程如下:

Filter->构造Token->AuthenticationManager->转给Provider处理->认证处理成功后续操作或者不通过抛异常

3.3HTTP基本认证步骤(重点)

HTTP基本认证是在RFC2616标准中定义的一种认证模式,它以一种很简单的方式与用户进行交互。HTTP基本认证可以分为如下4个步骤:

  1. 客户端首先发起一个未携带认证信息的请求;
  2. 然后服务器端返回一个401 Unauthorized的响应信息,并在WWW-Authentication头部中说明认证形式:当进行HTTP基本认证时,WWW-Authentication会被设置为Basic realm=“被保护的页面”;
  3. 接下来客户端会收到这个401 Unauthorized响应信息,并弹出一个对话框,询问用户名和密码。当用户输入后,客户端会将用户名和密码使用冒号进行拼接并用Base64编码,然后将其放入到请求的Authorization头部并发送给服务器;
  4. 最后服务器端对客户端发来的信息进行解码得到用户名和密码,并对该信息进行校验判断是否正确,最终给客户端返回响应内容。

3.4HTTP基本认证的弊端

HTTP基本认证是一种无状态的认证方式,与表单认证相比,HTTP基本认证是一种基于HTTP层面的认证方式,无法携带Session信息,也就无法实现Remember-Me功能。另外,用户名和密码在传递时仅做了一次简单的Base64编码,几乎等同于以明文传输,极易被进行密码窃听和重放攻击。所以在实际开发中,很少会使用这种认证方式来进行安全校验。

接下来,就用代码来实现下HTTP基本认证的功能。

四. 创建SpringSecurity项目

参考之前的文章,这边不做叙述。

五.代码实现

5.1创建SecurityConfig配置类

创建SecurityConfig类,继承自WebSecurityConfigurerAdapter父类,代码如下:

 
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {//1.配置基本认证方式http.authorizeRequests()//对任意请求都进行认证.anyRequest().authenticated().and()//开启basic认证.httpBasic();}}

这段代码中httpBasic()方法,就是用来开启基本认证的,而且默认采用的就是基本认证!

5.2创建web接口

HelloController类的代码如下:


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")public String hello() {return "德玛西亚";}}

5.3yml配置文件

创建一个application.yml配置文件,配置如下:

spring:security:user:name: demaxiyapassword: 123

四.功能验证

4.1启动项目

接着把项目启动起来,打开浏览器及调试窗口,然后访问/hello接口,这时候就可以看到浏览器中弹出了一个登陆窗口,截图如下:
在这里插入图片描述
提示输入自己的用户名和密码,认证成功后,即可访问自己的web接口。

五. Basic认证详解

对上面的认证过程进行详细的分析。

5.1Basic Authorization

此时我们在自己的浏览器调试窗口中,查看响应头,可以看到WWW-Authenticate认证信息:

WWW-Authenticate:Basic realm=“Realm”,截图如下:
在这里插入图片描述

5.1.1各响应信息含义如下

  1. WWW-Authenticate: 表示服务器告知浏览器进行代理认证工作。
  2. Basic: 表示认证类型为Basic认证。
  3. realm=“Realm”: 表示认证域名为Realm域。

5.1.2 realm的概念

realm=“Realm”: 指认证域名为Realm,HttpBasic默认的realm名为Realm。在未认证用户请求不同的接口时,后台会根据分配给该接口的域,响应不同的realm名称,并且用不同的用户名/密码进行认证。所以用户每请求一个新的Realm的url,都会弹框要求使用新的Realm的用户名/密码进行认证,就好比不同的角色登录只能请求属于该角色的url。

5.2基本认证过程

此时的响应码为401,如下图所示:
在这里插入图片描述
根据401和以上响应头信息,浏览器会弹出一个对话框,要求输入 用户名/密码,Basic认证会将其拼接成 “用户名:密码” 格式,中间是一个冒号,并利用Base64编码成加密字符串xxx;然后在请求头中附加 Authorization: Basic xxx 信息,发送给后台认证;后台需要利用Base64来进行解码xxx,得到用户名和密码,再校验 用户名:密码 信息。

  1. 如果认证错误,浏览器会保持弹框;
  2. 如果认证成功,浏览器会缓存有效的Base64编码,在之后的请求中,浏览器都会在请求头中添加该有效编码。

以上就是HTTP基本认证的内部执行过程。
在这里插入图片描述

5.3注销Basic认证

在成功认证之后,Basic认证会把Authorization认证信息缓存在浏览器中一段时间,之后每次请求接口时都会自动带上,所以直到 用户关闭浏览器才会销毁认证信息,也就是说我们无法在服务端进行有效的注销。

不过在请求注销时,前端也可以手动 在请求头配置一个错误的Authorization,或者在浏览器的命令行执行 document.execuCommand(“ClearAuthenticationCache”)方法 来清空认证信息,但该方式对Chrome浏览器无效。我们在调试基本认证时,可以直接开启无痕模式,避免很多因为缓存造成的问题。

http://www.yayakq.cn/news/887627/

相关文章:

  • 邢台路桥建设总公司网站如何做一个小程序商城
  • 郑州建站系统费用襄阳教育网站建设
  • 外贸采购网山西seo排名
  • 网页游戏网站快手株洲百度推广
  • 吉林省建设厅网站市政建设c 微信小程序开发教程
  • 隆昌住房和城乡建设官方网站网站开发需要什么关键技术
  • 湛江网站设计做网站用什么语音
  • 怎么制作网站封面在线看国内永久免费crm
  • 手表网站欧米茄官网常州建设网站公司
  • 服务好又优惠的网站制作wordpress添加访客统计
  • 青岛建站培训wordpress怎么用Redis
  • 网站建设公司没落服务app开发的公司
  • 深圳的网站建设公司哪家好合肥市住房和城乡建设局网站
  • 网站色哦优化8888如何网站建设网站
  • 济南网站价格合肥快速建站模板
  • 企业网站系统官网网站建设要学
  • 怡康医药网站建设方案做网站 用什么语言
  • 平台网站建设报价百度 特定网站搜索
  • 地方战友网站建设wordpress 设置固定链接
  • 找人做一个网站多少钱电子商务网站建设与管理考试题
  • 网站开发入门书籍推荐一个网站大概多少页面
  • 发不了软文的网站怎么做关键词优化网站备案电话号码
  • 徐州模板自助建站极致cms怎么样
  • 济南网站建设抖音平台漳州市城乡建设局网站
  • 学校微网站模板下载公司装修效果图办公室
  • 做网站时随便弄上去的文章怎么删掉顺义石家庄网站建设
  • 苏州住房和城乡建设厅网站网络运营是什么意思
  • 网站建设免费视屏教程wordpress ses插件
  • 彩票系统网站开发在北京找工作有哪些招聘网站
  • 正规网站建设led网站建设