当前位置:网站首页>OAuth Client默认配置加载
OAuth Client默认配置加载
2022-08-11 08:15:00 【InfoQ】
前言
配置文件加载
spring:
security:
oauth2:
client:
registration:
gitee:
client-id: gitee-client-id
client-secret: gitee-client-secret
authorization-grant-type: authorization_code
redirect-uri: '{baseUrl}/login/oauth2/code/{registrationId}'
client-name: Gitee
github:
client-id: b4713d47174917b34c28
client-secret: 898389369c2e9f3d1d0ff4543ba1d9b45adfd093
provider:
gitee:
authorization-uri: https://gitee.com/oauth/authorize
token-uri: https://gitee.com/oauth/token
user-info-uri: https://gitee.com/api/v5/user
user-name-attribute: name
OAuth2ClientProperties
@ConfigurationProperties

OAuth2ClientRegistrationRepositoryConfiguration
InMemoryClientRegistrationRepository
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(OAuth2ClientProperties.class)
@Conditional(ClientsConfiguredCondition.class)
class OAuth2ClientRegistrationRepositoryConfiguration {
@Bean
@ConditionalOnMissingBean(ClientRegistrationRepository.class)
InMemoryClientRegistrationRepository clientRegistrationRepository(OAuth2ClientProperties properties) {
List<ClientRegistration> registrations = new ArrayList<>(
OAuth2ClientPropertiesRegistrationAdapter.getClientRegistrations(properties).values());
return new InMemoryClientRegistrationRepository(registrations);
}
}
OAuth2ClientProperties
ClientsConfiguredCondition
InMemoryClientRegistrationRepository
ClientRegistrationRepository
OAuth2ClientProperties
ClientRegistration
InMemoryClientRegistrationRepository
OAuth2ClientRegistrationRepositoryConfiguration
OAuth2ClientAutoConfiguration
OAuth2WebSecurityConfiguration
OAuth2ClientAutoConfiguration
OAuth2ClientRegistrationRepositoryConfiguration
OAuth2WebSecurityConfiguration
InMemoryOAuth2AuthorizedClientService
OAuth2AuthorizedClientRepository
SecurityFilterChain
InMemoryOAuth2AuthorizedClientService
OAuth2AuthorizedClientService
ClientRegistrationRepository
ClientRegistrationRepository
findByRegistrationId
InMemoryClientRegistrationRepository
AuthenticatedPrincipalOAuth2AuthorizedClientRepository
OAuth2AuthorizedClientRepository
principal
HttpSessionOAuth2AuthorizedClientRepository
SecurityFilterChain
@Bean
SecurityFilterChain oauth2SecurityFilterChain(HttpSecurity http) throws Exception {
http.authorizeRequests((requests) -> requests.anyRequest().authenticated());
http.oauth2Login(Customizer.withDefaults());
http.oauth2Client();
return http.build();
}
public final O build() throws Exception {
if (this.building.compareAndSet(false, true)) {
this.object = doBuild();
return this.object;
}
throw new AlreadyBuiltException("This object has already been built");
}
protected final O doBuild() throws Exception {
synchronized (this.configurers) {
//标记构建状态
this.buildState = BuildState.INITIALIZING;
//加载配置前的处理,默认空实现,子类可以覆盖实现
beforeInit();
//加载配置
init();
//修改构建状态
this.buildState = BuildState.CONFIGURING;
//在开始配置之前的处理
beforeConfigure();
//开始配置,调用实现了SecurityConfigurer的configure()
//在这里会将各种内置的过滤器添加到HttpSecurity中
configure();
this.buildState = BuildState.BUILDING;
//开始构建要返回的对象,抽象返回,子类实现构建逻辑
O result = performBuild();
this.buildState = BuildState.BUILT;
return result;
}
}
protected DefaultSecurityFilterChain performBuild() {
ExpressionUrlAuthorizationConfigurer<?> expressionConfigurer = getConfigurer(
ExpressionUrlAuthorizationConfigurer.class);
AuthorizeHttpRequestsConfigurer<?> httpConfigurer = getConfigurer(AuthorizeHttpRequestsConfigurer.class);
boolean oneConfigurerPresent = expressionConfigurer == null ^ httpConfigurer == null;
Assert.state((expressionConfigurer == null && httpConfigurer == null) || oneConfigurerPresent,
"authorizeHttpRequests cannot be used in conjunction with authorizeRequests. Please select just one.");
this.filters.sort(OrderComparator.INSTANCE);
List<Filter> sortedFilters = new ArrayList<>(this.filters.size());
for (Filter filter : this.filters) {
sortedFilters.add(((OrderedFilter) filter).filter);
}
return new DefaultSecurityFilterChain(this.requestMatcher, sortedFilters);
}
DisableEncodeUrlFilter
WebAsyncManagerIntegrationFilter
SecurityContextPersistenceFilter
HeaderWriterFilter
CsrfFilter
LogoutFilter
OAuth2AuthorizationRequestRedirectFilter
OAuth2AuthorizationRequestRedirectFilter
OAuth2LoginAuthenticationFilter
DefaultLoginPageGeneratingFilter
DefaultLogoutPageGeneratingFilter
RequestCacheAwareFilter
SecurityContextHolderAwareRequestFilter
AnonymousAuthenticationFilter
OAuth2AuthorizationCodeGrantFilter
SessionManagementFilter
ExceptionTranslationFilter
FilterSecurityInterceptor
边栏推荐
猜你喜欢
企业服务器主机加固现状分析
JRS303-数据校验
1081 Check Password (15 points)
Mysql JSON对象和JSON数组查询
tf.reduce_mean() and tf.reduce_sum()
2022-08-10:为了给刷题的同学一些奖励,力扣团队引入了一个弹簧游戏机, 游戏机由 N 个特殊弹簧排成一排,编号为 0 到 N-1, 初始有一个小球在编号 0 的弹簧处。若小球在编号为 i 的弹
笔试题大疆08.07
About # SQL problem: how to set the following data by commas into multiple lines, in the form of column display
The easiest trick to support quick renaming of various files
小目标检测3_注意力机制_Self-Attention
随机推荐
Nuget can't find the package problem
零基础SQL教程: 主键、外键和索引 04
Interview questions about Android Service
LoRa芯片的特征
FPGA 20个例程篇:11.USB2.0接收并回复CRC16位校验
老干妈创始人陶华碧现身直播间,70岁“国民女神”拥抱直播电商
抽象类和接口
查找最新人员工资和上上次人员工资的变动情况
oracle数据库中列转行,列会有变化
1036 Programming with Obama (15 points)
Evolution and New Choice of Streaming Structured Data Computing Language
klayout--导出版图为gds文件
Conditional statements in TF; where()
对比学习系列(三)-----SimCLR
1106 2019 Sequence (15 points)
你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
机器学习(二)线性回归
go sqlx 包
迷你图书馆系统(对象+数组)
零基础SQL教程: 基础查询 05