Archive for the ‘Sem categoria’ category

A USP e suas polêmicas

novembro 8th, 2011

No último dia 27, o debate referente à presença da Polícia Militar no campus da USP voltou à mídia após alguns estudantes serem flagrados fumando maconha na universidade.

Ocupações e manifestações estampam capas de jornais e têm destaques na mídia -  Nas últimas semanas muito vi e ouvi críticas aos que condenam estas manifestações, alegando que ou não vivenciam a realidade da USP, ou que se deixam levar pela mídia. Em certa parte concordo, e por isso evitei manifestar a minha opinião, até porque, acredito que não tinha uma bem formulada – na verdade talvez ainda não tenha – mas vou compartilhar um pouco da que tenho construído.

A questão da segurança
Os argumentos e as causas defendidas pelos manifestantes, são válidas e extremamente lógicas. Tomei a liberdade de utilizar citações de um texto criado por um amigo, estudante da USP e defensor das manifestações:
“(…)A universidade pública, é o lugar em que novos modelos são pensados. Modelos atômicos, modelos arquitetônicos, modelos tecnológicos e modelos sociais! (…) é o lugar de desenvolver e testar esses modelos, seja a fiação do poste que passa por baixo e não por cima, seja tendo muito mais rotatórias que semáforos, seja tendo uma política de segurança vinculada a necessidade dos que vivem nesse espaço! (…)” .
Desta forma, o que é reivindicado é que, levanto em conta o fato da universidade ser uma autarquia, é seu dever cuidar de todas as suas questões, inclusive da segurança, e, uma vez transferindo esta responsabilidade para o estado, a possibilidade de testar um modelo de segurança mais eficiente, apresentando-o à sociedade, vai por água a baixo (convenhamos que não vivemos num estado seguro, mesmo com nossa PM).
Sou da opinião, ao contrário dos manifestantes, de que HOJE a presença da PM no campus pode complementar as medidas propostas para maior segurança:
“(…)Para começar, segurança tem a ver com infra-estrutura. Um campus bem cuidado, com mato cortado e bem iluminado com certeza seria mais seguro. (…) mais circulares permitiriam que as pessoas passassem menos tempo nos pontos expostas ou se aventurassem em longas caminhadas tarde da noite. Se uma guarda é necessária, que seja a guarda universitária, (…) que tenha a função de guardar as pessoas e não os prédios. Que seja incorporada ao quadro de funcionários da universidade e não conte com terceirizados. Que tenha mais mulheres e formação em direitos humanos para casos como estupros. E o mais importante: Ter um campus freqüentado pela sociedade. (…)”
Concordo que a segurança no resto da sociedade é extremamente ridícula, devido a precariedades muito semelhantes às da USP. Desta forma, embora acredite que são válidas as causas e manifestações envolvendo o fato de que a reitoria não deve se omitir apenas transferindo a responsabilidade para o estado, discordo de exigirem que a PM saia do campus e que o acordo seja cancelado neste momento. Por mais arborizada, limpa e frequentada que uma região seja, acredito que um mínimo de ordem (armada e militar) deve existir, para inibir e punir eventuais oportunidades violentas. Se esta mínima ordem é de responsabilidade da guarda universitária, é algo que deve ser debatido, o fato é que HOJE a PM é mais preparada para este tipo de inibição.

 

Maconha
É uma questão para outro post, é uma outra discussão, mas sou da opinião de que qualquer um tem o direito de lutar por sua liberação (no momento e de modo oportuno), inclusive a defendo, mas a partir do momento em que sua utilização causa uma ferida enorme no país (tráfico, violência, etc), não acredito que qualquer um tenha o direto de usar sem qualquer forma de inibição.
De qualquer modo, uma certa parcela dos manifestantes alega que este assunto não é o foco do debate e das manifestações. Por ora, vou considerar esta afirmação como verdade. (Tenho minhas dúvidas)

 

