use idm
This commit is contained in:
parent
668e6a2d3b
commit
596d0dd8cb
11 changed files with 29 additions and 41 deletions
|
|
@ -5,26 +5,22 @@ import org.springframework.http.HttpEntity;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Emir Suleimanov
|
* @author Emir Suleimanov
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractIdmValidatorService implements IdmValidatorService{
|
public abstract class AbstractIdmValidatorService implements IdmValidatorService{
|
||||||
protected RestTemplate restTemplate;
|
protected RestTemplate restTemplate;
|
||||||
protected SecurityContext securityContext;
|
|
||||||
|
|
||||||
@Value("${ervu.url}")
|
@Value("${idm.url}")
|
||||||
protected String ervuUrl;
|
protected String idmUrl;
|
||||||
|
|
||||||
public AbstractIdmValidatorService(RestTemplate restTemplate, SecurityContext securityContext) {
|
public AbstractIdmValidatorService(RestTemplate restTemplate) {
|
||||||
this.restTemplate = restTemplate;
|
this.restTemplate = restTemplate;
|
||||||
this.securityContext = securityContext;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public HttpEntity<Void> createRequestEntity() {
|
public HttpEntity<Void> createRequestEntity() {
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.setBearerAuth(securityContext.getToken());
|
|
||||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||||
return new HttpEntity<>(headers);
|
return new HttpEntity<>(headers);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,8 +43,8 @@ public class ErvuUserGridLoadService extends Behavior implements GridService {
|
||||||
private final SecurityContext securityContext;
|
private final SecurityContext securityContext;
|
||||||
@Value("${ervu.http.timeout:30}")
|
@Value("${ervu.http.timeout:30}")
|
||||||
private int httpTimeout;
|
private int httpTimeout;
|
||||||
@Value("${ervu.url}")
|
@Value("${idm.url}")
|
||||||
private String ervuUrl;
|
private String idmUrl;
|
||||||
|
|
||||||
public ErvuUserGridLoadService(ObjectMapper objectMapper,
|
public ErvuUserGridLoadService(ObjectMapper objectMapper,
|
||||||
SecurityContext securityContext) {
|
SecurityContext securityContext) {
|
||||||
|
|
@ -85,11 +85,10 @@ public class ErvuUserGridLoadService extends Behavior implements GridService {
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
HttpRequest request = HttpRequest.newBuilder()
|
HttpRequest request = HttpRequest.newBuilder()
|
||||||
.uri(UriComponentsBuilder.fromHttpUrl(ervuUrl)
|
.uri(UriComponentsBuilder.fromHttpUrl(idmUrl)
|
||||||
.pathSegment(PathConstant.ACCOUNTS_PATH, FILTER_PATH)
|
.pathSegment(PathConstant.ACCOUNTS_PATH, FILTER_PATH)
|
||||||
.build().toUri())
|
.build().toUri())
|
||||||
.header(HttpHeaders.CONTENT_TYPE, "application/json")
|
.header(HttpHeaders.CONTENT_TYPE, "application/json")
|
||||||
.header(HttpHeaders.AUTHORIZATION, "Bearer " + securityContext.getToken())
|
|
||||||
.timeout(Duration.ofSeconds(httpTimeout))
|
.timeout(Duration.ofSeconds(httpTimeout))
|
||||||
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
|
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
|
||||||
.build();
|
.build();
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import org.springframework.http.HttpEntity;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
import ru.micord.ervu.account_applications.component.exception.IdmValidatorException;
|
import ru.micord.ervu.account_applications.component.exception.IdmValidatorException;
|
||||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Emir Suleimanov
|
* @author Emir Suleimanov
|
||||||
|
|
@ -18,13 +17,13 @@ import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||||
@Service
|
@Service
|
||||||
public class IdmLoginValidatorService extends AbstractIdmValidatorService{
|
public class IdmLoginValidatorService extends AbstractIdmValidatorService{
|
||||||
|
|
||||||
public IdmLoginValidatorService(RestTemplate restTemplate, SecurityContext securityContext) {
|
public IdmLoginValidatorService(RestTemplate restTemplate) {
|
||||||
super(restTemplate, securityContext);
|
super(restTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean valueExists(String login) {
|
public boolean valueExists(String login) {
|
||||||
String url = String.format("%s/service/idm/credentials/login/%s", ervuUrl, login);
|
String url = String.format("%s/credentials/login/%s", idmUrl, login);
|
||||||
HttpEntity<Void> entity = createRequestEntity();
|
HttpEntity<Void> entity = createRequestEntity();
|
||||||
try {
|
try {
|
||||||
ResponseEntity<List<Map<String, Object>>> response = restTemplate.exchange(
|
ResponseEntity<List<Map<String, Object>>> response = restTemplate.exchange(
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
import ru.micord.ervu.account_applications.component.exception.IdmValidatorException;
|
import ru.micord.ervu.account_applications.component.exception.IdmValidatorException;
|
||||||
import ru.micord.ervu.account_applications.component.model.dto.IdmPersonsResponse;
|
import ru.micord.ervu.account_applications.component.model.dto.IdmPersonsResponse;
|
||||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Emir Suleimanov
|
* @author Emir Suleimanov
|
||||||
|
|
@ -19,13 +18,13 @@ import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||||
@Service
|
@Service
|
||||||
public class IdmSnilsValidatorService extends AbstractIdmValidatorService {
|
public class IdmSnilsValidatorService extends AbstractIdmValidatorService {
|
||||||
|
|
||||||
public IdmSnilsValidatorService(RestTemplate restTemplate, SecurityContext securityContext) {
|
public IdmSnilsValidatorService(RestTemplate restTemplate) {
|
||||||
super(restTemplate, securityContext);
|
super(restTemplate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean valueExists(String snils) {
|
public boolean valueExists(String snils) {
|
||||||
String url = String.format("%s/service/idm/persons?query=snils==\"%s\"", ervuUrl, snils);
|
String url = String.format("%s/persons?query=snils==\"%s\"", idmUrl, snils);
|
||||||
HttpEntity<Void> entity = createRequestEntity();
|
HttpEntity<Void> entity = createRequestEntity();
|
||||||
try {
|
try {
|
||||||
ResponseEntity<IdmPersonsResponse> response = restTemplate.exchange(
|
ResponseEntity<IdmPersonsResponse> response = restTemplate.exchange(
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.google.common.net.HttpHeaders;
|
import com.google.common.net.HttpHeaders;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import ru.micord.ervu.account_applications.component.exception.ApiResponseException;
|
import ru.micord.ervu.account_applications.component.exception.ApiResponseException;
|
||||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -20,15 +19,13 @@ import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractUserDataService implements UserDataService {
|
public abstract class AbstractUserDataService implements UserDataService {
|
||||||
protected final ObjectMapper objectMapper;
|
protected final ObjectMapper objectMapper;
|
||||||
protected final SecurityContext securityContext;
|
|
||||||
@Value("${ervu.http.timeout:30}")
|
@Value("${ervu.http.timeout:30}")
|
||||||
protected int httpTimeout;
|
protected int httpTimeout;
|
||||||
@Value("${ervu.url}")
|
@Value("${idm.url}")
|
||||||
protected String ervuUrl;
|
protected String idmUrl;
|
||||||
|
|
||||||
protected AbstractUserDataService(ObjectMapper objectMapper, SecurityContext securityContext) {
|
protected AbstractUserDataService(ObjectMapper objectMapper) {
|
||||||
this.objectMapper = objectMapper;
|
this.objectMapper = objectMapper;
|
||||||
this.securityContext = securityContext;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected HttpResponse<String> sendGetRequest(String url)
|
protected HttpResponse<String> sendGetRequest(String url)
|
||||||
|
|
@ -40,7 +37,6 @@ public abstract class AbstractUserDataService implements UserDataService {
|
||||||
HttpRequest request = HttpRequest.newBuilder()
|
HttpRequest request = HttpRequest.newBuilder()
|
||||||
.uri(URI.create(url))
|
.uri(URI.create(url))
|
||||||
.header(HttpHeaders.CONTENT_TYPE, "application/json")
|
.header(HttpHeaders.CONTENT_TYPE, "application/json")
|
||||||
.header(HttpHeaders.AUTHORIZATION, "Bearer " + securityContext.getToken())
|
|
||||||
.timeout(Duration.ofSeconds(httpTimeout))
|
.timeout(Duration.ofSeconds(httpTimeout))
|
||||||
.GET()
|
.GET()
|
||||||
.build();
|
.build();
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,6 @@ import org.springframework.util.ClassUtils;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
import ru.micord.ervu.account_applications.component.exception.UserDataLoadException;
|
import ru.micord.ervu.account_applications.component.exception.UserDataLoadException;
|
||||||
import ru.micord.ervu.account_applications.component.model.Account;
|
import ru.micord.ervu.account_applications.component.model.Account;
|
||||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
|
||||||
import ru.micord.ervu.account_applications.service.constant.PathConstant;
|
import ru.micord.ervu.account_applications.service.constant.PathConstant;
|
||||||
|
|
||||||
import ru.cg.webbpm.modules.standard_annotations.editor.ObjectRef;
|
import ru.cg.webbpm.modules.standard_annotations.editor.ObjectRef;
|
||||||
|
|
@ -31,8 +30,8 @@ public class AccountServiceImpl extends AbstractUserDataService {
|
||||||
@ObjectRef
|
@ObjectRef
|
||||||
public EditableGridColumn editableGridColumnRef;
|
public EditableGridColumn editableGridColumnRef;
|
||||||
|
|
||||||
public AccountServiceImpl(ObjectMapper objectMapper, SecurityContext securityContext) {
|
public AccountServiceImpl(ObjectMapper objectMapper) {
|
||||||
super(objectMapper, securityContext);
|
super(objectMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -42,7 +41,7 @@ public class AccountServiceImpl extends AbstractUserDataService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Account fetchAccountById(Object id) throws IOException, InterruptedException {
|
private Account fetchAccountById(Object id) throws IOException, InterruptedException {
|
||||||
String url = UriComponentsBuilder.fromHttpUrl(ervuUrl)
|
String url = UriComponentsBuilder.fromHttpUrl(idmUrl)
|
||||||
.path(PathConstant.ACCOUNTS_PATH)
|
.path(PathConstant.ACCOUNTS_PATH)
|
||||||
.pathSegment(id.toString())
|
.pathSegment(id.toString())
|
||||||
.queryParam("expand", "person,user-domain,region")
|
.queryParam("expand", "person,user-domain,region")
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,8 @@ import ru.micord.ervu.account_applications.service.constant.PathConstant;
|
||||||
public class RoleServiceImpl extends AbstractUserDataService {
|
public class RoleServiceImpl extends AbstractUserDataService {
|
||||||
private static final String ROLES = "roles";
|
private static final String ROLES = "roles";
|
||||||
|
|
||||||
protected RoleServiceImpl(ObjectMapper objectMapper,
|
protected RoleServiceImpl(ObjectMapper objectMapper) {
|
||||||
SecurityContext securityContext) {
|
super(objectMapper);
|
||||||
super(objectMapper, securityContext);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -50,7 +49,7 @@ public class RoleServiceImpl extends AbstractUserDataService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Role> fetchRolesByAccountId(Object accountId) throws IOException, InterruptedException {
|
private List<Role> fetchRolesByAccountId(Object accountId) throws IOException, InterruptedException {
|
||||||
String url = UriComponentsBuilder.fromHttpUrl(ervuUrl)
|
String url = UriComponentsBuilder.fromHttpUrl(idmUrl)
|
||||||
.path(PathConstant.ACCOUNTS_PATH)
|
.path(PathConstant.ACCOUNTS_PATH)
|
||||||
.pathSegment(accountId.toString(), ROLES)
|
.pathSegment(accountId.toString(), ROLES)
|
||||||
.toUriString();
|
.toUriString();
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ import com.fasterxml.jackson.databind.type.CollectionType;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
import ru.micord.ervu.account_applications.component.model.Credential;
|
import ru.micord.ervu.account_applications.component.model.Credential;
|
||||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
|
||||||
import ru.micord.ervu.account_applications.service.constant.PathConstant;
|
import ru.micord.ervu.account_applications.service.constant.PathConstant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -21,8 +20,8 @@ import ru.micord.ervu.account_applications.service.constant.PathConstant;
|
||||||
public class UserCredentialsServiceIpml extends AbstractUserDataService {
|
public class UserCredentialsServiceIpml extends AbstractUserDataService {
|
||||||
private static final String CREDENTIALS = "credentials";
|
private static final String CREDENTIALS = "credentials";
|
||||||
|
|
||||||
public UserCredentialsServiceIpml(ObjectMapper objectMapper, SecurityContext securityContext) {
|
public UserCredentialsServiceIpml(ObjectMapper objectMapper) {
|
||||||
super(objectMapper, securityContext);
|
super(objectMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -32,7 +31,7 @@ public class UserCredentialsServiceIpml extends AbstractUserDataService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Credential> fetchCredentialsByPersonId(Object personId) throws IOException, InterruptedException {
|
private List<Credential> fetchCredentialsByPersonId(Object personId) throws IOException, InterruptedException {
|
||||||
String url = UriComponentsBuilder.fromHttpUrl(ervuUrl)
|
String url = UriComponentsBuilder.fromHttpUrl(idmUrl)
|
||||||
.path(PathConstant.PERSONS_PATH)
|
.path(PathConstant.PERSONS_PATH)
|
||||||
.pathSegment(personId.toString(), CREDENTIALS)
|
.pathSegment(personId.toString(), CREDENTIALS)
|
||||||
.toUriString();
|
.toUriString();
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ package ru.micord.ervu.account_applications.service.constant;
|
||||||
* @author Adel Kalimullin
|
* @author Adel Kalimullin
|
||||||
*/
|
*/
|
||||||
public final class PathConstant {
|
public final class PathConstant {
|
||||||
public static final String ACCOUNTS_PATH = "service/idm/accounts";
|
public static final String ACCOUNTS_PATH = "accounts";
|
||||||
public static final String PERSONS_PATH = "service/idm/persons";
|
public static final String PERSONS_PATH = "persons";
|
||||||
|
|
||||||
private PathConstant() {
|
private PathConstant() {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,7 @@
|
||||||
<property name="com.arjuna.ats.arjuna.allowMultipleLastResources" value="true"/>
|
<property name="com.arjuna.ats.arjuna.allowMultipleLastResources" value="true"/>
|
||||||
<property name="ervu.url" value="https://ervu-dev.pgs.rtlabs.ru"/>
|
<property name="ervu.url" value="https://ervu-dev.pgs.rtlabs.ru"/>
|
||||||
<property name="ervu.pwd.sign.secret_key" value="xoL2Y3VRdQ4phXG85o6dRqcgqb4bk6ULdkJJdlRLhZM="/>
|
<property name="ervu.pwd.sign.secret_key" value="xoL2Y3VRdQ4phXG85o6dRqcgqb4bk6ULdkJJdlRLhZM="/>
|
||||||
|
<property name="idm.url" value="http://idm"/>
|
||||||
</system-properties>
|
</system-properties>
|
||||||
<management>
|
<management>
|
||||||
<audit-log>
|
<audit-log>
|
||||||
|
|
|
||||||
|
|
@ -26,4 +26,5 @@ ERVU_URL=https://ervu-dev.pgs.rtlabs.ru
|
||||||
ERVU_HTTP_TIMEOUT=30
|
ERVU_HTTP_TIMEOUT=30
|
||||||
ERVU_PWD_SIGN_SECRET_KEY=xoL2Y3VRdQ4phXG85o6dRqcgqb4bk6ULdkJJdlRLhZM=
|
ERVU_PWD_SIGN_SECRET_KEY=xoL2Y3VRdQ4phXG85o6dRqcgqb4bk6ULdkJJdlRLhZM=
|
||||||
KAFKA_ROLE_RECONCILIATION=idmv2.role.reconciliation
|
KAFKA_ROLE_RECONCILIATION=idmv2.role.reconciliation
|
||||||
KAFKA_DOMAIN_RECONCILIATION=idmv2.domain.reconciliation
|
KAFKA_DOMAIN_RECONCILIATION=idmv2.domain.reconciliation
|
||||||
|
IDM_URL=http://idm
|
||||||
Loading…
Add table
Add a link
Reference in a new issue