Login Tokens
Renato.neves (Talk | contribs) (→Segurança da Informação) |
Renato.neves (Talk | contribs) (→Boas Práticas) |
||
Line 62: | Line 62: | ||
* Use as [[RESTful APIs|APIs REST]] apenas no backend, nunca via Javascript (frontend). O API ID e API Secret usado na [[Authentication|autenticação]] das mesmas não deve ser exposto no browser dos usuários. | * Use as [[RESTful APIs|APIs REST]] apenas no backend, nunca via Javascript (frontend). O API ID e API Secret usado na [[Authentication|autenticação]] das mesmas não deve ser exposto no browser dos usuários. | ||
+ | |||
+ | * Utilize uma autenticação extra (ex: login tradicional com login e senha) em operações críticas em seu site (ex: operações financeiras, gerenciamento de cartão de crédito, etc). |
Revision as of 15:27, 2 September 2013
Contents |
Tokens
login_token
É o token gerado a cada login social feito pelo usuário.
É fornecido no evento socialid.events.onLoginSuccess ou enviado como parâmetro ao callback url cadastrado no Social Login.
Características:
- Atualiza: a cada login social
- Validade: expira em 1 hora
APIs:
- É usado para autenticação da API GET login/info.
connection_id
É um identificador gerado para cada conexão ativa do usuário. Representa a sessão do usuário no Social Login.
Os Widgets do Social Login automaticamente identificam usuários logados dado o connection_id salvo como cookie no browser do usuário.
Características:
- Atualiza: a cada login social ou via API
- Validade: expira em 15 dias
APIs:
- É possível gerar um novo connection_id dado um id de usuário usando a API REST POST login/apps/:app_id/sign_ins.
- Dado um connection_id, é possível logar um usuário na sessão do Social Login usando a API Javascript socialid.login.loginConnection.
- Para deslogar um usuário da sessão do Social Login use a API Javascript socialid.login.logout ou a API REST DELETE login/connections/:id
user_token
É um token que serve para identificar o usuário. É usado em algumas APIs Javascript para identificar o usuário de forma segura.
Características:
- Atualiza: a cada login social ou via API
- Validade: não expira
APIs:
- A API PUT login/users/:user_id/token atualiza o token de um usuário.
- Dado um user_token, é possível logar um usuário na sessão do Social Login (gerando um novo connection_id) usando a API Javascript socialid.login.loginUserToken.
Segurança da Informação
As APIs REST utilizam o protocolo de autenticação HTTP Basic. Veja a documentação de autenticação.
As APIs Javascript utilizam a sessão do usuário atualmente logado no Social Login ou identificadores como connection_id e user_token como parâmetros de autenticação.
APIs Javascript precisam de um cuidado redobrado em termos de segurança da informação pois são usadas no browser do usuário (ex: não é possível garantir validade de código Javascript) e em condições desconhecidas (ex: redes Wi-Fi públicas não encriptadas). Assim como qualquer sessão de browser, as APIs Javascript estão sujeitas a ataques de Session Hijacking ou Man-in-the-middle, dentre vários outros.
A fim de minimizar riscos de segurança, listamos algumas boas práticas a seguir. O desenvolvedor que está integrando nossas APIs precisa estar ciente que o uso indiscriminado dos identificadores connection_id e user_token pode levar a riscos de segurança.
Boas Práticas
- Deslogue o usuário do Social Login sempre que ele se deslogar da sua aplicação. Use a API Javascript socialid.login.logout ou a API REST DELETE login/connections/:id.
- Atualize o user_token periodicamente usando a API REST PUT login/users/:user_id/token. Como o user_token não expira e pode ser usado em APIs JS críticas (ex: logar ou mover usuários), é recomendável mudar o token periodicamente para evitar Session Hijacking.
- Use conexão segura (HTTPS) em seu site para trafegar os dados e impedir que os tokens sejam interceptados por atacantes em redes desprotegidas. Veja Man-in-the-middle attack.
- Evite armazenar qualquer token em Cookies. Caso o faça, use o atributo "secure" do Cookie.
- Use as APIs REST apenas no backend, nunca via Javascript (frontend). O API ID e API Secret usado na autenticação das mesmas não deve ser exposto no browser dos usuários.
- Utilize uma autenticação extra (ex: login tradicional com login e senha) em operações críticas em seu site (ex: operações financeiras, gerenciamento de cartão de crédito, etc).