Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
20091b75
Commit
20091b75
authored
Jul 06, 2015
by
Dave Syer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Tidy up some oauth2 features and add a test for request-scoped context
parent
774474f8
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
63 additions
and
40 deletions
+63
-40
OAuth2AutoConfiguration.java
...utoconfigure/security/oauth2/OAuth2AutoConfiguration.java
+2
-2
OAuth2AuthorizationServerConfiguration.java
...h2/authserver/OAuth2AuthorizationServerConfiguration.java
+2
-2
EnableOAuth2Sso.java
...autoconfigure/security/oauth2/client/EnableOAuth2Sso.java
+2
-0
OAuth2RestOperationsConfiguration.java
...rity/oauth2/client/OAuth2RestOperationsConfiguration.java
+1
-1
OAuth2SsoDefaultConfiguration.java
...security/oauth2/client/OAuth2SsoDefaultConfiguration.java
+26
-33
SpringSecurityOAuth2AutoConfigurationTests.java
...ty/oauth2/SpringSecurityOAuth2AutoConfigurationTests.java
+2
-2
ResourceServerTokenServicesConfigurationTests.java
...source/ResourceServerTokenServicesConfigurationTests.java
+28
-0
No files found.
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/OAuth2AutoConfiguration.java
View file @
20091b75
...
@@ -23,7 +23,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureBefore;
...
@@ -23,7 +23,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication
;
import
org.springframework.boot.autoconfigure.security.oauth2.authserver.
SpringSecurity
OAuth2AuthorizationServerConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.authserver.OAuth2AuthorizationServerConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2RestOperationsConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2RestOperationsConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.method.OAuth2MethodSecurityConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.method.OAuth2MethodSecurityConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.resource.OAuth2ResourceServerConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.resource.OAuth2ResourceServerConfiguration
;
...
@@ -46,7 +46,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
...
@@ -46,7 +46,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
*/
*/
@Configuration
@Configuration
@ConditionalOnClass
({
OAuth2AccessToken
.
class
,
WebMvcConfigurerAdapter
.
class
})
@ConditionalOnClass
({
OAuth2AccessToken
.
class
,
WebMvcConfigurerAdapter
.
class
})
@Import
({
SpringSecurity
OAuth2AuthorizationServerConfiguration
.
class
,
@Import
({
OAuth2AuthorizationServerConfiguration
.
class
,
OAuth2MethodSecurityConfiguration
.
class
,
OAuth2ResourceServerConfiguration
.
class
,
OAuth2MethodSecurityConfiguration
.
class
,
OAuth2ResourceServerConfiguration
.
class
,
OAuth2RestOperationsConfiguration
.
class
})
OAuth2RestOperationsConfiguration
.
class
})
@AutoConfigureBefore
(
WebMvcAutoConfiguration
.
class
)
@AutoConfigureBefore
(
WebMvcAutoConfiguration
.
class
)
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/authserver/
SpringSecurity
OAuth2AuthorizationServerConfiguration.java
→
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/authserver/OAuth2AuthorizationServerConfiguration.java
View file @
20091b75
...
@@ -60,11 +60,11 @@ import org.springframework.security.oauth2.provider.token.TokenStore;
...
@@ -60,11 +60,11 @@ import org.springframework.security.oauth2.provider.token.TokenStore;
@ConditionalOnMissingBean
(
AuthorizationServerConfigurer
.
class
)
@ConditionalOnMissingBean
(
AuthorizationServerConfigurer
.
class
)
@ConditionalOnBean
(
AuthorizationServerEndpointsConfiguration
.
class
)
@ConditionalOnBean
(
AuthorizationServerEndpointsConfiguration
.
class
)
@EnableConfigurationProperties
@EnableConfigurationProperties
public
class
SpringSecurity
OAuth2AuthorizationServerConfiguration
extends
public
class
OAuth2AuthorizationServerConfiguration
extends
AuthorizationServerConfigurerAdapter
{
AuthorizationServerConfigurerAdapter
{
private
static
final
Log
logger
=
LogFactory
private
static
final
Log
logger
=
LogFactory
.
getLog
(
SpringSecurity
OAuth2AuthorizationServerConfiguration
.
class
);
.
getLog
(
OAuth2AuthorizationServerConfiguration
.
class
);
@Autowired
@Autowired
private
BaseClientDetails
details
;
private
BaseClientDetails
details
;
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/EnableOAuth2Sso.java
View file @
20091b75
...
@@ -23,6 +23,7 @@ import java.lang.annotation.RetentionPolicy;
...
@@ -23,6 +23,7 @@ import java.lang.annotation.RetentionPolicy;
import
java.lang.annotation.Target
;
import
java.lang.annotation.Target
;
import
org.springframework.boot.autoconfigure.security.oauth2.resource.ResourceServerTokenServicesConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.resource.ResourceServerTokenServicesConfiguration
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
;
import
org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter
;
import
org.springframework.security.oauth2.config.annotation.web.configuration.EnableOAuth2Client
;
import
org.springframework.security.oauth2.config.annotation.web.configuration.EnableOAuth2Client
;
...
@@ -42,6 +43,7 @@ import org.springframework.security.oauth2.config.annotation.web.configuration.E
...
@@ -42,6 +43,7 @@ import org.springframework.security.oauth2.config.annotation.web.configuration.E
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
@Documented
@EnableOAuth2Client
@EnableOAuth2Client
@EnableConfigurationProperties
(
OAuth2SsoProperties
.
class
)
@Import
({
OAuth2SsoDefaultConfiguration
.
class
,
OAuth2SsoCustomConfiguration
.
class
,
@Import
({
OAuth2SsoDefaultConfiguration
.
class
,
OAuth2SsoCustomConfiguration
.
class
,
ResourceServerTokenServicesConfiguration
.
class
})
ResourceServerTokenServicesConfiguration
.
class
})
public
@interface
EnableOAuth2Sso
{
public
@interface
EnableOAuth2Sso
{
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2RestOperationsConfiguration.java
View file @
20091b75
...
@@ -138,7 +138,7 @@ public class OAuth2RestOperationsConfiguration {
...
@@ -138,7 +138,7 @@ public class OAuth2RestOperationsConfiguration {
protected
static
class
RequestScopedConfiguration
extends
BaseConfiguration
{
protected
static
class
RequestScopedConfiguration
extends
BaseConfiguration
{
@Bean
@Bean
@Scope
(
value
=
"
session
"
,
proxyMode
=
ScopedProxyMode
.
INTERFACES
)
@Scope
(
value
=
"
request
"
,
proxyMode
=
ScopedProxyMode
.
INTERFACES
)
public
OAuth2ClientContext
oauth2ClientContext
()
{
public
OAuth2ClientContext
oauth2ClientContext
()
{
DefaultOAuth2ClientContext
context
=
new
DefaultOAuth2ClientContext
(
DefaultOAuth2ClientContext
context
=
new
DefaultOAuth2ClientContext
(
new
DefaultAccessTokenRequest
());
new
DefaultAccessTokenRequest
());
...
...
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2SsoDefaultConfiguration.java
View file @
20091b75
...
@@ -21,7 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -21,7 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.boot.autoconfigure.condition.ConditionOutcome
;
import
org.springframework.boot.autoconfigure.condition.ConditionOutcome
;
import
org.springframework.boot.autoconfigure.condition.SpringBootCondition
;
import
org.springframework.boot.autoconfigure.condition.SpringBootCondition
;
import
org.springframework.boot.autoconfigure.security.SecurityProperties
;
import
org.springframework.boot.autoconfigure.security.SecurityProperties
;
import
org.springframework.boot.
context.properties.EnableConfigurationProperties
;
import
org.springframework.boot.
autoconfigure.security.oauth2.client.OAuth2SsoDefaultConfiguration.NeedsWebSecurityCondition
;
import
org.springframework.context.annotation.ConditionContext
;
import
org.springframework.context.annotation.ConditionContext
;
import
org.springframework.context.annotation.Conditional
;
import
org.springframework.context.annotation.Conditional
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
...
@@ -41,46 +41,39 @@ import org.springframework.util.ClassUtils;
...
@@ -41,46 +41,39 @@ import org.springframework.util.ClassUtils;
* @since 1.3.0
* @since 1.3.0
*/
*/
@Configuration
@Configuration
@EnableConfigurationProperties
(
OAuth2SsoProperties
.
class
)
@Conditional
(
NeedsWebSecurityCondition
.
class
)
public
class
OAuth2SsoDefaultConfiguration
{
public
class
OAuth2SsoDefaultConfiguration
extends
WebSecurityConfigurerAdapter
implements
Ordered
{
@Configuration
@Autowired
@Conditional
(
NeedsWebSecurityCondition
.
class
)
BeanFactory
beanFactory
;
protected
static
class
WebSecurityConfiguration
extends
WebSecurityConfigurerAdapter
implements
Ordered
{
@Autowired
@Autowired
BeanFactory
beanFactory
;
OAuth2SsoProperties
sso
;
@Autowired
@Override
OAuth2SsoProperties
sso
;
protected
void
configure
(
HttpSecurity
http
)
throws
Exception
{
http
.
antMatcher
(
"/**"
).
authorizeRequests
().
anyRequest
().
authenticated
();
new
SsoSecurityConfigurer
(
this
.
beanFactory
).
configure
(
http
);
}
@Override
@Override
protected
void
configure
(
HttpSecurity
http
)
throws
Exception
{
public
int
getOrder
()
{
http
.
antMatcher
(
"/**"
).
authorizeRequests
().
anyRequest
().
authenticated
();
if
(
this
.
sso
.
getFilterOrder
()
!=
null
)
{
new
SsoSecurityConfigurer
(
this
.
beanFactory
).
configure
(
http
);
return
this
.
sso
.
getFilterOrder
(
);
}
}
if
(
ClassUtils
@Override
.
isPresent
(
public
int
getOrder
()
{
"org.springframework.boot.actuate.autoconfigure.ManagementServerProperties"
,
if
(
this
.
sso
.
getFilterOrder
()
!=
null
)
{
null
))
{
return
this
.
sso
.
getFilterOrder
();
// If > BASIC_AUTH_ORDER then the existing rules for the actuator
}
// endpoints will take precedence. This value is < BASIC_AUTH_ORDER.
if
(
ClassUtils
return
SecurityProperties
.
ACCESS_OVERRIDE_ORDER
-
5
;
.
isPresent
(
"org.springframework.boot.actuate.autoconfigure.ManagementServerProperties"
,
null
))
{
// If > BASIC_AUTH_ORDER then the existing rules for the actuator
// endpoints
// will take precedence. This value is < BASIC_AUTH_ORDER.
return
SecurityProperties
.
ACCESS_OVERRIDE_ORDER
-
5
;
}
return
SecurityProperties
.
ACCESS_OVERRIDE_ORDER
;
}
}
return
SecurityProperties
.
ACCESS_OVERRIDE_ORDER
;
}
}
pr
ivate
static
class
NeedsWebSecurityCondition
extends
SpringBootCondition
{
pr
otected
static
class
NeedsWebSecurityCondition
extends
SpringBootCondition
{
@Override
@Override
public
ConditionOutcome
getMatchOutcome
(
ConditionContext
context
,
public
ConditionOutcome
getMatchOutcome
(
ConditionContext
context
,
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/oauth2/SpringSecurityOAuth2AutoConfigurationTests.java
View file @
20091b75
...
@@ -24,7 +24,7 @@ import org.junit.Test;
...
@@ -24,7 +24,7 @@ import org.junit.Test;
import
org.springframework.aop.support.AopUtils
;
import
org.springframework.aop.support.AopUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration
;
import
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.authserver.
SpringSecurity
OAuth2AuthorizationServerConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.authserver.OAuth2AuthorizationServerConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.method.OAuth2MethodSecurityConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.method.OAuth2MethodSecurityConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.resource.OAuth2ResourceServerConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.resource.OAuth2ResourceServerConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.resource.ResourceServerProperties
;
import
org.springframework.boot.autoconfigure.security.oauth2.resource.ResourceServerProperties
;
...
@@ -104,7 +104,7 @@ public class SpringSecurityOAuth2AutoConfigurationTests {
...
@@ -104,7 +104,7 @@ public class SpringSecurityOAuth2AutoConfigurationTests {
private
static
final
Class
<?>
RESOURCE_SERVER_CONFIG
=
OAuth2ResourceServerConfiguration
.
class
;
private
static
final
Class
<?>
RESOURCE_SERVER_CONFIG
=
OAuth2ResourceServerConfiguration
.
class
;
private
static
final
Class
<?>
AUTHORIZATION_SERVER_CONFIG
=
SpringSecurity
OAuth2AuthorizationServerConfiguration
.
class
;
private
static
final
Class
<?>
AUTHORIZATION_SERVER_CONFIG
=
OAuth2AuthorizationServerConfiguration
.
class
;
private
AnnotationConfigEmbeddedWebApplicationContext
context
;
private
AnnotationConfigEmbeddedWebApplicationContext
context
;
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/oauth2/resource/ResourceServerTokenServicesConfigurationTests.java
View file @
20091b75
...
@@ -19,12 +19,16 @@ package org.springframework.boot.autoconfigure.security.oauth2.resource;
...
@@ -19,12 +19,16 @@ package org.springframework.boot.autoconfigure.security.oauth2.resource;
import
org.junit.After
;
import
org.junit.After
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.config.BeanDefinition
;
import
org.springframework.beans.factory.support.BeanDefinitionRegistry
;
import
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration
;
import
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration
;
import
org.springframework.boot.autoconfigure.security.oauth2.OAuth2ClientProperties
;
import
org.springframework.boot.autoconfigure.security.oauth2.OAuth2ClientProperties
;
import
org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2RestOperationsConfiguration
;
import
org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration
;
import
org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration
;
import
org.springframework.boot.autoconfigure.social.SocialWebAutoConfiguration
;
import
org.springframework.boot.autoconfigure.social.SocialWebAutoConfiguration
;
import
org.springframework.boot.builder.SpringApplicationBuilder
;
import
org.springframework.boot.builder.SpringApplicationBuilder
;
import
org.springframework.boot.context.embedded.EmbeddedServletContainerFactory
;
import
org.springframework.boot.context.embedded.EmbeddedServletContainerFactory
;
import
org.springframework.boot.context.embedded.MockEmbeddedServletContainerFactory
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.boot.test.EnvironmentTestUtils
;
import
org.springframework.boot.test.EnvironmentTestUtils
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.ConfigurableApplicationContext
;
...
@@ -37,6 +41,7 @@ import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
...
@@ -37,6 +41,7 @@ import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
import
org.springframework.security.oauth2.provider.token.RemoteTokenServices
;
import
org.springframework.security.oauth2.provider.token.RemoteTokenServices
;
import
org.springframework.social.connect.ConnectionFactoryLocator
;
import
org.springframework.social.connect.ConnectionFactoryLocator
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertNotNull
;
import
static
org
.
junit
.
Assert
.
assertNotNull
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
mock
;
...
@@ -96,6 +101,19 @@ public class ResourceServerTokenServicesConfigurationTests {
...
@@ -96,6 +101,19 @@ public class ResourceServerTokenServicesConfigurationTests {
assertNotNull
(
services
);
assertNotNull
(
services
);
}
}
@Test
public
void
userInfoNoClient
()
{
EnvironmentTestUtils
.
addEnvironment
(
this
.
environment
,
"spring.oauth2.client.clientId=acme"
,
"spring.oauth2.resource.userInfoUri:http://example.com"
,
"server.port=-1"
,
"debug=true"
);
this
.
context
=
new
SpringApplicationBuilder
(
ResourceNoClientConfiguration
.
class
)
.
environment
(
this
.
environment
).
web
(
true
).
run
();
BeanDefinition
bean
=
((
BeanDefinitionRegistry
)
this
.
context
)
.
getBeanDefinition
(
"scopedTarget.oauth2ClientContext"
);
assertEquals
(
"request"
,
bean
.
getScope
());
}
@Test
@Test
public
void
preferUserInfo
()
{
public
void
preferUserInfo
()
{
EnvironmentTestUtils
.
addEnvironment
(
this
.
environment
,
EnvironmentTestUtils
.
addEnvironment
(
this
.
environment
,
...
@@ -154,6 +172,16 @@ public class ResourceServerTokenServicesConfigurationTests {
...
@@ -154,6 +172,16 @@ public class ResourceServerTokenServicesConfigurationTests {
}
}
@Import
({
OAuth2RestOperationsConfiguration
.
class
})
protected
static
class
ResourceNoClientConfiguration
extends
ResourceConfiguration
{
@Bean
public
MockEmbeddedServletContainerFactory
embeddedServletContainerFactory
()
{
return
new
MockEmbeddedServletContainerFactory
();
}
}
@Configuration
@Configuration
protected
static
class
ResourceServerPropertiesConfiguration
{
protected
static
class
ResourceServerPropertiesConfiguration
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment