Merged OAuth2 mapper_config with client_registration

This commit is contained in:
vzikratyi 2020-06-19 10:41:34 +03:00
parent b63f34316d
commit d7ff230bbd
8 changed files with 113 additions and 205 deletions

View File

@ -17,29 +17,22 @@
DROP TABLE IF EXISTS oauth2_client_registration;
CREATE TABLE IF NOT EXISTS oauth2_client_registration (
id varchar(31) NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
registration_id varchar(255) UNIQUE,
mapper_config_id varchar(31),
client_id varchar(255),
client_secret varchar(255),
authorization_uri varchar(255),
token_uri varchar(255),
redirect_uri_template varchar(255),
scope varchar(255),
authorization_grant_type varchar(255),
user_info_uri varchar(255),
user_name_attribute varchar(255),
jwk_set_uri varchar(255),
client_authentication_method varchar(255),
client_name varchar(255),
login_button_label varchar(255),
login_button_icon varchar(255)
);
DROP TABLE IF EXISTS oauth2_mapper_config;
CREATE TABLE IF NOT EXISTS oauth2_mapper_config (
id varchar(31) NOT NULL CONSTRAINT oauth2_mapper_config_pkey PRIMARY KEY,
id varchar(31) NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
registration_id varchar(255) UNIQUE,
client_id varchar(255),
client_secret varchar(255),
authorization_uri varchar(255),
token_uri varchar(255),
redirect_uri_template varchar(255),
scope varchar(255),
authorization_grant_type varchar(255),
user_info_uri varchar(255),
user_name_attribute varchar(255),
jwk_set_uri varchar(255),
client_authentication_method varchar(255),
client_name varchar(255),
login_button_label varchar(255),
login_button_icon varchar(255),
allow_user_creation boolean,
activate_user boolean,
type varchar(31),

View File

@ -10,7 +10,7 @@ import org.thingsboard.server.common.data.id.OAuth2IntegrationId;
public class OAuth2ClientRegistration extends BaseData<OAuth2IntegrationId> {
private String registrationId;
private OAuth2IntegrationId mapperConfigId;
private OAuth2MapperConfig mapperConfig;
private String clientId;
private String clientSecret;
private String authorizationUri;
@ -35,7 +35,7 @@ public class OAuth2ClientRegistration extends BaseData<OAuth2IntegrationId> {
}
@Builder(toBuilder = true)
public OAuth2ClientRegistration(OAuth2IntegrationId id, String registrationId, String clientId, String clientSecret, String authorizationUri, String tokenUri, String redirectUriTemplate, String scope, String authorizationGrantType, String userInfoUri, String userNameAttribute, String jwkSetUri, String clientAuthenticationMethod, String clientName, String loginButtonLabel, String loginButtonIcon, OAuth2IntegrationId mapperConfigId) {
public OAuth2ClientRegistration(OAuth2IntegrationId id, String registrationId, String clientId, String clientSecret, String authorizationUri, String tokenUri, String redirectUriTemplate, String scope, String authorizationGrantType, String userInfoUri, String userNameAttribute, String jwkSetUri, String clientAuthenticationMethod, String clientName, String loginButtonLabel, String loginButtonIcon, OAuth2MapperConfig mapperConfig) {
super(id);
this.registrationId = registrationId;
this.clientId = clientId;
@ -52,6 +52,6 @@ public class OAuth2ClientRegistration extends BaseData<OAuth2IntegrationId> {
this.clientName = clientName;
this.loginButtonLabel = loginButtonLabel;
this.loginButtonIcon = loginButtonIcon;
this.mapperConfigId = mapperConfigId;
this.mapperConfig = mapperConfig;
}
}

View File

@ -1,34 +1,18 @@
package org.thingsboard.server.common.data.oauth2;
import lombok.*;
import org.thingsboard.server.common.data.BaseData;
import org.thingsboard.server.common.data.id.OAuth2IntegrationId;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@EqualsAndHashCode(callSuper = true)
@Builder(toBuilder = true)
@EqualsAndHashCode
@Data
@ToString
public class OAuth2MapperConfig extends BaseData<OAuth2IntegrationId> {
public class OAuth2MapperConfig {
private boolean allowUserCreation;
private boolean activateUser;
private MapperType type;
private OAuth2BasicMapperConfig basicConfig;
private OAuth2CustomMapperConfig customConfig;
public OAuth2MapperConfig() {
super();
}
public OAuth2MapperConfig(OAuth2IntegrationId id) {
super(id);
}
@Builder(toBuilder = true)
public OAuth2MapperConfig(OAuth2IntegrationId id, boolean allowUserCreation, boolean activateUser, MapperType type, OAuth2BasicMapperConfig basicConfig, OAuth2CustomMapperConfig customConfig) {
super(id);
this.allowUserCreation = allowUserCreation;
this.activateUser = activateUser;
this.type = type;
this.basicConfig = basicConfig;
this.customConfig = customConfig;
}
}

View File

@ -359,7 +359,6 @@ public class ModelConstants {
*/
public static final String OAUTH2_CLIENT_REGISTRATION_COLUMN_FAMILY_NAME = "oauth2_client_registration";
public static final String OAUTH2_CLIENT_REGISTRATION_ID_PROPERTY = "registration_id";
public static final String OAUTH2_CLIENT_REGISTRATION_MAPPER_CONFIG_ID_PROPERTY = "mapper_config_id";
public static final String OAUTH2_CLIENT_ID_PROPERTY = "client_id";
public static final String OAUTH2_CLIENT_SECRET_PROPERTY = "client_secret";
public static final String OAUTH2_AUTHORIZATION_URI_PROPERTY = "authorization_uri";
@ -374,11 +373,6 @@ public class ModelConstants {
public static final String OAUTH2_CLIENT_NAME_PROPERTY = "client_name";
public static final String OAUTH2_LOGIN_BUTTON_LABEL_PROPERTY = "login_button_label";
public static final String OAUTH2_LOGIN_BUTTON_ICON_PROPERTY = "login_button_icon";
/**
* Cassandra OAuth2 mapper config constants.
*/
public static final String OAUTH2_MAPPER_CONFIG_COLUMN_FAMILY_NAME = "oauth2_mapper_config";
public static final String OAUTH2_ALLOW_USER_CREATION_PROPERTY = "allow_user_creation";
public static final String OAUTH2_ACTIVATE_USER_PROPERTY = "activate_user";
public static final String OAUTH2_MAPPER_TYPE_PROPERTY = "type";

View File

@ -21,14 +21,12 @@ import lombok.NoArgsConstructor;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.EntityView;
import org.thingsboard.server.common.data.id.OAuth2IntegrationId;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistration;
import org.thingsboard.server.common.data.oauth2.*;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.*;
@Data
@EqualsAndHashCode(callSuper = true)
@ -39,8 +37,6 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
@Column(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_ID_PROPERTY)
private String registrationId;
@Column(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_MAPPER_CONFIG_ID_PROPERTY)
private String mapperConfigId;
@Column(name = ModelConstants.OAUTH2_CLIENT_ID_PROPERTY)
private String clientId;
@Column(name = ModelConstants.OAUTH2_CLIENT_SECRET_PROPERTY)
@ -69,6 +65,35 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
private String loginButtonLabel;
@Column(name = ModelConstants.OAUTH2_LOGIN_BUTTON_ICON_PROPERTY)
private String loginButtonIcon;
@Column(name = ModelConstants.OAUTH2_ALLOW_USER_CREATION_PROPERTY)
private Boolean allowUserCreation;
@Column(name = ModelConstants.OAUTH2_ACTIVATE_USER_PROPERTY)
private Boolean activateUser;
@Enumerated(EnumType.STRING)
@Column(name = ModelConstants.OAUTH2_MAPPER_TYPE_PROPERTY)
private MapperType type;
@Column(name = ModelConstants.OAUTH2_EMAIL_ATTRIBUTE_KEY_PROPERTY)
private String emailAttributeKey;
@Column(name = ModelConstants.OAUTH2_FIRST_NAME_ATTRIBUTE_KEY_PROPERTY)
private String firstNameAttributeKey;
@Column(name = ModelConstants.OAUTH2_LAST_NAME_ATTRIBUTE_KEY_PROPERTY)
private String lastNameAttributeKey;
@Column(name = ModelConstants.OAUTH2_TENANT_NAME_STRATEGY_PROPERTY)
private String tenantNameStrategy;
@Column(name = ModelConstants.OAUTH2_TENANT_NAME_PATTERN_PROPERTY)
private String tenantNamePattern;
@Column(name = ModelConstants.OAUTH2_CUSTOMER_NAME_PATTERN_PROPERTY)
private String customerNamePattern;
@Column(name = ModelConstants.OAUTH2_DEFAULT_DASHBOARD_NAME_PROPERTY)
private String defaultDashboardName;
@Column(name = ModelConstants.OAUTH2_ALWAYS_FULL_SCREEN_PROPERTY)
private Boolean alwaysFullScreen;
@Column(name = ModelConstants.OAUTH2_MAPPER_URL_PROPERTY)
private String url;
@Column(name = ModelConstants.OAUTH2_MAPPER_USERNAME_PROPERTY)
private String username;
@Column(name = ModelConstants.OAUTH2_MAPPER_PASSWORD_PROPERTY)
private String password;
public OAuth2ClientRegistrationEntity() {
super();
@ -79,7 +104,30 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
return OAuth2ClientRegistration.builder()
.id(new OAuth2IntegrationId(toUUID(id)))
.registrationId(registrationId)
.mapperConfigId(new OAuth2IntegrationId(toUUID(mapperConfigId)))
.mapperConfig(OAuth2MapperConfig.builder()
.allowUserCreation(allowUserCreation)
.activateUser(activateUser)
.type(type)
.basicConfig(
OAuth2BasicMapperConfig.builder()
.emailAttributeKey(emailAttributeKey)
.firstNameAttributeKey(firstNameAttributeKey)
.lastNameAttributeKey(lastNameAttributeKey)
.tenantNameStrategy(tenantNameStrategy)
.tenantNamePattern(tenantNamePattern)
.customerNamePattern(customerNamePattern)
.defaultDashboardName(defaultDashboardName)
.alwaysFullScreen(alwaysFullScreen)
.build()
)
.customConfig(
OAuth2CustomMapperConfig.builder()
.url(url)
.username(username)
.password(password)
.build()
)
.build())
.clientId(clientId)
.clientSecret(clientSecret)
.authorizationUri(authorizationUri)

View File

@ -1,101 +0,0 @@
/**
* Copyright © 2016-2020 The Thingsboard Authors
* <p>
* 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
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* 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.thingsboard.server.dao.model.sql;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.annotations.TypeDef;
import org.thingsboard.server.common.data.id.OAuth2IntegrationId;
import org.thingsboard.server.common.data.oauth2.MapperType;
import org.thingsboard.server.common.data.oauth2.OAuth2BasicMapperConfig;
import org.thingsboard.server.common.data.oauth2.OAuth2CustomMapperConfig;
import org.thingsboard.server.common.data.oauth2.OAuth2MapperConfig;
import org.thingsboard.server.dao.model.BaseSqlEntity;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.dao.util.mapping.JsonStringType;
import javax.persistence.*;
@Data
@EqualsAndHashCode(callSuper = true)
@Entity
@TypeDef(name = "json", typeClass = JsonStringType.class)
@Table(name = ModelConstants.OAUTH2_MAPPER_CONFIG_COLUMN_FAMILY_NAME)
public class OAuth2MapperConfigEntity extends BaseSqlEntity<OAuth2MapperConfig> {
@Column(name = ModelConstants.OAUTH2_ALLOW_USER_CREATION_PROPERTY)
private Boolean allowUserCreation;
@Column(name = ModelConstants.OAUTH2_ACTIVATE_USER_PROPERTY)
private Boolean activateUser;
@Enumerated(EnumType.STRING)
@Column(name = ModelConstants.OAUTH2_MAPPER_TYPE_PROPERTY)
private MapperType type;
@Column(name = ModelConstants.OAUTH2_EMAIL_ATTRIBUTE_KEY_PROPERTY)
private String emailAttributeKey;
@Column(name = ModelConstants.OAUTH2_FIRST_NAME_ATTRIBUTE_KEY_PROPERTY)
private String firstNameAttributeKey;
@Column(name = ModelConstants.OAUTH2_LAST_NAME_ATTRIBUTE_KEY_PROPERTY)
private String lastNameAttributeKey;
@Column(name = ModelConstants.OAUTH2_TENANT_NAME_STRATEGY_PROPERTY)
private String tenantNameStrategy;
@Column(name = ModelConstants.OAUTH2_TENANT_NAME_PATTERN_PROPERTY)
private String tenantNamePattern;
@Column(name = ModelConstants.OAUTH2_CUSTOMER_NAME_PATTERN_PROPERTY)
private String customerNamePattern;
@Column(name = ModelConstants.OAUTH2_DEFAULT_DASHBOARD_NAME_PROPERTY)
private String defaultDashboardName;
@Column(name = ModelConstants.OAUTH2_ALWAYS_FULL_SCREEN_PROPERTY)
private Boolean alwaysFullScreen;
@Column(name = ModelConstants.OAUTH2_MAPPER_URL_PROPERTY)
private String url;
@Column(name = ModelConstants.OAUTH2_MAPPER_USERNAME_PROPERTY)
private String username;
@Column(name = ModelConstants.OAUTH2_MAPPER_PASSWORD_PROPERTY)
private String password;
public OAuth2MapperConfigEntity() {
super();
}
@Override
public OAuth2MapperConfig toData() {
return OAuth2MapperConfig.builder()
.id(new OAuth2IntegrationId(toUUID(id)))
.allowUserCreation(allowUserCreation)
.activateUser(activateUser)
.type(type)
.basicConfig(
OAuth2BasicMapperConfig.builder()
.emailAttributeKey(emailAttributeKey)
.firstNameAttributeKey(firstNameAttributeKey)
.lastNameAttributeKey(lastNameAttributeKey)
.tenantNameStrategy(tenantNameStrategy)
.tenantNamePattern(tenantNamePattern)
.customerNamePattern(customerNamePattern)
.defaultDashboardName(defaultDashboardName)
.alwaysFullScreen(alwaysFullScreen)
.build()
)
.customConfig(
OAuth2CustomMapperConfig.builder()
.url(url)
.username(username)
.password(password)
.build()
)
.build();
}
}

View File

@ -254,27 +254,22 @@ CREATE TABLE IF NOT EXISTS entity_view (
);
CREATE TABLE IF NOT EXISTS oauth2_client_registration (
id varchar(31) NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
registration_id varchar(255) UNIQUE,
mapper_config_id varchar(31),
client_id varchar(255),
client_secret varchar(255),
authorization_uri varchar(255),
token_uri varchar(255),
redirect_uri_template varchar(255),
scope varchar(255),
authorization_grant_type varchar(255),
user_info_uri varchar(255),
user_name_attribute varchar(255),
jwk_set_uri varchar(255),
client_authentication_method varchar(255),
client_name varchar(255),
login_button_label varchar(255),
login_button_icon varchar(255)
);
CREATE TABLE IF NOT EXISTS oauth2_mapper_config (
id varchar(31) NOT NULL CONSTRAINT oauth2_mapper_config_pkey PRIMARY KEY,
id varchar(31) NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
registration_id varchar(255) UNIQUE,
client_id varchar(255),
client_secret varchar(255),
authorization_uri varchar(255),
token_uri varchar(255),
redirect_uri_template varchar(255),
scope varchar(255),
authorization_grant_type varchar(255),
user_info_uri varchar(255),
user_name_attribute varchar(255),
jwk_set_uri varchar(255),
client_authentication_method varchar(255),
client_name varchar(255),
login_button_label varchar(255),
login_button_icon varchar(255),
allow_user_creation boolean,
activate_user boolean,
type varchar(31),

View File

@ -254,27 +254,22 @@ CREATE TABLE IF NOT EXISTS entity_view (
);
CREATE TABLE IF NOT EXISTS oauth2_client_registration (
id varchar(31) NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
registration_id varchar(255) UNIQUE,
mapper_config_id varchar(31),
client_id varchar(255),
client_secret varchar(255),
authorization_uri varchar(255),
token_uri varchar(255),
redirect_uri_template varchar(255),
scope varchar(255),
authorization_grant_type varchar(255),
user_info_uri varchar(255),
user_name_attribute varchar(255),
jwk_set_uri varchar(255),
client_authentication_method varchar(255),
client_name varchar(255),
login_button_label varchar(255),
login_button_icon varchar(255)
);
CREATE TABLE IF NOT EXISTS oauth2_mapper_config (
id varchar(31) NOT NULL CONSTRAINT oauth2_mapper_config_pkey PRIMARY KEY,
id varchar(31) NOT NULL CONSTRAINT oauth2_client_registration_pkey PRIMARY KEY,
registration_id varchar(255) UNIQUE,
client_id varchar(255),
client_secret varchar(255),
authorization_uri varchar(255),
token_uri varchar(255),
redirect_uri_template varchar(255),
scope varchar(255),
authorization_grant_type varchar(255),
user_info_uri varchar(255),
user_name_attribute varchar(255),
jwk_set_uri varchar(255),
client_authentication_method varchar(255),
client_name varchar(255),
login_button_label varchar(255),
login_button_icon varchar(255),
allow_user_creation boolean,
activate_user boolean,
type varchar(31),