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

  1. 引导兼容OpenID Connect的OAuth2授权服务器/ OpenID提供程序的方法
  2. 与OAuth2授权服务器/ OpenID提供程序集成的旧版Spring Boot / Spring 5方法
  3. 与OAuth2授权服务器/ OpenID Connect提供商集成的更新的Spring Boot 2 / Spring 5方法–这篇文章

这篇文章将探讨使用Spring Security中的本机OAuth2支持为Spring Boot 2应用程序启用SSO的崭新方法。

该文章再次假定第一篇文章中描述的所有内容均已完成。

Spring Boot 2自动配置

Spring Boot 2为Spring Security中的本机OAuth2支持提供了自动配置(请参见org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientAutoConfiguration类)。

通过以下gradle坐标可用的“ spring-security-oauth2-client”库激活了自动配置:

compile "org.springframework.security:spring-security-oauth2-client"

此自动配置会处理一组属性,对于已启动的UAA身份提供程序,该组属性如下:

uaa-base-url: http://localhost:8080/uaaspring:security:oauth2:client:registration:uaa:client-id: client1client-secret: client1authorizationGrantType: authorization_coderedirect_uri_template: "{baseUrl}/login/oauth2/code/{registrationId}"scope: resource.read,resource.write,openid,profileclientName: oauth2-sample-clientprovider:uaa:token-uri: ${uaa-base-url}/oauth/tokenauthorization-uri: ${uaa-base-url}/oauth/authorizeuser-info-uri: ${uaa-base-url}/userinfojwk-set-uri: ${uaa-base-url}/token_keysuserNameAttribute: user_name

如果要依靠Spring Boot 2自动配置支持来实现对本机OAuth2的支持,并实现应用程序的启动,那么在访问应用程序时将看到以下页面:

请注意,此登录页面是由Spring Security OAuth2创建的默认页面,默认情况下会显示注册列表。

单击“ oauth2-sample-client”,将显示身份提供者(在这种情况下,UAA)的登录页面:

对于基于OpenID Connect的流程,应用程序将获得ID令牌以及我正在解码并呈现在页面上的Access令牌:

客制化

我要进行的快速自定义之一是在访问通过“ / secured” uri模式指定的任何受保护页面时重定向到UAA,以下是一组应启用此配置的配置:

package sample.oauth2.configimport 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@Configuration
class OAuth2SecurityConfig : WebSecurityConfigurerAdapter() {override fun configure(web: WebSecurity) {super.configure(web)web.ignoring().mvcMatchers("/favicon.ico","/webjars/**","/css/**")}override fun configure(http: HttpSecurity) {http.csrf().disable()http.authorizeRequests().antMatchers("/secured/**").authenticated().antMatchers("/", "/custom_login").permitAll().anyRequest().authenticated().and().oauth2Login().loginPage("/custom_login")}
}

请参阅上面设置为“ / custom_login”的URI,依次将控制权简单地移交给OAuth2控制的端点,这些端点知道设置适当的参数并重定向到UAA:

@Controller
class LoginController {@RequestMapping("/custom_login")fun loginPage(): String {return "redirect:/oauth2/authorization/uaa"}
}

到此结束对Spring Boo2应用程序中对本机OAuth2支持的探索。

所有示例都可以在我的github存储库中找到 – https://github.com/bijukunjummen/oauth2-boot2

以下参考资料有助于理解OAuth2支持:

1. Spring安全性文档 – https://docs.spring.io/spring-security/site/docs/current/reference/html/

2. Joe Grandja的 Spring One Platform 2017演示文稿 – https://www.youtube.com/watch?v=WhrOCurxFWU

翻译自: https://www.javacodegeeks.com/2018/03/spring-boot-2-native-approach-sso-oauth-2-openid-connect.html

