Prezados leitores,

Em um post anterior, eu demonstrei como você pode configurar suas camadas e estilos a partir da API Rest do GeoServer. Neste post irei apresentar como você poder criar novos usuários, papéis e permissões de segurança através também da API Rest. Vamos lá então:

1. Criar uma workspace

Para iniciar, irei criar um workspace com o nome “teste”, onde realizaremos nossos testes. Para isso vou executar o comando abaixo no console utilzando o cURL:

curl -v -u admin:geoserver -XPOST -H "Content-type: text/xml" -d "<workspace><name>teste</name></workspace>" http://localhost:8080/geoserver/rest/workspaces

Se for executado corretamente, você deverá receber a seguinte mensagem:

< HTTP/1.1 201 Created
...
< Location: http://localhost:8080/geoserver/rest/workspaces/teste

2. Criar usuário e senha

Vamos criar um usuário também denominado "teste" e senha "teste", para isso basta executar o comando abaixo no console, conforme realizado na etapa 1:

curl -v -u admin:geoserver -X POST http://localhost:8080/geoserver/rest/security/usergroup/users/ -H  
"accept: application/json" -H  "content-type: application/xml" 
-d "<?xml version=\"1.0\" encoding=\"UTF-8\"?><user>\t<userName>teste</userName>\t<password>teste</password>\t<enabled>true</enabled></user>"

3. Definir papéis (ROLES)

Nesse passo vamos definir apenas o nome do papel, em um passo posterior definiremos a permissão vinculada a ele. No nosso caso estamos criando um papel denominado "ROLES_TESTE", executando o seguindo comando:

curl -v -u admin:geoserver -X POST http://localhost:8080/geoserver/rest/security/roles/role/ROLE_TESTE -H "accept: application/json" -H "content-type: application/json"

4. Vincula o usuário ao papel (ROLE)

Para que o papel faça sentido, precisamos vinculá-lo a pelo menos um usuário/grupo, da seguinte forma:

curl -v -u admin:geoserver -X POST http://localhost:8080/geoserver/rest/security/roles/role/ROLE_TESTE/user/teste -H  "accept: application/json" -H  "content-type: application/json"

5. Definir as permissões

Aqui vamos definir que a ROLE_TESTE permitirá acesso de leitura a todas as camadas que estiverem no workspace teste. Veja:

 curl -v -u admin:geoserver -XPOST -H "Content-type: text/xml" -d @rules.xml http://localhost:8080/geoserver/rest/security/acl/layers.xml

Perceba que no comando ali ele menciona um arquivo chamado @rules.xml, este arquivo tem que estar na mesma pasta que o comando for executando, caso contrário é necessário passar o caminho completo do arquivo.

O arquivo rules.xml deve conter as seguintes informações:

<?xml version="1.0" encoding="UTF-8"?>
<rules>
   <rule resource="teste.*.r">ROLE_TESTE</rule>
</rules>

Agora você já tem sua nova workspace, usuário, role e permissão criada, basta inserir seus dados. Espero que tenha gostado desse post, e tenha sido útil pra você.