Spring Boot + Spring Security + JWT 从零开始

news/2024/10/20 21:28:40/

Spring Boot + Spring Security + JWT 从零开始

这篇笔记中,我们将学习如何从头开始设置一个带有Spring Security的Spring Boot应用程序,它连接到一个LDAP身份验证的Spring Security身份验证提供程序,这将是即将出现的,这个连接和工作都是开箱即用的。

实际上,设置这个非常简单。让我来演示给你看。

各位,你们知道吗?我们这里涉及到的是LDAP的媒体讲解。

**LDAP是轻量级目录访问协议。它是一种用于通过网络访问和维护目录信息的协议。它可以用于任何类型的层次结构目录信息,但最典型和最常见的用例是用来存储组织信息。一个典型的组织有部门、经理以及直接下属,所以这就像是一个信息树,LDAP非常适合这种情况。通常,人们使用LDAP来维护组织信息,也用它来维护用户信息,并且帮助进行身份验证和授权。**可以想象一下,一个组织中有一堆人拥有自己的信息存储在LDAP中,然后LDAP作为这些人进行身份验证和授权的方式。每当有人进行身份验证时,系统会与LDAP进行检查,看看这是否是合法用户,以及该用户是否具有所需的权限、凭据等等。因此,你可以将它视为用户进行身份验证和授权的目录,除了提供其他一些信息。

在我们现在正在做的Spring Security上下文中,我们希望我们的Spring Security应用程序连接到LDAP服务器,这将是包含所有这些信息的服务器。为了识别一个用户,假设有人试图用用户名和密码登录,我们的Spring Security应用程序将联系LDAP服务器以获取该用户的信息并与LDAP进行验证。这实际上非常简单,因为Spring Security有一些开箱即用的类知道如何连接到LDAP。所以你需要做的就是配置那些开箱即用的类来快速工作与LDAP。

所以让我们开始创建一个简单的Spring Boot项目。为了创建一个Spring Boot项目,我使用了Spring Initializr,我的组名是"com.javacounter",我的Artifact ID是"spring-security-ldap"。我将添加几个依赖项,首先是Spring Web依赖项,这基本上是一个Web应用程序,所以你得到所有Spring MVC的依赖项。
第二个依赖项是Spring Security依赖项,这是我们现在要使用的东西。我将添加这两个。还有几个依赖项需要添加,所以我们可以在下载项目并在IntelliJ中打开后进行。现在这是我的项目,在IntelliJ中打开了,有一个类文件,这是主类,有一个主方法,我可以运行它来启动应用程序,但是让我们先设置它。为了编写一个连接到LDAP的应用程序,我们需要一个LDAP服务器。有几种不同的方法可以解决这个问题,你可以连接到现有的LDAP服务器,但是出于教程的目的,为了使它更加自给自足,我们将在自己的机器上运行一个本地的LDAP实例。这个LDAP服务器将在内存中保存所有信息,这对于开发目的来说就够了,当我们构建一个连接到这个本地LDAP服务


http://www.ppmy.cn/news/1464915.html

相关文章

0基础认识C语言(理论+实操 2)

小伙伴们大家好,今天也要撸起袖子加油干!万事开头难,越学到后面越轻松~ 话不多说,开始正题~ 前提回顾: 接上次博客,我们学到了转义字符,最后留下两个转义字符不知道大家有没有动手尝试了一遍&a…

开源一个工厂常用的LIMS系统

Senaite是一款强大且可靠的基于Web的LIMS/LIS系统,采用Python编写,构建在Plone CMS基础架构之上。该系统处于积极开发阶段,在灵活的定制空间中为开发人员提供了丰富的功能。其中,Senaite在处理REST的JSON API上做得出色&#xff0…

STM32实验之USART串口发送+接受数据(二进制/HEX/文本)

涉及三个实验: 1.USART串口发送和接收数据 我们使用的是将串口封装成为一个Serial.c模块.其中包含了 void Serial_Init(void);//串口初始化 void Serial_SendByte(uint8_t Byte);//串口发送一个字节 void Serial_SendArray(uint8_t *Array,uint16_t Length);//…

【408真题】2009-27

“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…

在Go语言中如何实现变参函数和函数选项模式

在Go语言编程中,我们经常会遇到需要给函数传递可选参数的情况。传统的做法是定义一个结构体,将所有可选参数作为结构体字段,然后在调用函数时创建该结构体的实例并传递。这种方式虽然可行,但是当可选参数较多时,创建结构体实例的代码就会变得冗长และ不太直观。 Go语言的一个…

随机链表的复制

后插节点解答 实现目标,要将复杂问题拆解为较为解决的较小问题进行逐步解决。可以将要复制的链表分为节点插入到每个原链表的节点后面,如图所示: 1.插入复制节点 想要实现如图所示效果,首先用malloc创建节点,然…

Textual for Mac:轻量级IRC客户端

在寻找一款高效、轻量级的IRC客户端时,Textual for Mac无疑是你的不二之选。它集成了众多现代技术,如本机IPv6、最新的IRCv3规范,以及客户端证书身份验证,让你的聊天体验更加顺畅和安全。 Textual for Mac v7.2.2免激活版下载 Tex…

python生成词云图

生成词云图的话需要先对数据进行分词处理 , 分词方法点击查看 import pandas as pd from collections import Counter from wordcloud import WordCloud import matplotlib.pyplot as plt# 假设您已经按照之前的步骤处理了数据,并且处理后的数据保存在comments_proc…