Browse Source

Removed 'registrationId' from ClientRegistration

pull/3557/head
vzikratyi 6 years ago
parent
commit
32c8d7e5fd
  1. 4
      application/src/main/data/upgrade/3.1.0/schema_update.sql
  2. 2
      application/src/main/java/org/thingsboard/server/controller/BaseController.java
  3. 3
      application/src/main/java/org/thingsboard/server/service/security/auth/oauth2/Oauth2AuthenticationSuccessHandler.java
  4. 4
      common/dao-api/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Service.java
  5. 2
      common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistration.java
  6. 1
      dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java
  7. 4
      dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ClientRegistrationEntity.java
  8. 9
      dao/src/main/java/org/thingsboard/server/dao/oauth2/HybridClientRegistrationRepository.java
  9. 4
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ClientRegistrationDao.java
  10. 32
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java
  11. 2
      dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java
  12. 12
      dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/JpaOAuth2ClientRegistrationDao.java
  13. 7
      dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/OAuth2ClientRegistrationRepository.java
  14. 4
      dao/src/main/resources/sql/schema-entities-hsql.sql
  15. 4
      dao/src/main/resources/sql/schema-entities.sql
  16. 55
      dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java

4
application/src/main/data/upgrade/3.1.0/schema_update.sql

@ -21,7 +21,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration (
created_time bigint NOT NULL, created_time bigint NOT NULL,
additional_info varchar, additional_info varchar,
tenant_id uuid, tenant_id uuid,
registration_id varchar(255),
domain_name varchar(255), domain_name varchar(255),
client_id varchar(255), client_id varchar(255),
client_secret varchar(255), client_secret varchar(255),
@ -48,6 +47,5 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration (
basic_always_full_screen boolean, basic_always_full_screen boolean,
custom_url varchar(255), custom_url varchar(255),
custom_username varchar(255), custom_username varchar(255),
custom_password varchar(255), custom_password varchar(255)
CONSTRAINT oauth2_registration_id_unq_key UNIQUE (registration_id)
); );

2
application/src/main/java/org/thingsboard/server/controller/BaseController.java

