这篇文章是3个系列文章中的第二部分,探讨了如何为基于Spring Boot 2的应用程序启用OSO2提供程序SSO。 3个帖子是:

1. 引导兼容OpenID Connect的OAuth2授权服务器/ OpenID提供程序的方法

2.与OAuth2授权服务器/ OpenID提供程序集成的旧版Spring Boot / Spring 5方法–这篇文章

3.与OAuth2授权服务器/ OpenID Connect提供商集成的更新的Spring Boot 2 / Spring 5方法–即将推出

这篇文章将探讨传统的Spring Boot 2 / Spring Security 5方法,以为应用程序启用基于OAuth2的身份验证机制,本文假设所有
遵循了上一篇博客文章中的步骤, UAA已启动并正在运行。

可能想到的一个问题是,为什么我应该在Spring Boot 2 / Spring Security 5的背景下谈论遗留物,而这本来应该是做SSO的新方法! 原因是,随着开发人员我们一直在使用Spring Boot 1.5.x的一种方法(现在认为该方法已被弃用),但是其中的功能尚未完全移植到新方法上(能够启动OAuth2授权服务器以及创建OAuth2资源服务器的能力是示例),在此期间,Spring Security开发人员(感谢
Rob Winch和Joe Grandja )通过spring-security-oauth2-boot项目的形式为传统方法提供了桥梁。

方法

因此,旧方法的外观是什么–在此之前,我已经详细介绍了它,以总结一下它在一个名为@ EnableOAuth2SSO的注释和一组支持该注释的属性的基础上的工作原理,示例安全配置如下所示–

import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@EnableOAuth2Sso
@Configuration
public class OAuth2SecurityConfig extends WebSecurityConfigurerAdapter {@Overridepublic void configure(WebSecurity web) throws Exception {super.configure(web);web.ignoring().mvcMatchers("/favicon.ico", "/webjars/**", "/css/**");}@Overrideprotected void configure(HttpSecurity http) throws Exception {http.csrf().disable();http.authorizeRequests().antMatchers("/secured/**").authenticated().antMatchers("/").permitAll().anyRequest().authenticated();}}

指向UAA的一组支持属性如下:

ssoServiceUrl: http://localhost:8080/uaasecurity:oauth2:client:client-id: client1client-secret: client1access-token-uri: ${ssoServiceUrl}/oauth/tokenuser-authorization-uri: ${ssoServiceUrl}/oauth/authorizeresource:jwt:key-uri: ${ssoServiceUrl}/token_keyuser-info-uri: ${ssoServiceUrl}/userinfo

将spring-security-oauth2-boot项目作为依赖项插入:

compile 'org.springframework.cloud:spring-cloud-starter-oauth2'
compile("org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:2.0.0.BUILD-SNAPSHOT")

这些注释也适用于Spring Boo2应用程序。 但是请注意,Spring Boot 2支持两个不同的Web框架-Spring Web和Spring Webflux ,此方法可过渡地 引入 Spring Web ,这将Spring Web强制为默认框架

完整示例及其启动方法可在我的github存储库中找到 – https://github.com/bijukunjummen/oauth2-boot2

测试中

任何以“ / secured / **”开头的uri均已启用SSO,如果访问索引页,则无需任何身份验证即可显示它:

现在,单击以“ / secured / **”开头的uri应该会触发OAuth2 授权代码流 :

并应通过UAA向用户显示登录屏幕:

使用之前创建的凭证登录– user1 / user1应该将用户重定向回该应用程序的Spring Boot 2旧版,并显示受保护的页面:

这就完成了使用Spring Boot 2进行SSO的遗留方法。请注意,这只是伪身份验证,OAuth2的用途更多是为了授权访问用户资源,而不是在这里使用身份验证。 可以在此处找到澄清这一点的文章。 下一篇有关本机Spring Security 5 / Spring Boot2的文章将提供使用OpenID Connect的更清晰的身份验证机制。

翻译自: https://www.javacodegeeks.com/2018/02/spring-boot-2-applications-oauth-2-legacy-approach.html

