当前位置:网站首页>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
OAuth2ClientRegistrationRepositoryConfigurationInMemoryClientRegistrationRepository@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);
}
}
OAuth2ClientPropertiesClientsConfiguredConditionInMemoryClientRegistrationRepositoryClientRegistrationRepositoryOAuth2ClientPropertiesClientRegistrationInMemoryClientRegistrationRepositoryOAuth2ClientRegistrationRepositoryConfigurationOAuth2ClientAutoConfigurationOAuth2WebSecurityConfigurationOAuth2ClientAutoConfigurationOAuth2ClientRegistrationRepositoryConfigurationOAuth2WebSecurityConfigurationInMemoryOAuth2AuthorizedClientServiceOAuth2AuthorizedClientRepositorySecurityFilterChainInMemoryOAuth2AuthorizedClientServiceOAuth2AuthorizedClientServiceClientRegistrationRepositoryClientRegistrationRepositoryfindByRegistrationIdInMemoryClientRegistrationRepositoryAuthenticatedPrincipalOAuth2AuthorizedClientRepositoryOAuth2AuthorizedClientRepositoryprincipalHttpSessionOAuth2AuthorizedClientRepositorySecurityFilterChain@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
边栏推荐
猜你喜欢

对比学习系列(三)-----SimCLR

2022-08-10:为了给刷题的同学一些奖励,力扣团队引入了一个弹簧游戏机, 游戏机由 N 个特殊弹簧排成一排,编号为 0 到 N-1, 初始有一个小球在编号 0 的弹簧处。若小球在编号为 i 的弹

Do you know the basic process and use case design method of interface testing?

囍楽cloud task source code

2022年值得关注的NFT发展趋势

轻量级网络(一):MobileNet V1,V2, V3系列

【LeetCode】链表题解汇总

XXL-JOB 分布式任务调度中心搭建

FPGA 20个例程篇:11.USB2.0接收并回复CRC16位校验

Square, multi-power, square root calculation in Tf
随机推荐
Kaldi语音识别工具编译问题记录(踩坑记录)
1061 True or False (15 points)
FPGA 20个例程篇:11.USB2.0接收并回复CRC16位校验
JUC并发编程
囍楽cloud task source code
记录一些遇见的bug——Lombok和Mapstruct的冲突导致,A component required a bean of type ‘com.XXX.controller.converter.
CSDN21天学习挑战赛——封装(06)
For the first time, I suspect that there is a bug in selenium4 because the iframe element is not found?
8、Mip-NeRF
轻量级网络(一):MobileNet V1,V2, V3系列
快速幂,逆元的求解
jenkins简单使用
如何通过开源数据库管理工具 DBeaver 连接 TDengine
【云原生】云原生在网络安全领域的应用
Pico neo3 Unity Packaging Settings
老干妈创始人陶华碧现身直播间,70岁“国民女神”拥抱直播电商
4.1ROS运行管理/launch文件
Hibernate 的 Session 缓存相关操作
leetcode:69. x 的平方根
Notable NFT development trends in 2022