@ -540,7 +540,7 @@ public abstract class BaseController {
OAuth2ClientRegistration checkOAuth2ClientRegistrationId(OAuth2ClientRegistrationId clientRegistrationId, Operation operation) throws ThingsboardException { OAuth2ClientRegistration checkOAuth2ClientRegistrationId(OAuth2ClientRegistrationId clientRegistrationId, Operation operation) throws ThingsboardException {
try { try {
validateId(clientRegistrationId, "Incorrect oAuth2ClientRegistrationId " + clientRegistrationId); validateId(clientRegistrationId, "Incorrect oAuth2ClientRegistrationId " + clientRegistrationId);
OAuth2ClientRegistration clientRegistration = oAuth2Service.findClientRegistrationById(getCurrentUser().getTenantId(), clientRegistrationId); OAuth2ClientRegistration clientRegistration = oAuth2Service.findClientRegistration(clientRegistrationId.getId());
checkNotNull(clientRegistration); checkNotNull(clientRegistration);
accessControlService.checkPermission(getCurrentUser(), Resource.OAUTH2_CONFIGURATION, operation, clientRegistrationId, clientRegistration); accessControlService.checkPermission(getCurrentUser(), Resource.OAUTH2_CONFIGURATION, operation, clientRegistrationId, clientRegistration);
return clientRegistration; return clientRegistration;

3
application/src/main/java/org/thingsboard/server/service/security/auth/oauth2/Oauth2AuthenticationSuccessHandler.java

@ -36,6 +36,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.UUID;
@Component(value = "oauth2AuthenticationSuccessHandler") @Component(value = "oauth2AuthenticationSuccessHandler")
public class Oauth2AuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler { public class Oauth2AuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
@ -65,7 +66,7 @@ public class Oauth2AuthenticationSuccessHandler extends SimpleUrlAuthenticationS
try { try {
OAuth2AuthenticationToken token = (OAuth2AuthenticationToken) authentication; OAuth2AuthenticationToken token = (OAuth2AuthenticationToken) authentication;
OAuth2ClientRegistration clientRegistration = oAuth2Service.findClientRegistrationByRegistrationId(token.getAuthorizedClientRegistrationId()); OAuth2ClientRegistration clientRegistration = oAuth2Service.findClientRegistration(UUID.fromString(token.getAuthorizedClientRegistrationId()));
OAuth2ClientMapper mapper = oauth2ClientMapperProvider.getOAuth2ClientMapperByType(clientRegistration.getMapperConfig().getType()); OAuth2ClientMapper mapper = oauth2ClientMapperProvider.getOAuth2ClientMapperByType(clientRegistration.getMapperConfig().getType());
SecurityUser securityUser = mapper.getOrCreateUserByClientPrincipal(token, clientRegistration.getTenantId(), clientRegistration.getMapperConfig()); SecurityUser securityUser = mapper.getOrCreateUserByClientPrincipal(token, clientRegistration.getTenantId(), clientRegistration.getMapperConfig());

4
common/dao-api/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Service.java

@ -30,9 +30,7 @@ public interface OAuth2Service {
List<OAuth2ClientRegistration> findClientRegistrationsByTenantId(TenantId tenantId); List<OAuth2ClientRegistration> findClientRegistrationsByTenantId(TenantId tenantId);
OAuth2ClientRegistration findClientRegistrationByRegistrationId(String registrationId); OAuth2ClientRegistration findClientRegistration(UUID id);
OAuth2ClientRegistration findClientRegistrationById(TenantId tenantId, OAuth2ClientRegistrationId id);
List<OAuth2ClientRegistration> findAllClientRegistrations(); List<OAuth2ClientRegistration> findAllClientRegistrations();

2
common/data/src/main/java/org/thingsboard/server/common/data/oauth2/OAuth2ClientRegistration.java

@ -32,7 +32,6 @@ import java.util.List;
public class OAuth2ClientRegistration extends BaseData<OAuth2ClientRegistrationId> implements HasTenantId, HasName { public class OAuth2ClientRegistration extends BaseData<OAuth2ClientRegistrationId> implements HasTenantId, HasName {
private TenantId tenantId; private TenantId tenantId;
private String registrationId;
private String domainName; private String domainName;
private String redirectUriTemplate; private String redirectUriTemplate;
private OAuth2MapperConfig mapperConfig; private OAuth2MapperConfig mapperConfig;
@ -51,7 +50,6 @@ public class OAuth2ClientRegistration extends BaseData<OAuth2ClientRegistrationI
public OAuth2ClientRegistration(OAuth2ClientRegistration clientRegistration) { public OAuth2ClientRegistration(OAuth2ClientRegistration clientRegistration) {
super(clientRegistration); super(clientRegistration);
this.tenantId = clientRegistration.getTenantId(); this.tenantId = clientRegistration.getTenantId();
this.registrationId = clientRegistration.getRegistrationId();
this.domainName = clientRegistration.getDomainName(); this.domainName = clientRegistration.getDomainName();
this.redirectUriTemplate = clientRegistration.getRedirectUriTemplate(); this.redirectUriTemplate = clientRegistration.getRedirectUriTemplate();
this.mapperConfig = clientRegistration.mapperConfig; this.mapperConfig = clientRegistration.mapperConfig;

1
dao/src/main/java/org/thingsboard/server/dao/model/ModelConstants.java

@ -359,7 +359,6 @@ public class ModelConstants {
*/ */
public static final String OAUTH2_TENANT_ID_PROPERTY = TENANT_ID_PROPERTY; public static final String OAUTH2_TENANT_ID_PROPERTY = TENANT_ID_PROPERTY;
public static final String OAUTH2_CLIENT_REGISTRATION_COLUMN_FAMILY_NAME = "oauth2_client_registration"; 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_DOMAIN_NAME_PROPERTY = "domain_name"; public static final String OAUTH2_DOMAIN_NAME_PROPERTY = "domain_name";
public static final String OAUTH2_CLIENT_ID_PROPERTY = "client_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_CLIENT_SECRET_PROPERTY = "client_secret";

4
dao/src/main/java/org/thingsboard/server/dao/model/sql/OAuth2ClientRegistrationEntity.java

@ -39,8 +39,6 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
@Column(name = ModelConstants.OAUTH2_TENANT_ID_PROPERTY, columnDefinition = "uuid") @Column(name = ModelConstants.OAUTH2_TENANT_ID_PROPERTY, columnDefinition = "uuid")
private UUID tenantId; private UUID tenantId;
@Column(name = ModelConstants.OAUTH2_CLIENT_REGISTRATION_ID_PROPERTY)
private String registrationId;
@Column(name = ModelConstants.OAUTH2_DOMAIN_NAME_PROPERTY) @Column(name = ModelConstants.OAUTH2_DOMAIN_NAME_PROPERTY)
private String domainName; private String domainName;
@Column(name = ModelConstants.OAUTH2_CLIENT_ID_PROPERTY) @Column(name = ModelConstants.OAUTH2_CLIENT_ID_PROPERTY)
@ -111,7 +109,6 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
} }
this.domainName = clientRegistration.getDomainName(); this.domainName = clientRegistration.getDomainName();
this.createdTime = clientRegistration.getCreatedTime(); this.createdTime = clientRegistration.getCreatedTime();
this.registrationId = clientRegistration.getRegistrationId();
this.clientId = clientRegistration.getClientId(); this.clientId = clientRegistration.getClientId();
this.clientSecret = clientRegistration.getClientSecret(); this.clientSecret = clientRegistration.getClientSecret();
this.authorizationUri = clientRegistration.getAuthorizationUri(); this.authorizationUri = clientRegistration.getAuthorizationUri();
@ -154,7 +151,6 @@ public class OAuth2ClientRegistrationEntity extends BaseSqlEntity<OAuth2ClientRe
OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration(); OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration();
clientRegistration.setId(new OAuth2ClientRegistrationId(id)); clientRegistration.setId(new OAuth2ClientRegistrationId(id));
clientRegistration.setTenantId(new TenantId(tenantId)); clientRegistration.setTenantId(new TenantId(tenantId));
clientRegistration.setRegistrationId(registrationId);
clientRegistration.setDomainName(domainName); clientRegistration.setDomainName(domainName);
clientRegistration.setCreatedTime(createdTime); clientRegistration.setCreatedTime(createdTime);
clientRegistration.setMapperConfig( clientRegistration.setMapperConfig(

9
dao/src/main/java/org/thingsboard/server/dao/oauth2/HybridClientRegistrationRepository.java

@ -24,6 +24,8 @@ import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.oauth2.ExtendedOAuth2ClientRegistration; import org.thingsboard.server.common.data.oauth2.ExtendedOAuth2ClientRegistration;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistration; import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistration;
import java.util.UUID;
@Component @Component
public class HybridClientRegistrationRepository implements ClientRegistrationRepository { public class HybridClientRegistrationRepository implements ClientRegistrationRepository {
@ -32,14 +34,15 @@ public class HybridClientRegistrationRepository implements ClientRegistrationRep
@Override @Override
public ClientRegistration findByRegistrationId(String registrationId) { public ClientRegistration findByRegistrationId(String registrationId) {
OAuth2ClientRegistration oAuth2ClientRegistration = oAuth2Service.findClientRegistrationByRegistrationId(registrationId); OAuth2ClientRegistration oAuth2ClientRegistration = oAuth2Service.findClientRegistration(UUID.fromString(registrationId));
return oAuth2ClientRegistration == null ? return oAuth2ClientRegistration == null ?
null : toSpringClientRegistration(oAuth2ClientRegistration); null : toSpringClientRegistration(oAuth2ClientRegistration);
} }
private ClientRegistration toSpringClientRegistration(OAuth2ClientRegistration localClientRegistration){ private ClientRegistration toSpringClientRegistration(OAuth2ClientRegistration localClientRegistration){
return ClientRegistration.withRegistrationId(localClientRegistration.getRegistrationId()) String registrationId = localClientRegistration.getUuidId().toString();
.clientName(localClientRegistration.getRegistrationId()) return ClientRegistration.withRegistrationId(registrationId)
.clientName(localClientRegistration.getName())
.clientId(localClientRegistration.getClientId()) .clientId(localClientRegistration.getClientId())
.authorizationUri(localClientRegistration.getAuthorizationUri()) .authorizationUri(localClientRegistration.getAuthorizationUri())
.clientSecret(localClientRegistration.getClientSecret()) .clientSecret(localClientRegistration.getClientSecret())

4
dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ClientRegistrationDao.java

@ -22,15 +22,11 @@ import java.util.List;
import java.util.UUID; import java.util.UUID;
public interface OAuth2ClientRegistrationDao extends Dao<OAuth2ClientRegistration> { public interface OAuth2ClientRegistrationDao extends Dao<OAuth2ClientRegistration> {
OAuth2ClientRegistration findByRegistrationId(String registrationId);
List<OAuth2ClientRegistration> findAll(); List<OAuth2ClientRegistration> findAll();
List<OAuth2ClientRegistration> findByTenantId(UUID tenantId); List<OAuth2ClientRegistration> findByTenantId(UUID tenantId);
List<OAuth2ClientRegistration> findByDomainName(String domainName); List<OAuth2ClientRegistration> findByDomainName(String domainName);
boolean removeByRegistrationId(String registrationId);
int removeByTenantId(UUID tenantId); int removeByTenantId(UUID tenantId);
} }

32
dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java

@ -46,7 +46,6 @@ import static org.thingsboard.server.dao.service.Validator.validateString;
public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Service { public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Service {
public static final String INCORRECT_TENANT_ID = "Incorrect tenantId "; public static final String INCORRECT_TENANT_ID = "Incorrect tenantId ";
public static final String INCORRECT_CLIENT_REGISTRATION_ID = "Incorrect clientRegistrationId "; public static final String INCORRECT_CLIENT_REGISTRATION_ID = "Incorrect clientRegistrationId ";
public static final String INCORRECT_REGISTRATION_ID = "Incorrect registrationId ";
public static final String INCORRECT_DOMAIN_NAME = "Incorrect domainName "; public static final String INCORRECT_DOMAIN_NAME = "Incorrect domainName ";
@Autowired @Autowired
@ -68,18 +67,7 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
public OAuth2ClientRegistration saveClientRegistration(OAuth2ClientRegistration clientRegistration) { public OAuth2ClientRegistration saveClientRegistration(OAuth2ClientRegistration clientRegistration) {
log.trace("Executing saveClientRegistration [{}]", clientRegistration); log.trace("Executing saveClientRegistration [{}]", clientRegistration);
clientRegistrationValidator.validate(clientRegistration, OAuth2ClientRegistration::getTenantId); clientRegistrationValidator.validate(clientRegistration, OAuth2ClientRegistration::getTenantId);
OAuth2ClientRegistration savedClientRegistration; return clientRegistrationDao.save(clientRegistration.getTenantId(), clientRegistration);
try {
savedClientRegistration = clientRegistrationDao.save(clientRegistration.getTenantId(), clientRegistration);
} catch (Exception t) {
ConstraintViolationException e = extractConstraintViolationException(t).orElse(null);
if (e != null && e.getConstraintName() != null && e.getConstraintName().equalsIgnoreCase("oauth2_registration_id_unq_key")) {
throw new DataValidationException("Client registration with such registrationId already exists!");
} else {
throw t;
}
}
return savedClientRegistration;
} }
@Override @Override
@ -90,17 +78,10 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
} }
@Override @Override
public OAuth2ClientRegistration findClientRegistrationByRegistrationId(String registrationId) { public OAuth2ClientRegistration findClientRegistration(UUID id) {
log.trace("Executing findClientRegistrationByRegistrationId [{}]", registrationId); log.trace("Executing findClientRegistration [{}]", id);
validateString(registrationId, INCORRECT_REGISTRATION_ID + registrationId);
return clientRegistrationDao.findByRegistrationId(registrationId);
}
@Override
public OAuth2ClientRegistration findClientRegistrationById(TenantId tenantId, OAuth2ClientRegistrationId id) {
log.trace("Executing findClientRegistrationById [{}]", id);
validateId(id, INCORRECT_CLIENT_REGISTRATION_ID + id); validateId(id, INCORRECT_CLIENT_REGISTRATION_ID + id);
return clientRegistrationDao.findById(tenantId, id.getId()); return clientRegistrationDao.findById(null, id);
} }
@Override @Override
@ -138,7 +119,7 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
} }
} }
private DataValidator<OAuth2ClientRegistration> clientRegistrationValidator = private final DataValidator<OAuth2ClientRegistration> clientRegistrationValidator =
new DataValidator<OAuth2ClientRegistration>() { new DataValidator<OAuth2ClientRegistration>() {
@Override @Override
@ -151,9 +132,6 @@ public class OAuth2ServiceImpl extends AbstractEntityService implements OAuth2Se
@Override @Override
protected void validateDataImpl(TenantId tenantId, OAuth2ClientRegistration clientRegistration) { protected void validateDataImpl(TenantId tenantId, OAuth2ClientRegistration clientRegistration) {
if (StringUtils.isEmpty(clientRegistration.getRegistrationId())) {
throw new DataValidationException("Registration ID should be specified!");
}
if (StringUtils.isEmpty(clientRegistration.getDomainName())) { if (StringUtils.isEmpty(clientRegistration.getDomainName())) {
throw new DataValidationException("Domain name should be specified!"); throw new DataValidationException("Domain name should be specified!");
} }

2
dao/src/main/java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java

@ -29,7 +29,7 @@ public class OAuth2Utils {
public static OAuth2ClientInfo toClientInfo(OAuth2ClientRegistration clientRegistration) { public static OAuth2ClientInfo toClientInfo(OAuth2ClientRegistration clientRegistration) {
OAuth2ClientInfo client = new OAuth2ClientInfo(); OAuth2ClientInfo client = new OAuth2ClientInfo();
client.setName(clientRegistration.getLoginButtonLabel()); client.setName(clientRegistration.getLoginButtonLabel());
client.setUrl(String.format(OAUTH2_AUTHORIZATION_PATH_TEMPLATE, clientRegistration.getRegistrationId())); client.setUrl(String.format(OAUTH2_AUTHORIZATION_PATH_TEMPLATE, clientRegistration.getUuidId().toString()));
client.setIcon(clientRegistration.getLoginButtonIcon()); client.setIcon(clientRegistration.getLoginButtonIcon());
return client; return client;
} }

12
dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/JpaOAuth2ClientRegistrationDao.java

@ -45,12 +45,6 @@ public class JpaOAuth2ClientRegistrationDao extends JpaAbstractDao<OAuth2ClientR
return repository; return repository;
} }
@Override
public OAuth2ClientRegistration findByRegistrationId(String registrationId) {
Optional<OAuth2ClientRegistrationEntity> entity = repository.findByRegistrationId(registrationId);
return DaoUtil.getData(entity);
}
@Override @Override
public List<OAuth2ClientRegistration> findAll() { public List<OAuth2ClientRegistration> findAll() {
Iterable<OAuth2ClientRegistrationEntity> entities = repository.findAll(); Iterable<OAuth2ClientRegistrationEntity> entities = repository.findAll();
@ -73,12 +67,6 @@ public class JpaOAuth2ClientRegistrationDao extends JpaAbstractDao<OAuth2ClientR
return entities.stream().map(DaoUtil::getData).collect(Collectors.toList()); return entities.stream().map(DaoUtil::getData).collect(Collectors.toList());
} }
@Override
public boolean removeByRegistrationId(String registrationId) {
repository.deleteByRegistrationId(registrationId);
return !repository.existsByRegistrationId(registrationId);
}
@Override @Override
public int removeByTenantId(UUID tenantId) { public int removeByTenantId(UUID tenantId) {
return repository.deleteByTenantId(tenantId); return repository.deleteByTenantId(tenantId);

7
dao/src/main/java/org/thingsboard/server/dao/sql/oauth2/OAuth2ClientRegistrationRepository.java

@ -19,19 +19,12 @@ import org.springframework.data.repository.CrudRepository;
import org.thingsboard.server.dao.model.sql.OAuth2ClientRegistrationEntity; import org.thingsboard.server.dao.model.sql.OAuth2ClientRegistrationEntity;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.UUID; import java.util.UUID;
public interface OAuth2ClientRegistrationRepository extends CrudRepository<OAuth2ClientRegistrationEntity, UUID> { public interface OAuth2ClientRegistrationRepository extends CrudRepository<OAuth2ClientRegistrationEntity, UUID> {
Optional<OAuth2ClientRegistrationEntity> findByRegistrationId(String registrationId);
List<OAuth2ClientRegistrationEntity> findAllByTenantId(UUID tenantId); List<OAuth2ClientRegistrationEntity> findAllByTenantId(UUID tenantId);
List<OAuth2ClientRegistrationEntity> findAllByDomainName(String domainName); List<OAuth2ClientRegistrationEntity> findAllByDomainName(String domainName);
int deleteByRegistrationId(String registrationId);
int deleteByTenantId(UUID tenantId); int deleteByTenantId(UUID tenantId);
boolean existsByRegistrationId(String registrationId);
} }

4
dao/src/main/resources/sql/schema-entities-hsql.sql

@ -296,7 +296,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration (
created_time bigint NOT NULL, created_time bigint NOT NULL,
additional_info varchar, additional_info varchar,
tenant_id uuid, tenant_id uuid,
registration_id varchar(255),
domain_name varchar(255), domain_name varchar(255),
client_id varchar(255), client_id varchar(255),
client_secret varchar(255), client_secret varchar(255),
@ -323,6 +322,5 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration (
basic_always_full_screen boolean, basic_always_full_screen boolean,
custom_url varchar(255), custom_url varchar(255),
custom_username varchar(255), custom_username varchar(255),
custom_password varchar(255), custom_password varchar(255)
CONSTRAINT oauth2_registration_id_unq_key UNIQUE (registration_id)
); );

4
dao/src/main/resources/sql/schema-entities.sql

@ -311,7 +311,6 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration (
created_time bigint NOT NULL, created_time bigint NOT NULL,
additional_info varchar, additional_info varchar,
tenant_id uuid, tenant_id uuid,
registration_id varchar(255),
domain_name varchar(255), domain_name varchar(255),
client_id varchar(255), client_id varchar(255),
client_secret varchar(255), client_secret varchar(255),
@ -338,8 +337,7 @@ CREATE TABLE IF NOT EXISTS oauth2_client_registration (
basic_always_full_screen boolean, basic_always_full_screen boolean,
custom_url varchar(255), custom_url varchar(255),
custom_username varchar(255), custom_username varchar(255),
custom_password varchar(255), custom_password varchar(255)
CONSTRAINT oauth2_registration_id_unq_key UNIQUE (registration_id)
); );
CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl(IN ttl bigint, IN debug_ttl bigint, INOUT deleted bigint) CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl(IN ttl bigint, IN debug_ttl bigint, INOUT deleted bigint)

55
dao/src/test/java/org/thingsboard/server/dao/service/BaseOAuth2ServiceTest.java

@ -86,18 +86,10 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
Assert.assertTrue(oAuth2Service.isOAuth2ClientRegistrationAllowed(tenantId)); Assert.assertTrue(oAuth2Service.isOAuth2ClientRegistrationAllowed(tenantId));
} }
@Test(expected = DataValidationException.class)
public void testSaveDuplicateRegistrationId() {
OAuth2ClientRegistration first = validClientRegistration("duplicated_reg_id", TenantId.SYS_TENANT_ID);
OAuth2ClientRegistration second = validClientRegistration("duplicated_reg_id", tenantId);
oAuth2Service.saveClientRegistration(first);
oAuth2Service.saveClientRegistration(second);
}
@Test @Test
public void testCreateNewSystemParams() { public void testCreateNewSystemParams() {
OAuth2ClientRegistration clientRegistration = validClientRegistration(UUID.randomUUID().toString(), TenantId.SYS_TENANT_ID); OAuth2ClientRegistration clientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID);
OAuth2ClientRegistration savedClientRegistration = oAuth2Service.saveClientRegistration(clientRegistration); OAuth2ClientRegistration savedClientRegistration = oAuth2Service.saveClientRegistration(clientRegistration);
Assert.assertNotNull(savedClientRegistration); Assert.assertNotNull(savedClientRegistration);
@ -109,7 +101,7 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
@Test @Test
public void testFindSystemParamsByTenant() { public void testFindSystemParamsByTenant() {
OAuth2ClientRegistration clientRegistration = validClientRegistration(UUID.randomUUID().toString(), TenantId.SYS_TENANT_ID); OAuth2ClientRegistration clientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID);
oAuth2Service.saveClientRegistration(clientRegistration); oAuth2Service.saveClientRegistration(clientRegistration);
List<OAuth2ClientRegistration> clientRegistrationsByTenantId = oAuth2Service.findClientRegistrationsByTenantId(TenantId.SYS_TENANT_ID); List<OAuth2ClientRegistration> clientRegistrationsByTenantId = oAuth2Service.findClientRegistrationsByTenantId(TenantId.SYS_TENANT_ID);
@ -124,7 +116,7 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
@Test @Test
public void testCreateNewTenantParams() { public void testCreateNewTenantParams() {
OAuth2ClientRegistration clientRegistration = validClientRegistration(UUID.randomUUID().toString(), tenantId); OAuth2ClientRegistration clientRegistration = validClientRegistration(tenantId);
OAuth2ClientRegistration savedClientRegistration = oAuth2Service.saveClientRegistration(clientRegistration); OAuth2ClientRegistration savedClientRegistration = oAuth2Service.saveClientRegistration(clientRegistration);
Assert.assertNotNull(savedClientRegistration); Assert.assertNotNull(savedClientRegistration);
@ -136,7 +128,7 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
@Test @Test
public void testFindTenantParams() { public void testFindTenantParams() {
OAuth2ClientRegistration clientRegistration = validClientRegistration(UUID.randomUUID().toString(), tenantId); OAuth2ClientRegistration clientRegistration = validClientRegistration(tenantId);
oAuth2Service.saveClientRegistration(clientRegistration); oAuth2Service.saveClientRegistration(clientRegistration);
List<OAuth2ClientRegistration> clientRegistrationsByTenantId = oAuth2Service.findClientRegistrationsByTenantId(tenantId); List<OAuth2ClientRegistration> clientRegistrationsByTenantId = oAuth2Service.findClientRegistrationsByTenantId(tenantId);
@ -151,8 +143,8 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
@Test @Test
public void testGetClientRegistrationWithTenant() { public void testGetClientRegistrationWithTenant() {
OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(UUID.randomUUID().toString(), tenantId); OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(tenantId);
OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(UUID.randomUUID().toString(), TenantId.SYS_TENANT_ID); OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID);
OAuth2ClientRegistration savedTenantClientRegistration = oAuth2Service.saveClientRegistration(tenantClientRegistration); OAuth2ClientRegistration savedTenantClientRegistration = oAuth2Service.saveClientRegistration(tenantClientRegistration);
OAuth2ClientRegistration savedSysAdminClientRegistration = oAuth2Service.saveClientRegistration(sysAdminClientRegistration); OAuth2ClientRegistration savedSysAdminClientRegistration = oAuth2Service.saveClientRegistration(sysAdminClientRegistration);
@ -163,22 +155,16 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
Assert.assertEquals(savedSysAdminClientRegistration, oAuth2Service.findClientRegistrationsByTenantId(TenantId.SYS_TENANT_ID).get(0)); Assert.assertEquals(savedSysAdminClientRegistration, oAuth2Service.findClientRegistrationsByTenantId(TenantId.SYS_TENANT_ID).get(0));
Assert.assertEquals(savedTenantClientRegistration, Assert.assertEquals(savedTenantClientRegistration,
oAuth2Service.findClientRegistrationByRegistrationId(savedTenantClientRegistration.getRegistrationId())); oAuth2Service.findClientRegistration(savedTenantClientRegistration.getUuidId()));
Assert.assertEquals(savedSysAdminClientRegistration,
oAuth2Service.findClientRegistrationByRegistrationId(savedSysAdminClientRegistration.getRegistrationId()));
Assert.assertEquals(savedTenantClientRegistration,
oAuth2Service.findClientRegistrationById(tenantId, savedTenantClientRegistration.getId()));
Assert.assertEquals(savedSysAdminClientRegistration, Assert.assertEquals(savedSysAdminClientRegistration,
oAuth2Service.findClientRegistrationById(TenantId.SYS_TENANT_ID, savedSysAdminClientRegistration.getId())); oAuth2Service.findClientRegistration(savedSysAdminClientRegistration.getUuidId()));
} }
@Test @Test
public void testGetOAuth2Clients() { public void testGetOAuth2Clients() {
String testDomainName = "test_domain"; String testDomainName = "test_domain";
OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(testDomainName, UUID.randomUUID().toString(), tenantId); OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(tenantId, testDomainName);
OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(testDomainName, UUID.randomUUID().toString(), TenantId.SYS_TENANT_ID); OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID, testDomainName);
oAuth2Service.saveClientRegistration(tenantClientRegistration); oAuth2Service.saveClientRegistration(tenantClientRegistration);
oAuth2Service.saveClientRegistration(sysAdminClientRegistration); oAuth2Service.saveClientRegistration(sysAdminClientRegistration);
@ -195,8 +181,8 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
@Test @Test
public void testGetEmptyOAuth2Clients() { public void testGetEmptyOAuth2Clients() {
String testDomainName = "test_domain"; String testDomainName = "test_domain";
OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(testDomainName, UUID.randomUUID().toString(), tenantId); OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(tenantId, testDomainName);
OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(testDomainName, UUID.randomUUID().toString(), TenantId.SYS_TENANT_ID); OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID, testDomainName);
oAuth2Service.saveClientRegistration(tenantClientRegistration); oAuth2Service.saveClientRegistration(tenantClientRegistration);
oAuth2Service.saveClientRegistration(sysAdminClientRegistration); oAuth2Service.saveClientRegistration(sysAdminClientRegistration);
List<OAuth2ClientInfo> oAuth2Clients = oAuth2Service.getOAuth2Clients("random-domain"); List<OAuth2ClientInfo> oAuth2Clients = oAuth2Service.getOAuth2Clients("random-domain");
@ -205,8 +191,8 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
@Test @Test
public void testDeleteOAuth2ClientRegistration() { public void testDeleteOAuth2ClientRegistration() {
OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(UUID.randomUUID().toString(), tenantId); OAuth2ClientRegistration tenantClientRegistration = validClientRegistration(tenantId);
OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(UUID.randomUUID().toString(), TenantId.SYS_TENANT_ID); OAuth2ClientRegistration sysAdminClientRegistration = validClientRegistration(TenantId.SYS_TENANT_ID);
OAuth2ClientRegistration savedTenantRegistration = oAuth2Service.saveClientRegistration(tenantClientRegistration); OAuth2ClientRegistration savedTenantRegistration = oAuth2Service.saveClientRegistration(tenantClientRegistration);
OAuth2ClientRegistration savedSysAdminRegistration = oAuth2Service.saveClientRegistration(sysAdminClientRegistration); OAuth2ClientRegistration savedSysAdminRegistration = oAuth2Service.saveClientRegistration(sysAdminClientRegistration);
@ -218,9 +204,9 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
@Test @Test
public void testDeleteTenantOAuth2ClientRegistrations() { public void testDeleteTenantOAuth2ClientRegistrations() {
oAuth2Service.saveClientRegistration(validClientRegistration(UUID.randomUUID().toString(), tenantId)); oAuth2Service.saveClientRegistration(validClientRegistration(tenantId));
oAuth2Service.saveClientRegistration(validClientRegistration(UUID.randomUUID().toString(), tenantId)); oAuth2Service.saveClientRegistration(validClientRegistration(tenantId));
oAuth2Service.saveClientRegistration(validClientRegistration(UUID.randomUUID().toString(), tenantId)); oAuth2Service.saveClientRegistration(validClientRegistration(tenantId));
Assert.assertEquals(3, oAuth2Service.findAllClientRegistrations().size()); Assert.assertEquals(3, oAuth2Service.findAllClientRegistrations().size());
Assert.assertEquals(3, oAuth2Service.findClientRegistrationsByTenantId(tenantId).size()); Assert.assertEquals(3, oAuth2Service.findClientRegistrationsByTenantId(tenantId).size());
@ -240,14 +226,13 @@ public class BaseOAuth2ServiceTest extends AbstractServiceTest {
} }
} }
private OAuth2ClientRegistration validClientRegistration(String registrationId, TenantId tenantId) { private OAuth2ClientRegistration validClientRegistration(TenantId tenantId) {
return validClientRegistration("domainName", registrationId, tenantId); return validClientRegistration(tenantId, "domainName");
} }
private OAuth2ClientRegistration validClientRegistration(String domainName, String registrationId, TenantId tenantId) { private OAuth2ClientRegistration validClientRegistration(TenantId tenantId, String domainName) {
OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration(); OAuth2ClientRegistration clientRegistration = new OAuth2ClientRegistration();
clientRegistration.setTenantId(tenantId); clientRegistration.setTenantId(tenantId);
clientRegistration.setRegistrationId(registrationId);
clientRegistration.setDomainName(domainName); clientRegistration.setDomainName(domainName);
clientRegistration.setMapperConfig( clientRegistration.setMapperConfig(
OAuth2MapperConfig.builder() OAuth2MapperConfig.builder()

Loading…
Cancel
Save