AngularJS e Spring Security com ROLE_ANONYMOUS ainda retornam 401

Estamos construindo um aplicativo de material angular, consumindo uma API RESTful Spring MVC, com Spring Security e OAUTH2.

Para fins de teste, concedemos acesso a ROLE_ANONYMOUS ao terminal / usuários:

<intercept-url pattern="/users" method="POST" access="ROLE_ANONYMOUS"/>

Mas quando tentamos enviar um JSON pelo POST, ainda recebemos uma resposta 401 do servidor.

Isso não está acontecendo com clientes não angulares como o Postman.Se desativarmos o filtro Spring Security, tudo funcionará bem.Solicitações GET para o mesmo terminal também funcionam bem.

Este é o nosso app.config:

  angular.module('App')
    .constant('RESOURCES', (function () {
                var resource = 'http://localhost:8080';
                return {
                  USERS: resource + '/users'
                }
              })());

E a fábrica fazendo o método POST:

  app.factory('LoginUser', ['RESOURCES', '$resource', function (RESOURCES, $resource) {
    return $resource(RESOURCES.USERS, null, {
                       add: {method: 'POST'}
                     });
  }]);

E o método de inscrição no controlador:

  function signup(user) {
    LoginUser.add({}, JSON.stringify(user));
  }

Temos a configuração do SimpleCORSFilter no servidor, seguindo as instruçõesGuia de molas.

Você pode ver a comparação entre o carteiro POST e o AngularJS POST aqui:

O cabeçalho marcado em vermelho é um personalizado que precisamos adicionar no Postman para evitar um tipo de mídia não suportado.

Tentamos colocar cabeçalhos personalizados na solicitação POST no AngularJS, mas não parece estar funcionando:

.config(function ($httpProvider) {
    $httpProvider.defaults.headers.put['Content-Type'] = $httpProvider.defaults.headers.post['Content-Type'] =
        'application/json; charset=UTF-8';
});

questionAnswers(1)

yourAnswerToTheQuestion