Sobre as manifestações e ocupações
“(…) Principal responsável por toda a situação, a reitoria se aproveitou da enorme demanda por segurança para implantar seu projeto elitista de universidade. Essa demanda foi criada pela própria reitoria, ao ignorar pautas antigas do movimento estudantil e de trabalhadores por uma universidade mais segura. O atual reitor, Rodas, não apenas transfere sua responsabilidade para o estado, como usa o convenio como desculpa para não tomar mais nenhuma providencia com relação à segurança. Claro que muitos dos pedidos do movimento estudantil levam tempo e necessitam de investimento, mas é tudo questão de prioridade: Já faz meses que o convenio foi firmado e milhões foram gastos com prédios administrativos ainda muito mal explicados.”
Assumindo que o modelo de segurança proposto pelos manifestantes seja de fato o ideal, e assumindo ainda que a reitoria faz um total descaso com estas justas manifestações, cuidando apenas de interesses elitistas – a ocupação de prédios HOJE é realmente a melhor forma de manifestação?
“Em momentos de muita polarização e politização dos movimentos sociais, a ocupação é um método histórico de lutas. Nos levantes que vimos acontecer este ano ele foi bastante utilizado, praça Tahir no Egito, praça Puerta Del Sol na Espanha. Ocupações de fabricas também são muito comuns na historia. (…)”
Por mais manipuladora que a mídia seja, é perceptível a desordem na qual os manifestantes protestam e divulgam os seus ideais, bem como a participação de alguns que estão lá descaradamente pela adrenalina ou pela sensação de que são heróis como os estudantes do passado (vide frases como “não posso nem fumar minha maconha em paz”, ou ainda pela bebedeira dos estudantes em momento de ocupação) .
O que quero dizer é que, logicamente, não são todos que estão se lixando para esses ideais, mas me parece óbvio que o modo como as reivindicações do passado se davam, fazia sentido no contexto da época, quando o militarismo reprimia de verdade o livre pensamento.
Afirma-se que a PM reprime reivindicações. Talvez. Na verdade eu sei que existem sim policiais que têm “sangue nos olhos” para bater “em vagabundo” – mas reivindicações feitas com ordem, sem vandalismos, depredação de patrimônios públicos (hipocrisia, na minha opinião) e principalmente divulgação e argumentos referentes às causas (para serem ouvidos pela mídia e pela população), esta repressão ou não existe ou é exceção de alguns policiais desumanos.

 

Resumindo
As causas são válidas? Eu considero que sim.
Na minha opinião o principal problema é a desordem e a maneira como os estudantes descontextualizam as históricas formas de reivindicações.

Implementando Rubycas Server e Client

junho 29th, 2011

Aqui na UFABC possuímos uma base para autenticação de usuários centralizada no LDAP. Para evitar desconfortos aos usuários, bem como para facilitar a vida de nós, que desenvolvemos as aplicações e, é claro, as interfaces de login em cada uma delas, comecei a pesquisar maneiras de realizar um Single Sign-On (SSO) para todas as aplicações já em produção e para as futuras.

Inicialmente pensei em simplesmente criar uma sessão genérica que pudesse ser acessada por diversas aplicações, porém, o que parecia ser mais simples e rápido acabou se mostrando menos seguro e infinitamente menos portável. Logo desisti da idéia e comecei a pesquisar outras soluções de SSO.

O Maurício me indicou uma série de sistemas/bibliotecas baseados em diferentes protocolos, todos para Ruby. No meio da lista o Rubycas me chamou atenção, principalmente por utilizar um protocolo já utilizado e implementado em forma de clients para outras linguagens e por possibilitar a autenticação no LDAP.

Não vou entrar em detalhes sobre a história e funcionamento do protocolo CAS de SSO, mas suas primeiras implementações foram feitas em Java, quando se tornou um projeto da Jasig.

Para saber mais sobre como funciona o protocolo CAS visite este link. Basicamente existe um server que é uma interface web que autentica um usuário em alguma base de autenticação (LDAP no caso da UFABC) e redireciona para algum client que é sua aplicação.

RUBYCAS SERVER

A primeira coisa que fiz após ler um pouco sobre o protocolo CAS e sobre o projeto Rubycas foi tentar fazer o download do rubycas-server, seguindo as instruções desta página, instalei a gem rubycas-server em uma nova rvm gemset e segui as instruções destadesta pagina. As dores de cabeça começaram.

A gem possui dependências de gems antigas, o que ocasionou diversos problemas em alguns requires e em alguns métodos. Fiz alguns monkey patch’s para corrigir estes probleminhas, e após brigar muito com seu arquivo de configuração consegui fazer subir um “Frankenstein” no Webrick.

