Здравствуйте, не могу достучаться до метода REST API. Есть собственная авторизация по логину и паролю, токен получаю, у пользователя есть роль для rest.
Авторизация была сделана по примеру cuba, но без использования LoginService тк не находит нужный класс(пока не понял что нужно подключить), поэтому реализовал иначе
@RequestMapping("/auth")
public class AuthController {
private static Logger log = LoggerFactory.getLogger(AuthController.class);
@Inject
private OAuthTokenIssuer oAuthTokenIssuer;
@Inject
private Configuration configuration;
@Inject
private DataManager dataManager;
@Inject
private MessageTools messageTools;
@Inject
private AuthenticationService authenticationService;
@Inject
protected MessageBundle messageBundle;
@PostMapping()
public ResponseEntity authorization(@RequestBody User user) {
// set security HTTP headers to prevent browser caching of security token
HttpHeaders headers = new HttpHeaders();
headers.set(HttpHeaders.CONTENT_TYPE, "application/json");
headers.set(HttpHeaders.CACHE_CONTROL, "no-store");
headers.set(HttpHeaders.PRAGMA, "no-cache");
// obtain system session to be able to call middleware services
UserSession systemSession;
try {
LoginPasswordCredentials loginPasswordCredentials = new LoginPasswordCredentials(user.getLogin(), user.getPassword());
AuthenticationDetails authenticationDetails = authenticationService.authenticate(loginPasswordCredentials);
systemSession = authenticationDetails.getSession();
} catch (LoginException e) {
return new ResponseEntity<>(headers, HttpStatus.UNAUTHORIZED);
}
// set security context
AppContext.setSecurityContext(new SecurityContext(systemSession));
try {
// generate token
OAuthTokenIssuer.OAuth2AccessTokenResult tokenResult =
oAuthTokenIssuer.issueToken(user.getLogin(), messageTools.getDefaultLocale(), Collections.emptyMap());
OAuth2AccessToken accessToken = tokenResult.getAccessToken();
return new ResponseEntity<>(accessToken, headers, HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(headers, HttpStatus.BAD_REQUEST);
} finally {
// clean up security context
AppContext.setSecurityContext(null);
}
}
}
при обращении к REST методу в заголовке пишу
{“access_token”:“Bearer b41807a3-f9d1-4bb3-926d-9d7a47171723”}
Сам Rest service
@Service(EntityCheckApiService.NAME)
public class EntityCheckApiServiceBean implements EntityCheckApiService {
@Inject
private Logger log;
@Inject
private Messages messages;
@Inject
private DataManager dataManager;
private Gson gson;
protected String packageString = this.getClass().getPackage().toString();
private static final String REGEX_NUMBER = "^\\d+$";
private static final Pattern patternNumber = Pattern.compile(REGEX_NUMBER);
protected static final String CONTRACT_BY_INN_KPP_OBDNSI_QUERY = "select e from *** e where e.inn = :inn and e.kpp = :kpp and e.codeObdnsi = :codeObdnsi";
protected static final String INN = "inn";
protected static final String KPP = "kpp";
protected static final String CODE_OBDNSI = "codeObdnsi";
@PostConstruct
protected void init() {
gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.create();
}
public EntityServiceResult contragentCheck(String inn, String kpp, String codeObdnsi, String
regNoContract) {
EntityServiceResult entityServiceResult = new EntityServiceResult();
if (inn == null || !patternNumber.matcher(inn).find() ||
kpp == null || !patternNumber.matcher(kpp).find() ||
codeObdnsi == null || !patternNumber.matcher(codeObdnsi).find()) {
entityServiceResult.setSuccess(false);
entityServiceResult.setErrorMessage(messages.getMessage(packageString,
"EntityCheckApiServiceBean.inputDataError"));
return entityServiceResult;
}
try {
Contragent contragent = dataManager.load(Contragent.class)
.query(CONTRACT_BY_INN_KPP_OBDNSI_QUERY)
.parameter(INN, inn)
.parameter(KPP, kpp)
.parameter(CODE_OBDNSI, codeObdnsi)
.view("contragent-edit-view")
.one();
String jsonMessage = gson.toJson(createContragentModel(contragent));
entityServiceResult.setSuccess(true);
entityServiceResult.setSuccessMessage(jsonMessage);
return entityServiceResult;
} catch (Exception e) {
log.error(messages.getMessage(packageString,
"EntityCheckApiServiceBean.contractLoadError"), e);
entityServiceResult.setSuccess(false);
entityServiceResult.setErrorMessage(e.getMessage());
return entityServiceResult;
}
}
public ContragentModel createContragentModel(Contragent contragent) {
ContragentModel contragentModel = new ContragentModel();
contragentModel.setContragentId(contragent.getContragentId());
return contragentModel;
}
}
Предполагаю проблема или в моей авторизации или в видимости сервиса.