实施客户端-服务器身份验证的最佳实践

Posted

技术标签:

【中文标题】实施客户端-服务器身份验证的最佳实践【英文标题】:Best practices to implement client-server authentication 【发布时间】:2015-05-30 16:41:06 【问题描述】:

我正在寻找实现客户端-服务器身份验证(本地 + 社交)的最佳实践。 现在我正在分别开发后端和前端。之前我通过下一个流程进行了身份验证:

登录->接收令牌->调用api

我还需要找到一种方法将令牌添加到黑名单中。 技术栈:node.js(帆) 前端:角度

前端应用程序也应该可以调用多个服务器的 api。这意味着前端应用程序应该只在主服务器上登录一次,并且可以调用另一个 api。

我愿意接受开箱即用的解决方案。

【问题讨论】:

关于 SO 的这个论点有不同的问题......这里有一些问题:Link1 和 Link2 你检查了 passport.js passportjs.org 吗?工作示例; scotch.io/tutorials/easy-node-authentication-setup-and-local 【参考方案1】:

如果您使用 JSON Web 令牌 (JWT) 作为令牌:您可以将唯一的随机值作为 jti 声明放入令牌中。您将这些 jti 值存储在您的数据库中,并将它们用作您的黑名单。

如果您想阅读有关使用 API 的单页应用程序的 JWT 最佳实践,请参阅我为此主题撰写的博文:Token Based Authentication for Single Page Apps

关于开箱即用的解决方案:我在Stormapth 工作,我们的Stormpath Angular SDK 有这样的解决方案。

【讨论】:

以上是关于实施客户端-服务器身份验证的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

Ember.js 和玩!框架身份验证最佳实践

管理身份验证令牌的最佳实践

什么是 WPF 和 WCF 应用程序的用户身份验证/授权的“最佳实践”?

移动设备的最佳实践身份验证

Ember 身份验证最佳实践?

自定义 REST 服务的 API 身份验证最佳实践