Processo de autenticação

SDK do Diretório de Aplicativos

Processo de autenticação (v2.0, atual)

A maioria dos aplicativos procura fornecer conteúdo específico ao usuário e recursos de interação. Antes de implementar a autenticação, seu aplicativo não reconhecerá o usuário da Hootsuite que o está utilizando. Esta página descreve técnicas para autenticar um usuário da Hootsuite em seu aplicativo.

Note que essa técnica NÃO proporciona um método para autenticação com provedores de serviços externos. É sua responsabilidade configurar a autenticação com um provedor externo, usando o método que ele oferece.

Exigimos que todos os aplicativos implementem Login Único. Ele informa a ID do usuário para que um fluxo de seu aplicativo saiba qual usuário da Hootsuite está visualizando. Um valor hash (token de segurança) é usado para evitar a falsificação dessa ID de usuário, autenticando a solicitação.

Você também pode optar por permitir que o usuário acesse qualquer outra conta de usuário e você mesmo associar seu aplicativo manualmente quando usa a autenticação por Login Único. Você pode oferecer acesso a contas de sua própria base de usuários ou implementar a autenticação com um provedor de serviços externo (usando o método de autenticação que ele oferece). Em termos gerais, é aconselhável associar uma conta de terceiros a um único fluxo. Digamos que essa é uma característica por fluxo.

Esse tipo de autenticação de conta de terceiros por fluxo oferece ao usuário a vantagem de se conectar a várias contas simultaneamente, cada qual em seu próprio fluxo, sem necessidade de instalar seu aplicativo várias vezes.

Um dos parâmetros de URL passados para os fluxos é a ID de localização do fluxo, o pid. Exclusivo de cada fluxo que o usuário adicionou, isso é útil na implementação da autenticação por fluxo de uma conta de terceiros.

Login Único

Um identificador do usuário, um carimbo de data/hora e uma chave secreta (salt) compartilhada pela Hootsuite e o desenvolvedor são criptografados com o algoritmo SHA-1 e passados para o aplicativo. O hash de verificação pode ser recalculado pelo desenvolvedor e comparado com o que foi passado. Se coincidirem, o usuário associado ao identificador pode ser conectado.

Com esse método, ninguém pode falsificar um hash de verificação se não souber qual é a chave secreta compartilhada. Contudo, esse método é vulnerável a ataques de repetição (replay) se o invasor conseguir interceptar tráfego da rede não criptografado e visualizar a string de consulta. Para que isso seja atenuado, é preciso usar https e verificar se o carimbo de data/hora é recente (não mais de 10 segundos em relação à hora em seu servidor).

Por padrão, o identificador de usuário fornecido é um identificador exclusivo associado à conta da Hootsuite do usuário. 

Exemplo de URL:

https://app.somewhere.com?i=1667985&ts=1310681657&token=231a3fb74139c74c37e9111ceb59ce02a349ef88

O aplicativo valida esses parâmetros da seguinte maneira:

$secret = 'sharedSecretABCD1234'; // defined in App configuration at hootsuite.com/developers
$user_id   = $_REQUEST['i'];
$timestamp = $_REQUEST['ts'];
$token     = $_REQUEST['token'];
if (sha1($user_id . $timestamp . $secret) == $token)
{
    echo "Logon bem-sucedido!";
}

Parâmetros de URL passados para o iframe do fluxo de aplicativo:

lang=en
timezone=7200
pid=2823         // placement ID, unique for each stream per user
uid=1234567      // Hootsuite user ID
i=1234567        // user identifier (optionally entered by user upon App installation)
ts=1318362023    // timestamp
token=123abc...  // security token (sha1 hash)