使用OAuth 2 / OpenID Connect的SSO的Spring Boot 2本机方法相关推荐

  1. ASP.NET Core 认证与授权[3]:OAuth OpenID Connect认证

    在上一章中,我们了解到,Cookie认证是一种本地认证方式,通常认证与授权都在同一个服务中,也可以使用Cookie共享的方式分开部署,但局限性较大,而如今随着微服务的流行,更加偏向于将以前的单体应用拆 ...

  2. 通过Keycloak API理解OAuth2与OpenID Connect

    文章目录 通过Keycloak API理解OAuth2与OpenID Connect 前言 OAuth2 介绍 OAuth2核心概念 OAuth2 核心数据 JWT OAuth2 flow Autho ...

  3. IdentityServer4 实现 OpenID Connect 和 OAuth 2.0

    关于 OAuth 2.0 的相关内容,点击查看:ASP.NET WebApi OWIN 实现 OAuth 2.0 OpenID 是一个去中心化的网上身份认证系统.对于支持 OpenID 的网站,用户不 ...

  4. SSO的通用标准OpenID Connect

    文章目录 简介 OpenID Connect是什么 ID Token 请求ID Token ID Token可以做什么 Open Connect认证码授权的例子 User Info 简介 OpenID ...

  5. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)

    在上一篇基于OIDC的SSO的中涉及到了4个Web站点: oidc-server.dev:利用oidc实现的统一认证和授权中心,SSO站点. oidc-client-hybrid.dev:oidc的一 ...

  6. OpenID Connect:OAuth 2.0协议之上的简单身份层

    OpenID Connect是什么?OpenID Connect(目前版本是1.0)是OAuth 2.0协议(可参考本人此篇:OAuth 2.0 / RCF6749 协议解读)之上的简单身份层,用 A ...

  7. IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

    IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...

  8. 一个功能完备的.NET开源OpenID Connect/OAuth 2.0框架——IdentityServer3

    今天推荐的是我一直以来都在关注的一个开源的OpenID Connect/OAuth 2.0服务框架--IdentityServer3.其支持完整的OpenID Connect/OAuth 2.0标准, ...

  9. 入门教程:.NET开源OpenID Connect 和OAuth解决方案IdentityServer v3 介绍 (一)

    入门教程:.NET开源OpenID Connect 和OAuth解决方案IdentityServer v3 介绍 (一) 参考文章: (1)入门教程:.NET开源OpenID Connect 和OAu ...

最新文章

  1. 关于CVPR 2019投稿的一些感想
  2. windows2003+PHP-5.3.8+IIS6.0的安装配置
  3. TCP 三次握手的意义
  4. python学习精华——成长篇
  5. [转] openssl dgst命令完成SHA256哈希校验和RSA数字签名
  6. TCP连接吞吐率和线路效率的总结
  7. python多元线性回归实例_关于多元线性回归分析——PythonSPSS
  8. Julia: 用Julia操作Redis数据库及一些用法
  9. 什么是1号信令、7号信令和PRI信令?
  10. 易语言调用大漠插件判断游戏是否在线
  11. 【Pygame系列一】吃豆人、魂斗罗等多款老游戏,80、90后的你玩过几个?(附素材源码)
  12. GO 语言学习资源整理
  13. SAP中复合角色的应用实例
  14. SQL查找每科最高分和人
  15. 数学分析笔记-有限覆盖定理
  16. Linux后台开发工具箱
  17. 魔百盒哪款型号配置高_哪种电脑配置好 这两款电脑配置高良心价格
  18. 在计算机网络俗称网上邻居上能看到自己,为什么在“网上邻居”中可以看到自己,却看不到其他联网电脑?...
  19. 汉字转拼音 Npinyin
  20. Arcgis经纬度到平面坐标转换

热门文章

  1. 详解Vue中watch的高级用法
  2. LVS三种模式的区别及负载均衡算法
  3. 内存模型是怎么解决缓存一致性的
  4. Oracle入门(七)之表空间
  5. JAVA面试常考系列六
  6. Java内存泄漏介绍
  7. C++描述杭电OJ 2020.绝对值排序 ||
  8. 家的味道,家的感觉!!!
  9. 二分查找非递归方式实现
  10. Linux基本目录解释