Spring Boot 2应用程序和OAuth 2 –传统方法相关推荐

  1. 带有Gradle的Spring Boot Web应用程序

    1.简介 在继续使用Gradle创建演示Spring Boot Web应用程序之前,我假设我们已经准备好使用Gradle设置 . 摇篮设置指南 Gradle官方网站 2.创建演示应用程序 现在我们已经 ...

  2. Spring Boot Web应用程序中注册 Servlet 的方法实例

    Spring Boot Web应用程序中注册 Servlet 的方法实例 本文实例工程源代码:https://github.com/KotlinSpringBoot/demo1_add_servlet ...

  3. Spring boot、微服务、OAuth、OpenID的爱恨情仇!

    在本文中,我们学习如何使用Spring boot轻松配置和部署微服务,然后使用OAuth和OpenID保护它们. 在微服务体系架构中,其中较大的应用程序由多个较小的服务组成,每个服务都有自己的目标,它 ...

  4. 使用 spring boot 开发通用程序

    2019独角兽企业重金招聘Python工程师标准>>> tag: spring 学习笔记 date: 2018-03 spring 是什么?spring 核心是应用组件容器,管理组件 ...

  5. synology_用于在Synology NAS上测试Spring Boot Web应用程序的JUnit模拟文件

    synology 对于将在Synology RS815 + NAS上检查备份文件的Spring Boot应用程序,我们希望能够轻松测试此NAS上存储的文件,而不必复制存储在该NAS上的7TB. 理想情 ...

  6. 使用Spring Boot开发Restful程序

    一.简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的 ...

  7. synology smb_用于在Synology NAS上测试Spring Boot Web应用程序的JUnit模拟文件

    synology smb 对于将在Synology RS815 + NAS上检查备份文件的Spring Boot应用程序,我们希望能够轻松测试此NAS上存储的文件,而不必复制存储在其上的7TB. 理想 ...

  8. openshift使用_OpenShift DIY:使用Gradle构建Spring Boot / Undertow应用程序

    openshift使用 由于此错误, Gradle 1.6是在OpenShift上运行的最后一个受支持的Gradle版本. 但是从Gradle 2.2开始,这不再是问题,因此,使用自己动手做墨盒,在O ...

  9. 用于在Synology NAS上测试Spring Boot Web应用程序的JUnit模拟文件

    对于将在Synology RS815 + NAS上检查备份文件的Spring Boot应用程序,我们希望能够轻松测试此NAS上存储的文件,而不必复制存储在其上的7TB. 理想情况下,我们希望创建相同的 ...

最新文章

  1. uva11990 动态逆序对
  2. Linux下用户管理
  3. Python 3 的 int 类型详解(为什么 int 不存在溢出问题?)
  4. Flexible 弹性盒子模型之CSS flex-shrink 属性
  5. java 打印abcd_用JAVA编程统计字符串ABCD123!@#$%ab中大写字母、小写字母、数字、其它字符的个数并打印出来...
  6. Python 标准库 —— glob
  7. springboot+vue全栈开发_全栈的自我修养: 002使用@vue/cli进行vue环境搭建 (使用Vue,SpringBoot,Flask完成前后端分离)...
  8. server2019安装mysql_windows server2019下安装mysql8.0.11
  9. ext2文件系统源代码之ext2.h
  10. 安卓版本客户端2.1
  11. C语言:51单片机看这一篇就够了
  12. python封包和解包_python解析网络封包方法
  13. 问题:MongoDB C# driver异常:Truncation resulted in data loss
  14. AutoCAD2024最新版介绍及安装下载
  15. OneDrive登录问题
  16. tf.unstack() 详解 —》理解为主
  17. 元境技术助力元宇宙营销 联合发起商广协元宇宙营销研究院
  18. ar编码matlab仿真_机器人常用可视化仿真工具
  19. 响应式织梦模板婚纱照摄影类网站
  20. 图像平滑之二维离散卷积

热门文章

  1. Wannafly挑战赛17
  2. 深入理解分布式系统中的缓存架构(下)
  3. Java压缩技术(七) TAR——Commons实现
  4. 稍微有点难度的10道java面试题,你会几道?
  5. vue中如何在地图中标点…
  6. 家的味道,家的感觉!!!
  7. 一份感动到哭的成绩单……
  8. JS进行性能测试(计时)
  9. 如何显示服务器控件,Panel Web 服务器控件概述
  10. 安卓 on a null object reference_详解Object.prototype.__proto__