java验证器类不在POST上进行身份验证

java验证器类不在POST上进行身份验证,java,spring-boot,authentication,odata,dynamics-crm,Java,Spring Boot,Authentication,Odata,Dynamics Crm,我正在创建一个Spring Boot REST完整服务,以向CRM Dynamics发送GET和POST请求 CRM Dynamics使用OData REST web服务和NTLM身份验证 在我的例子中,我在这段代码中使用Authenticator.setDefault(Authenticator)进行身份验证(DAO构造函数) 但奇怪的是,这个类没有在POST请求中验证我的应用程序。 如果我先发出GET请求,它可以正常工作,其他GET和POST也可以正常工作。 但是如果我想先发帖子,我会收到4

我正在创建一个Spring Boot REST完整服务,以向CRM Dynamics发送GET和POST请求

CRM Dynamics使用OData REST web服务和NTLM身份验证

在我的例子中,我在这段代码中使用Authenticator.setDefault(Authenticator)进行身份验证(DAO构造函数)

但奇怪的是,这个类没有在POST请求中验证我的应用程序。 如果我先发出GET请求,它可以正常工作,其他GET和POST也可以正常工作。 但是如果我想先发帖子,我会收到401:未经授权。

在日志中,我可以看到在GET请求时,我的应用程序会调用CRM Dynamics两到三次以获得授权。 但在POST上,它只创建了一个请求

在Java/Spring引导中,该类或任何其他NTLM身份验证解决方案是否有任何变通方法(除了在POST之前调用GET)

p.S.CRM Dynamics管理员表示Dynamics端没有API会话设置

先谢谢你

DAO类中POST请求的p.S.代码

public ResponseEntity<String> processPOSTNewTask(String body) {
    log.debug(String.format("DAO received parameters: %s", body));

    String url = CRMProps.getUrl() + CRMProps.getTaskEntity();
    try {
        return processPOST(url, body);
    } catch (Exception e) {
        return GlobalUtils.buildErrorResponseEntity(Utils.MODULE_NAME, e.getMessage());
    }
}

private ResponseEntity<String> processPOST(String url, String body) {
    RestTemplate restTemplate = new RestTemplate();

    HttpEntity<String> entity = new HttpEntity(body, setHeaders());

    log.debug("headers " + entity.getHeaders());

    ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);

    return response;
}
public ResponseEntity processPOSTNewTask(字符串体){
log.debug(String.format(“DAO接收到的参数:%s”,body));
字符串url=CRMProps.getUrl()+CRMProps.getTaskEntity();
试一试{
返回processPOST(url,body);
}捕获(例外e){
返回GlobalUtils.buildErrorResponseEntity(Utils.MODULE_NAME,e.getMessage());
}
}
private ResponseEntity processPOST(字符串url、字符串正文){
RestTemplate RestTemplate=新RestTemplate();
HttpEntity=新的HttpEntity(body,setHeaders());
log.debug(“headers”+entity.getHeaders());
ResponseEntity response=restemplate.exchange(url,HttpMethod.POST,entity,String.class);
返回响应;
}

你能告诉我你是怎么写这篇文章的吗?@SimonMartinell我当然能。请在post中找到。您在哪里设置验证器?它真的是在POST之前设置的吗?@SimonMartinelli,Authenticator.setDefault(Authenticator)调用在DAO类构造函数中。我在邮件中编辑了代码,而邮件也在DAO中?
public ResponseEntity<String> processPOSTNewTask(String body) {
    log.debug(String.format("DAO received parameters: %s", body));

    String url = CRMProps.getUrl() + CRMProps.getTaskEntity();
    try {
        return processPOST(url, body);
    } catch (Exception e) {
        return GlobalUtils.buildErrorResponseEntity(Utils.MODULE_NAME, e.getMessage());
    }
}

private ResponseEntity<String> processPOST(String url, String body) {
    RestTemplate restTemplate = new RestTemplate();

    HttpEntity<String> entity = new HttpEntity(body, setHeaders());

    log.debug("headers " + entity.getHeaders());

    ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);

    return response;
}