Integração do Drupal com a Senha Única USP

1)Preparar um servidor linux. Neste tutorial usaremos uma VM Debian 7.

2)Instalar os seguintes pacotes:
  # apt-get update
  # apt-get install apache2 postgresql php5-pgsql php5 php5-gd php5-curl
  Opcionais:
  # apt-get install drush git

3)Habilitar rewrite do apache2:
  # a2enmod rewrite; service apache2 restart

4)Criar banco de dados e usuário no postgresql:
  # su postgres
  # psql
  psql# CREATE USER tutorial_usuario PASSWORD 'tutorial_senha';
  psql# CREATE DATABASE tutorial_banco owner tutorial_usuario;

5)Entrar na pasta /var/www:
  # cd /var/www

6)Baixar drupal (pode usar outro método):
  # drush dl drupal

7)Para facilitar, neste caso deixaremos o dono da pasta como o usuário do apache2. Não faça isso em um servidor compartilhado:
  # chown -R www-data: drupal-7.28/

8)Configurar VirtualHost no Apache2 para drupal.fflch.usp.br:
  Criar arquivo:
  # vim /etc/apache2/sites-available/drupal.fflch.usp.br
   <VirtualHost *:80>
      ServerAdmin tutorialdrupal@usp.br
      DocumentRoot /var/www/drupal-7.28
      ServerName drupal.fflch.usp.br
      ServerAlias drupal.fflch.usp.br
      RewriteEngine On
      RewriteOptions inherit
    </VirtualHost>

9)Habilita site:
  a2ensite drupal.fflch.usp.br; service apache2 reload

10)Rodar instalador:
   http://drupal.fflch.usp.br

11)Depois de instalado, entrar na pasta do drupal e baixar os módulos:
  # drush dl ctools rules http_client oauth connector oauthconnector

12)Baixar módulo senha única USP:
  # cd sites/all/modules/
  # git clone https://github.com/thigove/senhaunicausp.git
  # drush en senhaunicausp --yes
  # drush cc all

13)Cadastrar Consumer:
  https://uspdigital.usp.br/adminws/oauthConsumidorAcessar
  URL de retorno: http://drupal.fflch.usp.br/drupal-7.28/oauth/authorized

14)Configurar OAuthconnector:
  estrutura -> Oauth Connector -> Add Provider
    -URL base: https://uspdigital.usp.br
    -Consumer Key/Secret informado pelo DI.
    -Request token endpoint: /wsusuario/oauth/request_token
    -Authorization endpoint: /wsusuario/oauth/authorize
    -Access token endpoint: /wsusuario/oauth/access_token

Mapeamento:
  Marcar:  POST request
  Resouce: https://uspdigital.usp.br/wsusuario/oauth/usuariousp
  Campos: emailPrincipalUsuario e loginUsuario

15)Permissões para usuários anônimos:
  people -> permission -> Connect with usp

16)Cadastro do callback_id:
  configurações -> callback_id

17)Criar Alias:
  Configurações -> URL aliases: connect/oauthconnector_usp para logar

18)Fork do OAuthConnector:
  # vim oauthconnector/oauthconnector.module
  Procure a chamada do método getAuthorizationUrl, vamos adicionar mais um elemento no array do segundo parâmetro:
  'params'=>array('callback_id' => variable_get('senhaunicausp_callback_id')),

Opicional:
19)Regra para habilitar usuário:

  Criação de regras de acesso:
    drush en rules_admin --yes
    Evento: logar
    Condição: números USP permitidos
    Acão: Habilitar usuário

20)Regra para atribuir papel:
    Evento: logar
    Condição: números USP permitidos
    Acão: Atribuir papel