我意识到spa(react)不支持刷新令牌。 因为它无法保护它。
所以我遇到了一系列问题:
1-我们可以在spa中使用长时间访问令牌吗?安全吗?
2-刷新令牌是替代解决方案吗?
3-我们应该使用第三方身份服务器(例如Identityserver 4)还是可以实现令牌生成(自身)。什么是最佳做法?
答案 0 :(得分:0)
有点晚,但仍然...
您认为正确的刷新令牌不应由用于验证SPA应用程序中的用户身份的隐式授予返回。是的,该限制是由于浏览器无法将其设为私有。
1-我们可以在spa中使用长时间访问令牌吗?安全吗?
我们可以,但是它是否安全取决于您应用程序的安全策略。 为了简短起见,here是如何考虑为各种安全要求指定访问令牌生存期的示例。
2-刷新令牌是替代解决方案吗?
是的,它被称为 Silent身份验证,并且简短地看起来像这样:
setTimeout
中完成),但是在这种情况下,需要提供一个参数告诉Identity Server应该删除同意屏幕(通常是prompt=none
)资源:
Azure AD Silent authentication
3-我们应该使用第三方身份服务器(例如Identityserver 4)还是可以实现令牌生成(自身)。什么是最好的 练习吗?
这取决于应用程序的大小以及您是否仅需要令牌生成还是更多(例如,现成的联合身份验证,各种授权类型等)。 对于大型企业(如果不需要重新发明轮子),除非您的应用程序很小(MVP,否则,最好使用生产就绪的第三方库(Identity Server 4或OpenIddict)。原型等)。
Identity Server 4需要付出一些努力才能以正确的方式对其进行配置,并且可能仅仅是多余的。 OpenIddict是更简单的选择。
自定义令牌生成是我们在Identity Server出现之前曾经做过的事情。如今,只有一个快速解决方案可以满足您的自定义身份验证需求。
值得一提的这个项目JWTSimpleServer用于简单的JWT身份验证。