使用OAuth 2 / OpenID Connect的SSO的Spring Boot 2本机方法
这篇文章是3篇系列文章的最后一部分,该系列文章探讨了如何为基于Spring Boot 2的应用程序启用OAuth2提供程序SSO。 3个帖子是:
- 引导兼容OpenID Connect的OAuth2授权服务器/ OpenID提供程序的方法
- 与OAuth2授权服务器/ OpenID提供程序集成的旧版Spring Boot / Spring 5方法
- 与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本机方法相关推荐
- ASP.NET Core 认证与授权[3]:OAuth OpenID Connect认证
在上一章中,我们了解到,Cookie认证是一种本地认证方式,通常认证与授权都在同一个服务中,也可以使用Cookie共享的方式分开部署,但局限性较大,而如今随着微服务的流行,更加偏向于将以前的单体应用拆 ...
- 通过Keycloak API理解OAuth2与OpenID Connect
文章目录 通过Keycloak API理解OAuth2与OpenID Connect 前言 OAuth2 介绍 OAuth2核心概念 OAuth2 核心数据 JWT OAuth2 flow Autho ...
- IdentityServer4 实现 OpenID Connect 和 OAuth 2.0
关于 OAuth 2.0 的相关内容,点击查看:ASP.NET WebApi OWIN 实现 OAuth 2.0 OpenID 是一个去中心化的网上身份认证系统.对于支持 OpenID 的网站,用户不 ...
- SSO的通用标准OpenID Connect
文章目录 简介 OpenID Connect是什么 ID Token 请求ID Token ID Token可以做什么 Open Connect认证码授权的例子 User Info 简介 OpenID ...
- 基于OIDC(OpenID Connect)的SSO(纯JS客户端)
在上一篇基于OIDC的SSO的中涉及到了4个Web站点: oidc-server.dev:利用oidc实现的统一认证和授权中心,SSO站点. oidc-client-hybrid.dev:oidc的一 ...
- OpenID Connect:OAuth 2.0协议之上的简单身份层
OpenID Connect是什么?OpenID Connect(目前版本是1.0)是OAuth 2.0协议(可参考本人此篇:OAuth 2.0 / RCF6749 协议解读)之上的简单身份层,用 A ...
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...
- 一个功能完备的.NET开源OpenID Connect/OAuth 2.0框架——IdentityServer3
今天推荐的是我一直以来都在关注的一个开源的OpenID Connect/OAuth 2.0服务框架--IdentityServer3.其支持完整的OpenID Connect/OAuth 2.0标准, ...
- 入门教程:.NET开源OpenID Connect 和OAuth解决方案IdentityServer v3 介绍 (一)
入门教程:.NET开源OpenID Connect 和OAuth解决方案IdentityServer v3 介绍 (一) 参考文章: (1)入门教程:.NET开源OpenID Connect 和OAu ...
最新文章
- 关于CVPR 2019投稿的一些感想
- windows2003+PHP-5.3.8+IIS6.0的安装配置
- TCP 三次握手的意义
- python学习精华——成长篇
- [转] openssl dgst命令完成SHA256哈希校验和RSA数字签名
- TCP连接吞吐率和线路效率的总结
- python多元线性回归实例_关于多元线性回归分析——PythonSPSS
- Julia: 用Julia操作Redis数据库及一些用法
- 什么是1号信令、7号信令和PRI信令?
- 易语言调用大漠插件判断游戏是否在线
- 【Pygame系列一】吃豆人、魂斗罗等多款老游戏,80、90后的你玩过几个?(附素材源码)
- GO 语言学习资源整理
- SAP中复合角色的应用实例
- SQL查找每科最高分和人
- 数学分析笔记-有限覆盖定理
- Linux后台开发工具箱
- 魔百盒哪款型号配置高_哪种电脑配置好 这两款电脑配置高良心价格
- 在计算机网络俗称网上邻居上能看到自己,为什么在“网上邻居”中可以看到自己,却看不到其他联网电脑?...
- 汉字转拼音 Npinyin
- Arcgis经纬度到平面坐标转换