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
0402223f
Commit
0402223f
authored
Oct 06, 2017
by
Madhura Bhave
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replace CommonOAuth2Provider
Closes gh-10543
parent
3ced8412
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1 addition
and
262 deletions
+1
-262
CommonOAuth2Provider.java
...onfigure/security/oauth2/client/CommonOAuth2Provider.java
+0
-119
OAuth2ClientPropertiesRegistrationAdapter.java
...th2/client/OAuth2ClientPropertiesRegistrationAdapter.java
+1
-0
CommonOAuth2ProviderTests.java
...ure/security/oauth2/client/CommonOAuth2ProviderTests.java
+0
-143
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/CommonOAuth2Provider.java
deleted
100644 → 0
View file @
3ced8412
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
autoconfigure
.
security
.
oauth2
.
client
;
import
org.springframework.security.oauth2.client.registration.ClientRegistration
;
import
org.springframework.security.oauth2.client.registration.ClientRegistration.Builder
;
import
org.springframework.security.oauth2.core.AuthorizationGrantType
;
import
org.springframework.security.oauth2.core.ClientAuthenticationMethod
;
/**
* Common OAuth2 Providers that can be used to create
* {@link org.springframework.security.oauth2.client.registration.ClientRegistration.Builder
* builders} pre-configured with sensible defaults.
*
* @author Phillip Webb
* @since 2.0.0
*/
public
enum
CommonOAuth2Provider
{
GOOGLE
{
@Override
public
Builder
getBuilder
(
String
registrationId
)
{
ClientRegistration
.
Builder
builder
=
getBuilder
(
registrationId
,
ClientAuthenticationMethod
.
BASIC
,
DEFAULT_REDIRECT_URL
);
builder
.
scope
(
"openid"
,
"profile"
,
"email"
,
"address"
,
"phone"
);
builder
.
authorizationUri
(
"https://accounts.google.com/o/oauth2/v2/auth"
);
builder
.
tokenUri
(
"https://www.googleapis.com/oauth2/v4/token"
);
builder
.
jwkSetUri
(
"https://www.googleapis.com/oauth2/v3/certs"
);
builder
.
userInfoUri
(
"https://www.googleapis.com/oauth2/v3/userinfo"
);
builder
.
clientName
(
"Google"
);
return
builder
;
}
},
GITHUB
{
@Override
public
Builder
getBuilder
(
String
registrationId
)
{
ClientRegistration
.
Builder
builder
=
getBuilder
(
registrationId
,
ClientAuthenticationMethod
.
BASIC
,
DEFAULT_REDIRECT_URL
);
builder
.
scope
(
"user"
);
builder
.
authorizationUri
(
"https://github.com/login/oauth/authorize"
);
builder
.
tokenUri
(
"https://github.com/login/oauth/access_token"
);
builder
.
userInfoUri
(
"https://api.github.com/user"
);
builder
.
userNameAttributeName
(
"name"
);
builder
.
clientName
(
"GitHub"
);
return
builder
;
}
},
FACEBOOK
{
@Override
public
Builder
getBuilder
(
String
registrationId
)
{
ClientRegistration
.
Builder
builder
=
getBuilder
(
registrationId
,
ClientAuthenticationMethod
.
POST
,
DEFAULT_REDIRECT_URL
);
builder
.
scope
(
"public_profile"
,
"email"
);
builder
.
authorizationUri
(
"https://www.facebook.com/v2.8/dialog/oauth"
);
builder
.
tokenUri
(
"https://graph.facebook.com/v2.8/oauth/access_token"
);
builder
.
userInfoUri
(
"https://graph.facebook.com/me"
);
builder
.
userNameAttributeName
(
"name"
);
builder
.
clientName
(
"Facebook"
);
return
builder
;
}
},
OKTA
{
@Override
public
Builder
getBuilder
(
String
registrationId
)
{
ClientRegistration
.
Builder
builder
=
getBuilder
(
registrationId
,
ClientAuthenticationMethod
.
BASIC
,
DEFAULT_REDIRECT_URL
);
builder
.
scope
(
"openid"
,
"profile"
,
"email"
,
"address"
,
"phone"
);
builder
.
clientName
(
"Okta"
);
return
builder
;
}
};
private
static
final
String
DEFAULT_REDIRECT_URL
=
"{scheme}://{serverName}:{serverPort}{contextPath}/oauth2/authorize/code/{registrationId}"
;
protected
final
ClientRegistration
.
Builder
getBuilder
(
String
registrationId
,
ClientAuthenticationMethod
method
,
String
redirectUri
)
{
ClientRegistration
.
Builder
builder
=
new
ClientRegistration
.
Builder
(
registrationId
);
builder
.
clientAuthenticationMethod
(
method
);
builder
.
authorizationGrantType
(
AuthorizationGrantType
.
AUTHORIZATION_CODE
);
builder
.
redirectUri
(
redirectUri
);
return
builder
;
}
/**
* Create a new
* {@link org.springframework.security.oauth2.client.registration.ClientRegistration.Builder
* ClientRegistration.Builder} pre-initialized with the provider settings.
* @param registrationId the registration-id used with the new builder
* @return a builder instance
*/
public
abstract
ClientRegistration
.
Builder
getBuilder
(
String
registrationId
);
}
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/security/oauth2/client/OAuth2ClientPropertiesRegistrationAdapter.java
View file @
0402223f
...
@@ -26,6 +26,7 @@ import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2Clien
...
@@ -26,6 +26,7 @@ import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2Clien
import
org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties.Registration
;
import
org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties.Registration
;
import
org.springframework.boot.context.properties.bind.convert.BinderConversionService
;
import
org.springframework.boot.context.properties.bind.convert.BinderConversionService
;
import
org.springframework.core.convert.ConversionException
;
import
org.springframework.core.convert.ConversionException
;
import
org.springframework.security.config.oauth2.client.CommonOAuth2Provider
;
import
org.springframework.security.oauth2.client.registration.ClientRegistration
;
import
org.springframework.security.oauth2.client.registration.ClientRegistration
;
import
org.springframework.security.oauth2.client.registration.ClientRegistration.Builder
;
import
org.springframework.security.oauth2.client.registration.ClientRegistration.Builder
;
import
org.springframework.security.oauth2.core.AuthorizationGrantType
;
import
org.springframework.security.oauth2.core.AuthorizationGrantType
;
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/security/oauth2/client/CommonOAuth2ProviderTests.java
deleted
100644 → 0
View file @
3ced8412
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
autoconfigure
.
security
.
oauth2
.
client
;
import
org.junit.Test
;
import
org.springframework.security.oauth2.client.registration.ClientRegistration
;
import
org.springframework.security.oauth2.client.registration.ClientRegistration.Builder
;
import
org.springframework.security.oauth2.client.registration.ClientRegistration.ProviderDetails
;
import
org.springframework.security.oauth2.core.AuthorizationGrantType
;
import
org.springframework.security.oauth2.core.ClientAuthenticationMethod
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link CommonOAuth2Provider}.
*
* @author Phillip Webb
*/
public
class
CommonOAuth2ProviderTests
{
private
static
final
String
DEFAULT_REDIRECT_URL
=
"{scheme}://{serverName}:{serverPort}{contextPath}/oauth2/authorize/code/{registrationId}"
;
@Test
public
void
getBuilderWhenGoogleShouldHaveGoogleSettings
()
throws
Exception
{
ClientRegistration
registration
=
build
(
CommonOAuth2Provider
.
GOOGLE
);
ProviderDetails
providerDetails
=
registration
.
getProviderDetails
();
assertThat
(
providerDetails
.
getAuthorizationUri
())
.
isEqualTo
(
"https://accounts.google.com/o/oauth2/v2/auth"
);
assertThat
(
providerDetails
.
getTokenUri
())
.
isEqualTo
(
"https://www.googleapis.com/oauth2/v4/token"
);
assertThat
(
providerDetails
.
getUserInfoEndpoint
().
getUri
())
.
isEqualTo
(
"https://www.googleapis.com/oauth2/v3/userinfo"
);
assertThat
(
providerDetails
.
getUserInfoEndpoint
().
getUserNameAttributeName
())
.
isEqualTo
(
null
);
assertThat
(
providerDetails
.
getJwkSetUri
())
.
isEqualTo
(
"https://www.googleapis.com/oauth2/v3/certs"
);
assertThat
(
registration
.
getClientAuthenticationMethod
())
.
isEqualTo
(
ClientAuthenticationMethod
.
BASIC
);
assertThat
(
registration
.
getAuthorizationGrantType
())
.
isEqualTo
(
AuthorizationGrantType
.
AUTHORIZATION_CODE
);
assertThat
(
registration
.
getRedirectUri
()).
isEqualTo
(
DEFAULT_REDIRECT_URL
);
assertThat
(
registration
.
getScope
()).
containsOnly
(
"openid"
,
"profile"
,
"email"
,
"address"
,
"phone"
);
assertThat
(
registration
.
getClientName
()).
isEqualTo
(
"Google"
);
assertThat
(
registration
.
getRegistrationId
()).
isEqualTo
(
"123"
);
}
@Test
public
void
getBuilderWhenGitHubShouldHaveGitHubSettings
()
throws
Exception
{
ClientRegistration
registration
=
build
(
CommonOAuth2Provider
.
GITHUB
);
ProviderDetails
providerDetails
=
registration
.
getProviderDetails
();
assertThat
(
providerDetails
.
getAuthorizationUri
())
.
isEqualTo
(
"https://github.com/login/oauth/authorize"
);
assertThat
(
providerDetails
.
getTokenUri
())
.
isEqualTo
(
"https://github.com/login/oauth/access_token"
);
assertThat
(
providerDetails
.
getUserInfoEndpoint
().
getUri
())
.
isEqualTo
(
"https://api.github.com/user"
);
assertThat
(
providerDetails
.
getUserInfoEndpoint
().
getUserNameAttributeName
())
.
isEqualTo
(
"name"
);
assertThat
(
providerDetails
.
getJwkSetUri
()).
isNull
();
assertThat
(
registration
.
getClientAuthenticationMethod
())
.
isEqualTo
(
ClientAuthenticationMethod
.
BASIC
);
assertThat
(
registration
.
getAuthorizationGrantType
())
.
isEqualTo
(
AuthorizationGrantType
.
AUTHORIZATION_CODE
);
assertThat
(
registration
.
getRedirectUri
()).
isEqualTo
(
DEFAULT_REDIRECT_URL
);
assertThat
(
registration
.
getScope
()).
containsOnly
(
"user"
);
assertThat
(
registration
.
getClientName
()).
isEqualTo
(
"GitHub"
);
assertThat
(
registration
.
getRegistrationId
()).
isEqualTo
(
"123"
);
}
@Test
public
void
getBuilderWhenFacebookShouldHaveFacebookSettings
()
throws
Exception
{
ClientRegistration
registration
=
build
(
CommonOAuth2Provider
.
FACEBOOK
);
ProviderDetails
providerDetails
=
registration
.
getProviderDetails
();
assertThat
(
providerDetails
.
getAuthorizationUri
())
.
isEqualTo
(
"https://www.facebook.com/v2.8/dialog/oauth"
);
assertThat
(
providerDetails
.
getTokenUri
())
.
isEqualTo
(
"https://graph.facebook.com/v2.8/oauth/access_token"
);
assertThat
(
providerDetails
.
getUserInfoEndpoint
().
getUri
())
.
isEqualTo
(
"https://graph.facebook.com/me"
);
assertThat
(
providerDetails
.
getUserInfoEndpoint
().
getUserNameAttributeName
())
.
isEqualTo
(
"name"
);
assertThat
(
providerDetails
.
getJwkSetUri
()).
isNull
();
assertThat
(
registration
.
getClientAuthenticationMethod
())
.
isEqualTo
(
ClientAuthenticationMethod
.
POST
);
assertThat
(
registration
.
getAuthorizationGrantType
())
.
isEqualTo
(
AuthorizationGrantType
.
AUTHORIZATION_CODE
);
assertThat
(
registration
.
getRedirectUri
()).
isEqualTo
(
DEFAULT_REDIRECT_URL
);
assertThat
(
registration
.
getScope
()).
containsOnly
(
"public_profile"
,
"email"
);
assertThat
(
registration
.
getClientName
()).
isEqualTo
(
"Facebook"
);
assertThat
(
registration
.
getRegistrationId
()).
isEqualTo
(
"123"
);
}
@Test
public
void
getBuilderWhenOktaShouldHaveOktaSettings
()
throws
Exception
{
ClientRegistration
registration
=
builder
(
CommonOAuth2Provider
.
OKTA
)
.
authorizationUri
(
"http://example.com/auth"
)
.
tokenUri
(
"http://example.com/token"
)
.
userInfoUri
(
"http://example.com/info"
).
build
();
ProviderDetails
providerDetails
=
registration
.
getProviderDetails
();
assertThat
(
providerDetails
.
getAuthorizationUri
())
.
isEqualTo
(
"http://example.com/auth"
);
assertThat
(
providerDetails
.
getTokenUri
()).
isEqualTo
(
"http://example.com/token"
);
assertThat
(
providerDetails
.
getUserInfoEndpoint
().
getUri
())
.
isEqualTo
(
"http://example.com/info"
);
assertThat
(
providerDetails
.
getUserInfoEndpoint
().
getUserNameAttributeName
())
.
isEqualTo
(
null
);
assertThat
(
providerDetails
.
getJwkSetUri
()).
isNull
();
assertThat
(
registration
.
getClientAuthenticationMethod
())
.
isEqualTo
(
ClientAuthenticationMethod
.
BASIC
);
assertThat
(
registration
.
getAuthorizationGrantType
())
.
isEqualTo
(
AuthorizationGrantType
.
AUTHORIZATION_CODE
);
assertThat
(
registration
.
getRedirectUri
()).
isEqualTo
(
DEFAULT_REDIRECT_URL
);
assertThat
(
registration
.
getScope
()).
containsOnly
(
"openid"
,
"profile"
,
"email"
,
"address"
,
"phone"
);
assertThat
(
registration
.
getClientName
()).
isEqualTo
(
"Okta"
);
assertThat
(
registration
.
getRegistrationId
()).
isEqualTo
(
"123"
);
}
private
ClientRegistration
build
(
CommonOAuth2Provider
provider
)
{
return
builder
(
provider
).
build
();
}
private
Builder
builder
(
CommonOAuth2Provider
provider
)
{
return
provider
.
getBuilder
(
"123"
).
clientId
(
"abcd"
).
clientSecret
(
"secret"
);
}
}
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