Gerar tokens de autenticação criptograficamente seguros

Fundo

Esta é realmente uma pergunta geral sobre práticas recomendadas, mas alguns antecedentes sobre a situação específica podem ser úteis:

Estamos desenvolvendo um aplicativo "conectado" para o iPhone. Ele se comunicará com o aplicativo de back-end através dos serviços REST. Para não precisar solicitar ao usuário um nome de usuário e senha toda vez que iniciarem o aplicativo, exporemos um serviço de "Login" que valida seu nome de usuário e senha no início do processo e retorna um token de autenticação que pode ser usado para futuras web solicitações de serviço para dados reais. O token pode ter um prazo de validade após o qual solicitaremos que eles se autentiquem novamente com seu nome de usuário / senh

A questão

Quais são as práticas recomendadas para gerar esse tipo de token a ser usado para autenticaçã

Por exemplo, poderíamos ...

Hash (SHA-256, etc) uma sequência aleatória e armazene-a no banco de dados para o usuário especificado, juntamente com uma data de validade. Faça uma pesquisa simples do token em solicitações subsequentes para garantir que ele correspond Criptografe o ID do usuário e algumas informações adicionais (registro de data e hora, etc.) com uma chave secreta. Descriptografe o token em solicitações subsequentes para garantir que ele tenha sido emitido por nó

Parece que deve ser um problema resolvid

questionAnswers(7)

yourAnswerToTheQuestion