繁体   English   中英

几分钟后,Web api bearer令牌超时

[英]Web api bearer token timeout some minutes later

我正在使用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错误。

我试图从Fiddler和邮差获取请求,但给出了401授权错误。

从这篇文章: ASP.NET Web API授权令牌提前到期

看起来每次应用程序池被回收时都会重新生成用于加密和解密令牌的机器密钥,导致我们的应用程序无法解密以前加密的令牌。 尝试按照帖子中的建议设置固定的机器密钥。

边注:

从应用程序设计的角度来看,我们不应该为访问令牌设置很大的时间跨度,访问令牌应该是短暂的并与刷新令牌一起使用: 为什么OAuth v2同时具有访问权限和刷新令牌?

要在OAuthAuthorizationServerOptions生成刷新令牌,请为您的OAuthAuthorizationServerOptions提供RefreshTokenProvider

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.
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM