【问题标题】:Web api bearer token timeout some minutes later几分钟后 Web api 不记名令牌超时
【发布时间】:2016-06-02 02:55:45
【问题描述】:

我正在使用 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
};

而我生成的token是这样的。

{
  "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 授权错误。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-web-api oauth access-token


    【解决方案1】:

    来自这个帖子:ASP.NET Web API Authorization tokens expiring early

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

    旁注:

    从应用程序设计的角度来看,我们不应该为访问令牌设置大的时间跨度,访问令牌应该是短暂的并与刷新令牌一起使用:Why Does OAuth v2 Have Both Access and Refresh Tokens?

    为了在 owin 中生成刷新令牌,请将 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.
    };
    

    【讨论】:

      猜你喜欢
      • 2021-01-31
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多