Tokens de autorização da API da Web do ASP.NET expirando cedo
Eu implementei a segurança da minha API da Web (contas individuais), conforme discutidoaqui.
Eu hospedei o site em godaddy (hospedagem compartilhada) e está funcionando bem. Quando solicito um token usando a URL "domain.com/token", recebo o token com data de validade dentro de 15 dias. Eu configurei isso em "StartupAuth.cs" usando
AccessTokenExpireTimeSpan = TimeSpan.FromDays(15)
por exemplo.:
{
"access_token":"qwertyuiop.....",
"token_type":"bearer",
"expires_in":1209599,
"userName":"[email protected]",
".issued":"Wed, 11 Feb 2015 01:00:00 GMT",
".expires":"Thu, 26 Feb 2015 01:00:00 GMT"
}
(Coloquei valores no código acima, mas você tem a ideia do campo ".expires".
5 minutos após a obtenção do token, quando tento acessar "get" ou "post" ou qualquer método na minha API, passando a autorização: token do portador no cabeçalho como:
Authorization: Bearer qwertyuiop.....
Eu recebo este erro:
{"Message":"Authorization has been denied for this request."}
Embora apenas cinco minutos e o token durem 15 dias, ele expira em 5 minutos. Quando solicito qualquer método "get" / "post" dentro de um intervalo de 5 minutos, recebo a resposta adequada com meus dados em JSON. Em suma, a autorização é bem-sucedida.
Repeti esse comportamento testando-o pelo Fiddler, plug-in REST do Chrome e pelo aplicativo móvel que usa a API.
Eu tenho valores web.config para a sessão como abaixo (eu pensei que fosse relacionado)
<sessionState timeout="180" />
Observe que a autenticação de formulários não é usada; portanto, o tempo limite nessa seção no web.config não é necessário.
Alguma idéia do que está acontecendo? Esse tempo limite está fazendo com que os usuários de aplicativos móveis que usam a API façam login novamente de vez em quando. Qualquer ajuda seria apreciada.
Obrigado.