Foi um avanço, comecei a implementar os clients pois estava com pressa, mas mais tarde voltei ao server, definitivamente eu não queria fazer deploy de um Frankenstein:

  1. Clonei este projeto (O projeto!) do Github:  $ git clone git://github.com/gunark/rubycas-server.git meu_diretorio/rubycas-server;
  2. Entrei na pasta do projeto, editei o arquivo rubycas-server.gemspec e troquei a dependência da gem sqlite3 pelo meu adaptador de bd preferido;
  3. Instalei todas as dependências: $ bundle install
  4. Executei $ ./bin/rubycas-server e o arquivo localizado em ./config/config.example.yml foi automaticamente copiado para /etc/rubycas-server/config.yml
  5. Editei o arquivo /etc/rubycas-server/config.yml configurando o meu servidor e porta da aplicação, o meu adaptador de banco de dados, e meu modo de autenticação (LDAP);
  6. Fiz a aplicação subir localmente no Webrick rodando novamente $ ./bin/rubycas-server
  7. Testei a aplicação em http://localhost:<porta_escolhida> e visualizei a interface de login com sucesso!
  8. Para fazer deploy, como centralizamos nossos códigos no SVN, importei o projeto para nosso servidor SVN e fiz o checkout na máquina de produção;
  9. Dentro da pasta do projeto na máquina de produção repeti as etapas 3, 4 e 5, mas no arquivo de configuração não escolhi o meu servidor (webrick, mongrel, phusion passenger – apache, etc);
  10. Como iria publicar o rubycas-server no Apache (com o Phusion Passenger previamente instalado) entrei no diretório /etc/apache2/vhosts.d e criei um novo arquivo de configuração direcionando o meu host para a pasta da minha aplicação;
  11. Reiniciei o Apache e minha interface de login (Rubycas-server) passou a funcionar em produção desde então!

RUBYCAS CLIENT

A instalação e configuração do rubycas-client foi bem menos traumática. Transformei duas de nossas aplicações em dois clients para se autenticarem noserver que eu já tinha configurado:

  1. Instalei a gem rubycas-client;
  2. Entrei no diretório do projeto da minha aplicação;
  3. Editei o arquivo ./config/environment.rb em uma aplicação feita em Rails 2.x.x e ./config/application.rb em uma feita em Rails 3.x.x e inseri o seguinte código:
        require 'casclient'
        require 'casclient/frameworks/rails/filter'
    
        CASClient::Frameworks::Rails::Filter.configure(
          :cas_base_url => "https://<meu_server>/"
        )
  4. Editei o arquivo ./app/controllers/application_controller.rb e inseri o seguinte código no início do arquivo:  before_filter CASClient::Frameworks::Rails::Filter
  5. Apartir deste momento as aplicações já passaram a funcionar como clients. Um client se comporta basicamente da seguinte maneira: Verifica se a sessão cas_user existe, caso positivo cabe à sua aplicação decidir se fornece ou não permissão ao usuário logado, caso negativo redireciona o usuário para o rubycas-server, onde deve ser feita a autenticação, caso o usuário digite seu login e senha corretamente ele é redirecionado para a aplicação anterior (client), com a sessão cas_user contendo uma string com seu nome de usuário;
  6. O client é bastante flexível. A documentação (http://rubycas-client.rubyforge.org/) me ajudou bastante, principalmente para me ajudar a implementar o logout e a fazer os testes automatizados
E foi assim que consegui implementar um SSO aqui na UFABC. A partir de agora vou monitorar o desempenho e a eficiência do sistema e futuramente avaliar a necessidade de implementar ou não o Shiboleth (outro sistema de SSO que se comunica com a federação Cafe, que não entra no caso agora).

Vale lembrar que os clients do CAS podem ser implementados em outras linguagens além do Ruby (Java, PHP, .NET, etc), veja aqui.

Espero que tenha ajudado, ou ao menos dado alguma idéia. Qualquer coisa podem entrar em contato!

Inauguração oficial do Blog

setembro 27th, 2009

Este, após algumas dezenas de postagens de teste, é oficialmente o primeiro post do meu blog!

Um agradacimento especial aos que vêm me acompanhando desde quarta-feira, quando registrei o meu domínio e idealizei tudo isto aqui:

Meus colegas de profissão lá do NTI:

Thiago Laurindo – @gostanada

Lucas Trombeta- @lucastrombet

Rodolfo Esteves- @rodolfo_esteves

Vítor Astolfi – Sem Twitter…

Maurício Szabo – Sem Twitter…

Meu grande amigo e parceiro Wesley de Oliveira – @wesleyoliveira

Minha namorada que amo muito Isabela Daneluci – @isa_D

Me comprometo a ser o mais responsável, assíduo, dedicado, empenhado, carinhoso,  frequente, disciplinado e nerd possível com este blog!

Até muito breve!