Fala ai Radizeiros e Radizeiras, tudo bem com vocês?
Seguindo nossa saga de RestFul com DataSnap, este post não poderia faltar, onde irei falar de como implementar em nosso servidor de aplicação as permissões a nível de usuário.
Aqui no blog você encontra todos os post dessa saga, caso ainda não tenha acompanhado.
Você já criou seu servidor de aplicação, implementou todos os métodos HTTP, disponibilizou este servidor na web para que seus clientes possam consumir esses dados, mas não atentou a segurança dessas informações deixando veraneável os dados
Toda segurança é de extrema importância, seja no acesso e até mesmo na criptografia de seus dados para aumentar o nível de segurança.
Num post aqui no blog falei sobre Autenticação no servidor de aplicação e agora vamos ver sobre autorização, e isso é muito interessante onde você pode dar permissões a níveis de usuários para determinados métodos dentro do seu servidor de aplicação, por exemplo: o um grupo determinado de usuário pode consultar, o outro grupo pode incluir e consultar…
Você pode implementar esses níveis de segurança de uma forma muito fácil que irei lhe mostrar agora mesmo aqui no blog.
Vamos lá?
Essas autenticações podem ser feitas através do nosso componente DSAuthenticationManager1.
procedure TWebModule1.DSAuthenticationManager1UserAuthenticate(Sender: TObject; const Protocol, Context, User, Password: string; var valid: Boolean; UserRoles: TStrings); begin valid := false; if (User='teste') and (Password='1') then begin UserRoles.Add('Nivel1'); valid := true; end; if (User='teste') and (Password='2') then begin UserRoles.Add('Nivel2'); valid := true; end; end;
No código acima nós definimos os níveis, onde temos o objeto UserRoles do tipo TStrings, nele nós armazenamos os grupos de permissões.
No método UserAuthorize do componente DSAuthenticationManager1 define quando o usuário está autorizado ou não, sendo assim no código abaixo estamos definido se não for valida a autenticação iremos chamar o código 403, que é o código do protocolo html que diz que não foi autorizado o acesso.
procedure TWebModule1.DSAuthenticationManager1UserAuthorize(Sender: TObject; AuthorizeEvenObject: TDSAuthorizeEventObject; var valid: Boolean); begin if not valid then GetInvocationMetadata.ResponseCode := 403; end;
Em nossa View de Produto iremos adicionar duas uses a Datasnap.DSServer e Datasnap.DSAuth, essas duas uses irá nos permitir trabalhar com essas permissões.
No código abaixo definimos os grupo nos devidos métodos que terão permissões para utilizar, onde o grupo Nivel1 tem somente permissão de visualizar, e o grupo de Nivel2 tem permissão para visualizar, alterar, incluir e apagar.
uses ... Datasnap.DSServer, Datasnap.DSAuth; ... [TRoleAuth('Nivel1', 'Nivel2')] function Produto(const Key : string) : TJsonArray; [TRoleAuth('Nivel2')] procedure acceptProduto(const Key : string; JObject : TJsonObject); [TRoleAuth('Nivel2')] procedure updateProduto(const Key : string; JObject : TJsonObject); [TRoleAuth('Nivel2')] procedure cancelProduto(const Key : string); ...
Com nosso servidor de aplicação rodando vamos verificar no Postman.
Vamos visualizar mas sem definir usuários dos grupos que criamos.
Observe que deu o erro 403 que definimos no UserAuthorize .
Visualizando com o usuário do grupo Nivel1.
Quando tentamos alterar com o usuário do grupo Nivel1 temos o erro 403.
Agora para fazer essa alteração vamos utilizar o usuário do grupo de Nivel2.
O registro é alterado com sucesso.
Veja que dessa forma é muito simples e você pode criar níveis de permissões no seu servidor de aplicação.
O QUE VOCÊ IRÁ APRENDER?
O treinamento de Datasnap Restful dará a você a oportunidade de melhorar seu desenvolvimento, otimizar o seu tempo e te dar a possibilidade de atender melhor os seus clientes.
Desenvolver um servidor de aplicação RestFul com Datasnap e utilizar todos os seus benefícios irá facilitar muito a sua vida, quando seu cliente disser “preciso dos meus dados na web hoje mesmo” você estará preparado para entregar uma solução robusta e eficaz.
Nesse treinamento você irá aprender de forma prática a criar as principais rotinas de CRUD e Segurança para servidores RestFul Datasnap que podem ser consumidos de qualquer aplicação front-end.
CLIQUE AQUI PARA SABER MAIS SOBRE O TREINAMENTO RESTFULL COM DATASNAP