Asp.net OWIN身份刷新令牌和令牌过期

时间:2014-07-26 17:17:24

标签: asp.net authentication oauth-2.0 owin asp.net-identity-2

我正在尝试找到有关在新的ASP.net身份框架中使用默认OAuth Bearer令牌提供程序以在单页JavaScript应用程序中处理令牌过期和刷新令牌的良好指导。我理解以下事项 -

  • 应指定一个短的access_token生命周期(默认为14天,但最好是5-20分钟)

  • 您可以指定从IAuthenticationTokenProvider继承的RefreshTokenProvider

  • 刷新令牌将添加到来自OWIN端点的OAuth令牌响应中

  • 您现在理论上可以使用刷新令牌和“refresh_token”授权类型来请求新令牌

我不明白的是这个 -

  • 在令牌响应中发回刷新令牌似乎不安全?如果中间的人要拦截,他们就拥有申请新令牌所需的一切。

  • 授予刷新令牌通常与验证客户端ID和客户端密钥有关。据我所知,不可能将它们安全地存储在JS SPA中。

所以现在我不知道从哪里开始..我所能想到的就是强制我的用户注销并在令牌过期后重新登录,重新发送初始密码授予。

1 个答案:

答案 0 :(得分:0)

  

在令牌响应中发回刷新令牌似乎不安全?如果   中间的一个人要拦截,他们拥有他们需要的一切   要求新的代币。

SSL

  

授予刷新令牌通常与验证客户端ID和   客户秘密。据我所知,无法安全存放   这些在JS SPA中。

你在这里绝对正确。 ClientSecret无法保留在客户端上。因此,您可以简单地拥有一个服务器端端点,它将从当前用户会话返回一个新的访问令牌。这里的想法是将刷新令牌保留在服务器上,当客户端需要新的访问令牌时,它将请求此端点。显然,客户端需要进行身份验证,这可以通过常见的ASP.NET身份验证来实现。