几分钟后Web api持票人令牌超时
我正在使用asp.net web api和基于令牌的身份验证。 我的令牌选项设置成功令牌过期时间为14天以后。
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new SimpleAuthorizationServerProvider(),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
// In production mode set AllowInsecureHttp = false
AllowInsecureHttp = true
};
我生成的令牌就是这样。
{
"access_token": "Mg5oQAzt9RLSUezxPYNQ7JRcJqo-uPxfOgOGHKkrJ_q56g0H8x-sjKm1mkjND0VAK3H22nwFlGNk5wfTocCb5mKMvTYwsZAv5sh0SACHdbb_9BGftMuqbFdm6wH0wXF-Sq3noF7hc2FeUUauhDfrBq5jTSou4NO3EBwjc0jj3v-yQzPGMCFxq2Q8C9uhat14rGYteYqj5mX3L5JtwHrobePL2R9lcnagNIMa44GUWQ8DVR2urP4KCrDHJf1G5pIfv94uB85I7sbf0nse7VvhYp058I8voNR9_zD1XC5-AODQJ16F484zxQokX1BWJ3gfgd86zJr2O9iKsA",
"token_type": "bearer",
"expires_in": 1209599,
".issued": "Sat, 20 Feb 2016 13:15:10 GMT",
".expires": "Sat, 05 Mar 2016 13:15:10 GMT"
}
我将这些信息保存在一个cookie中,并在我的应用程序中使用。 但几分钟后,我的访问令牌验证即将过期,并发生401 http错误。
我正在尝试从提琴手和邮差的GET请求,但给401授权错误。
从这篇文章:ASP.NET Web API授权令牌提前到期
看起来每次应用程序池被回收时,用于加密和解密令牌的机器密钥都会重新生成,导致我们的应用程序无法解密先前加密的令牌。 尝试按照帖子中的建议设置固定机器密钥。
边注:
从应用程序设计的角度来看,我们不应该为访问令牌设置大的时间范围,访问令牌应该是短暂的并与刷新令牌一起使用:为什么OAuth v2同时具有访问权限和刷新令牌?
为了在OAuthAuthorizationServerOptions
生成刷新标记,请将RefreshTokenProvider
提供给您的OAuthAuthorizationServerOptions
:
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new SimpleAuthorizationServerProvider(),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
// In production mode set AllowInsecureHttp = false
AllowInsecureHttp = true,
RefreshTokenProvider = //your refresh token provider.
};
链接地址: http://www.djcxy.com/p/47953.html