Novembro Azul: a importância dos cuidados com a saúde do homem
25 de novembro de 2020Integração entre Big Data e Internet das Coisas vira tendência
21 de dezembro de 2020O RStudio Connect é um produto, fornecido pela RStudio, que permite que conteúdos R sejam compartilhados. Esses conteúdos podem ser scripts, relatórios, painéis e tudo que é possível se fazer com a linguagem R e essas publicações podem ser divulgadas em servidores internos ou até mesmo na internet. Além disso, esses conteúdos podem ser restritos a apenas certos usuários, por meio de um serviço de autenticação como, por exemplo, Active Directory ou Google OAuth2.
Para o caso de autenticação via LDAP é possível, ainda, que se restrinja o acesso baseado em um nível da árvore do diretório. Até a versão 1.8.4, lançada em 14 de Julho de 2020, entretanto, não era possível restringir partes de uma aplicação com base no grupo que o usuário pertencia no LDAP. Restrições análogas estavam disponíveis em outros provedores de autenticação.
Em uma das atividades recentes da Tecnisys, um cliente de grande porte necessitava que uma aplicação shiny tivesse acesso à informação sobre, se os usuários que acessavam a aplicação pertenciam a um determinado grupo do Microsoft Active Directory e, a partir daí, restringir ou permitir o acesso a algumas partes da aplicação. Como essa possibilidade não estava disponível nativamente até essa versão do RStudio Connect, foi necessário que a Tecnisys desenvolvesse a funcionalidade para atender a essa demanda em específico. Assim, foi desenvolvido um pacote R que faz uma consulta no serviço de LDAP e verifica se o usuário pertence ao grupo em questão. Deste modo, é possível mudar o comportamento da aplicação baseado na informação retornada pela chamada da função correspondente. Para a primeira versão do pacote, foram implementadas funções que fazem essa verificação para os provedores OpenLDAP e Microsoft Active Directory.
As funções em questão são check_AD_grp e check_oldap_grp, para AD e OpenLDAP, respectivamente. Estas funções tomam como parâmetros o URI do servidor, as credenciais de bind, o usuário e o grupo a se verificar. Há também um parâmetro opcional que permite que a verificação do certificado do servidor seja ignorada. O retorno dessas funções é uma variável booleana.
Abaixo temos um exemplo de um trecho de código de uma aplicação shiny que mostra uma mensagem personalizada, a depender se um usuário pertence a um grupo específico do OpenLDAP.
É importante salientar que as credenciais de bind são, geralmente, informações muito sensíveis dentro de uma corporação e, portanto, deve-se tomar muito cuidado ao incluí-las em arquivos. É recomendável que essas credenciais estejam em um arquivo e este, ser lido pela aplicação, em vez dessas informações estarem incluídas diretamente nos scripts da aplicação.
Essas funções, apesar de serem relativamente simples em termos de implementação, oferecem grande flexibilidade para aqueles que desenvolvem e publicam os conteúdos utilizando o RStudio Connect. Essa flexibilidade é ainda maior quando o RStudio Server Pro é integrado ao ecossistema, pois permite o desenvolvimento e publicação de conteúdos por usuários em conjunto.
O pacote R, bem como sua documentação, está disponível em https://github.com/physicassio/ldapqp/.