我正在尝试找到有关在新的ASP.net身份框架中使用默认OAuth Bearer令牌提供程序以在单页JavaScript应用程序中处理令牌过期和刷新令牌的良好指导。我理解以下事项 -
应指定一个短的access_token生命周期(默认为14天,但最好是5-20分钟)
您可以指定从IAuthenticationTokenProvider继承的RefreshTokenProvider
刷新令牌将添加到来自OWIN端点的OAuth令牌响应中
您现在理论上可以使用刷新令牌和“refresh_token”授权类型来请求新令牌
我不明白的是这个 -
在令牌响应中发回刷新令牌似乎不安全?如果中间的人要拦截,他们就拥有申请新令牌所需的一切。
授予刷新令牌通常与验证客户端ID和客户端密钥有关。据我所知,不可能将它们安全地存储在JS SPA中。
所以现在我不知道从哪里开始..我所能想到的就是强制我的用户注销并在令牌过期后重新登录,重新发送初始密码授予。
答案 0 :(得分:0)
在令牌响应中发回刷新令牌似乎不安全?如果 中间的一个人要拦截,他们拥有他们需要的一切 要求新的代币。
SSL
授予刷新令牌通常与验证客户端ID和 客户秘密。据我所知,无法安全存放 这些在JS SPA中。
你在这里绝对正确。 ClientSecret无法保留在客户端上。因此,您可以简单地拥有一个服务器端端点,它将从当前用户会话返回一个新的访问令牌。这里的想法是将刷新令牌保留在服务器上,当客户端需要新的访问令牌时,它将请求此端点。显然,客户端需要进行身份验证,这可以通过常见的ASP.NET身份验证来实现。