javascript
Spring Security——OAuth 2.0 Client自动配置源代码分析
基本概念
OAuth2.0:OAuth2.0是OAuth協議的延續版本,但不向前兼容OAuth 1.0(即完全廢止了OAuth1.0)。 OAuth 2.0關注客戶端開發者的簡易性。要么通過組織在資源擁有者和HTTP服務商之間的被批準的交互動作代表用戶,要么允許第三方應用代表用戶獲得訪問的權限。同時為Web應用,桌面應用和手機,和起居室設備提供專門的認證流程。?
官方文檔
https://docs.spring.io/spring-security/site/docs/5.2.3.RELEASE/reference/html5/#oauth2
Maven
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>源代碼分析
?用于OAuth客戶端支持的Spring Boot 2.x自動配置類為OAuth2ClientAutoConfiguration。
功能:?
- 從配置的OAuth客戶端屬性中注冊ClientRegistrationRepository?@Bean由組成的ClientRegistration。
- 提供WebSecurityConfigurerAdapter?@Configuration并通過啟用OAuth 2.0登錄httpSecurity.oauth2Login()。
?OAuth2ClientAutoConfiguration類中導入OAuth2ClientRegistrationRepositoryConfiguration類 和OAuth2WebSecurityConfiguration類。
OAuth2ClientRegistrationRepositoryConfiguration類 ?
OAuth2ClientProperties類
封裝application.properties中spring.security.oauth2.client的配置信息
OAuth2ClientPropertiesRegistrationAdapter
整合預定義配置和自定義配置
?OAuth2WebSecurityConfiguration類?
自定義配置DEMO?
@Configuration public class OAuth2LoginConfig {@EnableWebSecuritypublic static class OAuth2LoginSecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests(authorizeRequests ->authorizeRequests.anyRequest().authenticated()).oauth2Login(withDefaults());}}@Beanpublic ClientRegistrationRepository clientRegistrationRepository() {return new InMemoryClientRegistrationRepository(this.googleClientRegistration());}private ClientRegistration googleClientRegistration() {return ClientRegistration.withRegistrationId("google").clientId("google-client-id").clientSecret("google-client-secret").clientAuthenticationMethod(ClientAuthenticationMethod.BASIC).authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE).redirectUriTemplate("{baseUrl}/login/oauth2/code/{registrationId}").scope("openid", "profile", "email", "address", "phone").authorizationUri("https://accounts.google.com/o/oauth2/v2/auth").tokenUri("https://www.googleapis.com/oauth2/v4/token").userInfoUri("https://www.googleapis.com/oauth2/v3/userinfo").userNameAttributeName(IdTokenClaimNames.SUB).jwkSetUri("https://www.googleapis.com/oauth2/v3/certs").clientName("Google").build();} }?
參考文章
https://shentuzhigang.blog.csdn.net/article/details/105641709
總結
以上是生活随笔為你收集整理的Spring Security——OAuth 2.0 Client自动配置源代码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows——FTP命令匿名登录解决
- 下一篇: 百度贴吧——因百度账号策略调整导致长时间