sun公司的认证有用吗,sun公司官方网站

  

  在序言的前一章,一一哥带大家去建造第一个春天安全工程。我相信我们的朋友已经学会了如何使用Spring Security来保护我们的Java Web项目。但第一种情况只是HelloWorld的一个入门级项目。使用SpringSecurity的具体细节还有很多我们不知道的。接下来,一一哥将从认证方法入手,和你一起学习如何进行各种认证。   

  

  1.Spring Security 1的认证方法。编码前的认证概念,我们还是老规矩。让我们先了解一下“认证”的概念。我们不能在甚至不知道认证意味着什么的情况下就去编码。时间长了,我们也不知道是什么意思。有什么意义?   

  

  认证:所谓认证,就是用来确定系统中是否存在某个用户,以及该用户的身份是否合法的过程。它实际上解决了用户登录的问题。身份认证是为了保护系统中的私有数据和资源,只有合法用户才能访问系统中的资源。   

  

  2.认证方式在Spring Security中,常见的认证方式如下:   

  

  .HTTP基本身份验证;   

  

  .表单验证   

  

  .HTTP抽象认证;   

  

  二。HTTP基本认证1。基本认证概述在以上三种认证方式中,一一哥首先带朋友学习最简单的基本认证方式。让我们来看看什么是基本认证。   

  

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

  

  2.基础认证核心API在了解了基础认证的概念之后,我们还可以了解到系统中涉及到的各种核心API以及它们在基础认证过程中的执行过程。在这一章中,我们可以先对这些有一个基本的了解,然后在我后面和你分析源代码的时候再详细解释这些内容。   

  

     

  

  简单的执行流程如下:   

  

  过滤器-构造令牌-AuthenticationManager-传递给提供者进行处理-认证处理成功,后续操作或未通过异常3。基本认证步骤(要点)HTTP基本认证是RFC2616标准中定义的一种认证模式,以非常简单的方式与用户进行交互。HTTP基本身份验证可以分为以下四个步骤:   

  

  (1)客户端首先发起没有认证信息的请求;   

  

  .然后服务器端返回401未授权响应消息,并在WWW-Authentication的头中说明认证形式:进行HTTP基本认证时,WWW-Authentication会设置为Basic realm=" protected page   

  

  接下来,客户端会收到这条401未授权响应消息,会弹出一个对话框,要求输入用户名和密码。当用户输入时,客户端将用户名和密码用冒号拼接并用Base64编码,然后放在请求的授权头中发送给服务器;   

  

  (4)最后,服务器对客户端发送的信息进行解码,得到用户名和密码,并验证信息是否正确,最后将响应内容返回给客户端。   

  

  对于我们来说,以上基本认证步骤要熟练掌握。如果不熟悉这个认证流程,就很难对每个环节做出分解响应。因此,这一节的知识点,壹哥,希望你能写下来!   

  

  4.基础认证的弊端。壹哥一直告诉他的学生的一句话是,“世界上没有完美的技术”,因此基础认证存在一些弊端。   

  

  HTTP基本身份验证是一种无状态身份验证方法。与表单认证相比,HTTP基本认证是一种基于HTTP级别的认证方式,无法携带会话信息,因此无法实现Remember-Me功能。另外,用户名和密码只用简单的Base64编码传输一次,几乎等同于明文传输,很容易被密码窃听和重放攻击。所以在实际开发中,这种认证方式很少用于安全验证。   

  

  三。代码实现在学习了必要的理论知识后,请跟随壹哥来实现代码。在上一个案例的基础上,我们修改了项目。具体创建过程请参考上面的: 《Spring Security系列教程03--创建SpringSecurity项目》。   

  

  1.创建Se   

curityConfig配置类这里我们先创建一个config配置类,命名为SecurityConfig,并且继承自WebSecurityConfigurerAdapter父类,代码如下:

  

package com.yyg.security.config;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;/** * @Author: 一一哥 * @Blame: yyg * @Since: Created in 2021/4/14 */@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { //1.配置基本认证方式 http.authorizeRequests() //对任意请求都进行认证 .anyRequest() .authenticated() .and() //开启basic认证 .httpBasic(); }}这段代码中httpBasic()方法,就是用来开启基本认证的,其实默认采用的就是基本认证!

  

另外在这段代码中,各位小伙伴可以发现,我们采用了Java中 链式调用 的风格进行编程,有小伙伴知道链式编程符合哪种设计模式吗?

  

2. 代码结构其实核心代码就上面一小段,我们来看看代码结构吧,项目名称各位随便创建,不一定非要和我的一样。

  

  

3. 启动项目接着我们把项目启动起来,打开浏览器及调试窗口,然后访问自己的/hello接口,这时候我们就可以看到浏览器中弹出了一个登陆窗口。

  

  

提示我们输入自己的用户名和密码,认证成功后,即可访问自己的web接口。

  

四. Basic认证详解我们上面已经实现了Basic基本认证,那么接下来 一一哥 和各位一起来对上面的认证过程进行详细的分析。

  

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

  

WWW-Authenticate:Basic realm="Realm"

  

  

1.1 各响应信息含义如下WWW-Authenticate: 表示服务器告知浏览器进行代理认证工作。Basic: 表示认证类型为Basic认证。realm="Realm": 表示认证域名为Realm域。1.2 realm的概念realm="Realm": 指认证域名为Realm,HttpBasic默认的realm名为Realm。在未认证用户请求不同的接口时,后台会根据分配给该接口的域,响应不同的realm名称,并且用不同的用户名/密码进行认证。所以用户每请求一个新的Realm的url,都会弹框要求使用新的Realm的用户名/密码进行认证,就好比不同的角色登录只能请求属于该角色的url。

  

2. 基本认证过程此时的响应码为401,请各位小伙伴想想什么情况下会导致401状态码? 可以在文章下面发表你的高见!如下图所示:

  

  

划重点,划重点,划重点!我们想知道基本认证的内部到底是怎么实现的,请往下看!

  

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

  

如果认证错误,浏览器会保持弹框;

  

如果认证成功,浏览器会缓存有效的Base64编码,在之后的请求中,浏览器都会在请求头中添加该有效编码。

  

以上就是HTTP基本认证的内部执行过程,这是比较重要的一个环节,希望各位记下来!

  

  

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

  

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

  

到此为止,我们通过几行简单的代码,就实现了基本认证,并且知道了如何注销认证,各位小伙伴可以自己动手试试,看看是不是这样。对于本篇内容,你有什么想说的呢?请在评论区给壹哥留言吧。

相关文章