org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties Maven / Gradle / Ivy
/*
* 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 java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.annotation.PostConstruct;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.util.StringUtils;
/**
* OAuth 2.0 client properties.
*
* @author Madhura Bhave
* @author Phillip Webb
*/
@ConfigurationProperties(prefix = "spring.security.oauth2.client")
public class OAuth2ClientProperties {
/**
* OAuth provider details.
*/
private final Map provider = new HashMap<>();
/**
* OAuth client registrations.
*/
private final Map registration = new HashMap<>();
public Map getProvider() {
return this.provider;
}
public Map getRegistration() {
return this.registration;
}
@PostConstruct
public void validate() {
this.getRegistration().values().forEach(this::validateRegistration);
}
private void validateRegistration(Registration registration) {
if (!StringUtils.hasText(registration.getClientId())) {
throw new IllegalStateException("Client id must not be empty.");
}
if (!StringUtils.hasText(registration.getClientSecret())) {
throw new IllegalStateException("Client secret must not be empty.");
}
}
/**
* A single client registration.
*/
public static class Registration {
/**
* Reference to the OAuth 2.0 provider to use. May reference an element from the
* 'provider' property or used one of the commonly used providers (google, github,
* facebook, okta).
*/
private String provider;
/**
* Client ID for the registration.
*/
private String clientId;
/**
* Client secret of the registration.
*/
private String clientSecret;
/**
* Client authentication method. May be left blank then using a pre-defined
* provider.
*/
private String clientAuthenticationMethod;
/**
* Authorization grant type. May be left blank then using a pre-defined provider.
*/
private String authorizationGrantType;
/**
* Redirect URI. May be left blank then using a pre-defined provider.
*/
private String redirectUriTemplate;
/**
* Authorization scopes. May be left blank then using a pre-defined provider.
*/
private Set scope;
/**
* Client name. May be left blank then using a pre-defined provider.
*/
private String clientName;
public String getProvider() {
return this.provider;
}
public void setProvider(String provider) {
this.provider = provider;
}
public String getClientId() {
return this.clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getClientSecret() {
return this.clientSecret;
}
public void setClientSecret(String clientSecret) {
this.clientSecret = clientSecret;
}
public String getClientAuthenticationMethod() {
return this.clientAuthenticationMethod;
}
public void setClientAuthenticationMethod(String clientAuthenticationMethod) {
this.clientAuthenticationMethod = clientAuthenticationMethod;
}
public String getAuthorizationGrantType() {
return this.authorizationGrantType;
}
public void setAuthorizationGrantType(String authorizationGrantType) {
this.authorizationGrantType = authorizationGrantType;
}
public String getRedirectUriTemplate() {
return this.redirectUriTemplate;
}
public void setRedirectUriTemplate(String redirectUriTemplate) {
this.redirectUriTemplate = redirectUriTemplate;
}
public Set getScope() {
return this.scope;
}
public void setScope(Set scope) {
this.scope = scope;
}
public String getClientName() {
return this.clientName;
}
public void setClientName(String clientName) {
this.clientName = clientName;
}
}
public static class Provider {
/**
* Authorization URI for the provider.
*/
private String authorizationUri;
/**
* Token URI for the provider.
*/
private String tokenUri;
/**
* User info URI for the provider.
*/
private String userInfoUri;
/**
* Name of the attribute that will be used to extract the username from the call
* to 'userInfoUri'.
*/
private String userNameAttribute;
/**
* JWK set URI for the provider.
*/
private String jwkSetUri;
public String getAuthorizationUri() {
return this.authorizationUri;
}
public void setAuthorizationUri(String authorizationUri) {
this.authorizationUri = authorizationUri;
}
public String getTokenUri() {
return this.tokenUri;
}
public void setTokenUri(String tokenUri) {
this.tokenUri = tokenUri;
}
public String getUserInfoUri() {
return this.userInfoUri;
}
public void setUserInfoUri(String userInfoUri) {
this.userInfoUri = userInfoUri;
}
public String getUserNameAttribute() {
return this.userNameAttribute;
}
public void setUserNameAttribute(String userNameAttribute) {
this.userNameAttribute = userNameAttribute;
}
public String getJwkSetUri() {
return this.jwkSetUri;
}
public void setJwkSetUri(String jwkSetUri) {
this.jwkSetUri = jwkSetUri;
}
}
}