Skip to content

Commit ea5a539

Browse files
authored
Merge pull request #3345 from fhanik/pr/approvals-endpoints.xml
move approvalsSecurity filterchain to java
2 parents c002fd0 + bd3a111 commit ea5a539

File tree

6 files changed

+76
-31
lines changed

6 files changed

+76
-31
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package org.cloudfoundry.identity.uaa.approval.beans;
2+
3+
import org.cloudfoundry.identity.uaa.oauth.UaaTokenServices;
4+
import org.cloudfoundry.identity.uaa.oauth.provider.authentication.OAuth2AuthenticationManager;
5+
import org.cloudfoundry.identity.uaa.oauth.provider.authentication.OAuth2AuthenticationProcessingFilter;
6+
import org.cloudfoundry.identity.uaa.oauth.provider.error.OAuth2AccessDeniedHandler;
7+
import org.cloudfoundry.identity.uaa.oauth.provider.error.OAuth2AuthenticationEntryPoint;
8+
import org.cloudfoundry.identity.uaa.web.FilterChainOrder;
9+
import org.cloudfoundry.identity.uaa.web.UaaFilterChain;
10+
import org.springframework.beans.factory.annotation.Autowired;
11+
import org.springframework.beans.factory.annotation.Qualifier;
12+
import org.springframework.context.annotation.Bean;
13+
import org.springframework.context.annotation.Configuration;
14+
import org.springframework.core.annotation.Order;
15+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
16+
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
17+
import org.springframework.security.config.annotation.web.configurers.CsrfConfigurer;
18+
import org.springframework.security.config.http.SessionCreationPolicy;
19+
import org.springframework.security.web.SecurityFilterChain;
20+
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
21+
22+
import static org.cloudfoundry.identity.uaa.web.AuthorizationManagersUtils.anyOf;
23+
24+
@Configuration
25+
@EnableWebSecurity
26+
public class ApprovalsSecurityConfiguration {
27+
28+
@Autowired
29+
@Qualifier("tokenServices")
30+
private UaaTokenServices tokenServices;
31+
32+
@Autowired
33+
@Qualifier("oauthAuthenticationEntryPoint")
34+
OAuth2AuthenticationEntryPoint oauthAuthenticationEntryPoint;
35+
36+
@Autowired
37+
@Qualifier("oauthAccessDeniedHandler")
38+
OAuth2AccessDeniedHandler oauthAccessDeniedHandler;
39+
40+
41+
@Bean
42+
OAuth2AuthenticationProcessingFilter approvalsResourceAuthenticationFilter() {
43+
OAuth2AuthenticationProcessingFilter bean = new OAuth2AuthenticationProcessingFilter();
44+
OAuth2AuthenticationManager authenticationManager = new OAuth2AuthenticationManager();
45+
authenticationManager.setResourceId("oauth");
46+
authenticationManager.setTokenServices(tokenServices);
47+
bean.setAuthenticationManager(authenticationManager);
48+
return bean;
49+
}
50+
@Bean
51+
@Order(FilterChainOrder.APPROVAL)
52+
UaaFilterChain approvalsSecurity(HttpSecurity http) throws Exception {
53+
SecurityFilterChain chain = http
54+
.securityMatcher("/approvals/**")
55+
.authorizeHttpRequests( auth -> {
56+
auth.requestMatchers("/**").access(anyOf(true).hasScope("oauth.approvals"));
57+
auth.anyRequest().denyAll();
58+
})
59+
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
60+
.addFilterBefore(approvalsResourceAuthenticationFilter(), BasicAuthenticationFilter.class)
61+
.csrf(CsrfConfigurer::disable)
62+
.exceptionHandling(exception ->
63+
exception.authenticationEntryPoint(oauthAuthenticationEntryPoint)
64+
.accessDeniedHandler(oauthAccessDeniedHandler)
65+
)
66+
.build();
67+
68+
return new UaaFilterChain(chain, "approvalsSecurity");
69+
}
70+
}

server/src/main/java/org/cloudfoundry/identity/uaa/scim/beans/ScimSecurityConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class ScimSecurityConfiguration {
3434
@Qualifier("tokenServices")
3535
private UaaTokenServices tokenServices;
3636

37-
@Autowired()
37+
@Autowired
3838
@Qualifier("oauthAuthenticationEntryPoint")
3939
OAuth2AuthenticationEntryPoint oauthAuthenticationEntryPoint;
4040

server/src/main/java/org/cloudfoundry/identity/uaa/web/FilterChainOrder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class FilterChainOrder {
2121
// multitenant-endpoints.xml: 400
2222

2323
// approval-endpoints.xml: 500
24+
public static final int APPROVAL = 500;
2425

2526
// client-admin-endpoints.xml: 600
2627

uaa/src/main/webapp/WEB-INF/spring-servlet.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,6 @@
351351
<import resource="spring/login-server-security.xml"/>
352352
<import resource="spring/oauth-endpoints.xml"/>
353353
<import resource="spring/multitenant-endpoints.xml"/>
354-
<import resource="spring/approvals-endpoints.xml"/>
355354
<import resource="spring/client-admin-endpoints.xml"/>
356355

357356
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">

uaa/src/main/webapp/WEB-INF/spring/approvals-endpoints.xml

Lines changed: 0 additions & 29 deletions
This file was deleted.

uaa/src/main/webapp/WEB-INF/spring/oauth-endpoints.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,10 @@
527527
<constructor-arg name="approvalService" ref="approvalService"/>
528528
</bean>
529529

530+
<bean id="approvalStore" class="org.cloudfoundry.identity.uaa.approval.JdbcApprovalStore">
531+
<constructor-arg ref="jdbcTemplate"/>
532+
</bean>
533+
530534
<bean id="approvalService" class="org.cloudfoundry.identity.uaa.approval.ApprovalService">
531535
<constructor-arg name="timeService" ref="timeService"/>
532536
<constructor-arg name="approvalStore" ref="approvalStore"/>

0 commit comments

Comments
 (0)