【总结】基于Spring LDAP和Spring Security的用户认证和权限控制Web实现

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介:

利用LDAP服务,使用Spring LDAP,Spring Security实现Web项目用户认证和简单的权限控制。实现多系统账号统一。

1、基于EHR的LDAP用户信息

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。LDAP目录以树状的层次结构来存储数据。如果你对自顶向下的DNS树或UNIX文件的目录树比较熟悉,也就很容易掌LDAP目录树这个概念了。就象DNS的主机名那样,LDAP目录记录的标识名(Distinguished Name,简称DN)是用来读取单个记录,以及回溯到树的顶部

例如,DN: cn=ZH201506006,ou=大数据平台研发工程师,ou=大数据平台部,ou=技术中心,ou=职能,dc=openldap,dc=jw,dc=cn

LDAP中组织结构以及用户数据是从EHR系统中同步而来,

其中Group,记录各个角色下的用户成员

组织结构:

wKiom1kAXWPxD3Y0AAA9OGVudbI099.png


Group信息,AUTHORITY_SYSTEM_ADMIN下有一个member是cn=ZH201506006,ou=大数据平台研发工程师,ou=大数据平台部,ou=技术中心,ou=职能,dc=openldap,dc=jw,dc=cn

wKiom1kAXYeCbzdYAAAyhcUtKqs607.png


用户信息:

wKioL1kAXZ7yK-yBAABE_gLR_rE173.png-wh_50


2、实现基于LDAP用户认证


Web项目中实现基于LDAP认证,主要完成以下工作

  1. spring-security.xml,基于spring security的配置文件

  2. ldap.properties ,配置文件spring-security.xml中引用的常量

  3. MyAuthenticationProvider.java 自定义的用户认证类

  4. AuthoritiesPopulator.java 自定义权限组

代码以及注释参考:https://github.com/chocolateBlack/authority-spring-security


3、实现基于Spring Sentry权限控制


Web项目中实现基于Spring Sentry权限控制,主要完成以下工作

  1. 在spring-security.xml配置
    <global-method-security secured-annotations="enabled" pre-post-annotations="enabled" jsr250-annotations="enabled" />
    说明参考:https://vincentmi.gitbooks.io/spring-security-reference-zh/content/4.4_method_security.html

  2. 在spring-security.xml中配置

<http security="none" pattern="/login.jsp" />

<http auto-config="true">

<intercept-url pattern="/check" access="IS_AUTHENTICATED_ANONYMOUSLY"/>

<intercept-url pattern="/admin" access="ROLE_AUTHORITY_SYSTEM_ADMIN"/>

</http>

说明参考:https://vincentmi.gitbooks.io/spring-security-reference-zh/content/4.2_getting_started%20with_security_namespace_configuration.html





     本文转自巧克力黒 51CTO博客,原文链接:http://blog.51cto.com/10120275/1919698,如需转载请自行联系原作者



相关文章
|
1月前
|
JSON 安全 Java
什么是JWT?如何使用Spring Boot Security实现它?
什么是JWT?如何使用Spring Boot Security实现它?
200 5
|
3月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
63 4
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
61 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
6月前
|
JSON 安全 Java
使用Spring Boot和JWT实现用户认证
使用Spring Boot和JWT实现用户认证
|
6月前
|
安全 Java 数据安全/隐私保护
使用Spring Security实现细粒度的权限控制
使用Spring Security实现细粒度的权限控制
|
6月前
|
安全 Java 数据库
实现基于Spring Security的权限管理系统
实现基于Spring Security的权限管理系统
|
6月前
|
安全 Java 数据安全/隐私保护
解析Spring Security中的权限控制策略
解析Spring Security中的权限控制策略
|
5月前
|
Java API 数据库
【神操作!】Spring Boot打造RESTful API:从零到英雄,只需这几步,让你的Web应用瞬间飞起来!
【8月更文挑战第12天】构建RESTful API是现代Web开发的关键技术之一。Spring Boot因其实现简便且功能强大而深受开发者喜爱。本文以在线图书管理系统为例,展示了如何利用Spring Boot快速构建RESTful API。从项目初始化、实体定义到业务逻辑处理和服务接口实现,一步步引导读者完成API的搭建。通过集成JPA进行数据库操作,以及使用控制器类暴露HTTP端点,最终实现了书籍信息的增删查改功能。此过程不仅高效直观,而且易于维护和扩展。
84 1
|
5月前
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
100 0
|
5月前
|
消息中间件 Java Kafka
Spring Boot与模板引擎:整合Thymeleaf和FreeMarker,打造现代化Web应用
【8月更文挑战第29天】这段内容介绍了在分布式系统中起到异步通信与解耦作用的消息队列,并详细探讨了三种流行的消息队列产品:RabbitMQ、RocketMQ 和 Kafka。RabbitMQ 是一个基于 AMQP 协议的开源消息队列系统,支持多种消息模型,具有高可靠性及稳定性;RocketMQ 则是由阿里巴巴开源的高性能分布式消息队列,支持事务消息等多种特性;而 Kafka 是 LinkedIn 开源的分布式流处理平台,以其高吞吐量和良好的可扩展性著称。文中还提供了使用这三种消息队列产品的示例代码。
40 0