angularjs – 保存密钥和访问令牌在快速和NodeJS与Facebook的Rest API中的JWT

前端之家收集整理的这篇文章主要介绍了angularjs – 保存密钥和访问令牌在快速和NodeJS与Facebook的Rest API中的JWT前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个应用程序:

>服务器(REST API服务器)

>节点js
>快递
> jsonwebtokens
> express-jwt
>猫鼬

>客户端(便携式前端)

>引导
>角度JS
>本地存储
角色facebook
> angle-jwt

后来,客户端应用程序将被移植到android,iphone和其他平台使用phonegap.对于OAuth,我正在使用Facebook作为提供者.现在,我刚才发现JSON Web Token是这种设置的方式.我的问题是架构性的,而不是语法的 – 如何在nodejs中使用JWT签署Facebook访问令牌和用户ID时如何管理密钥?

所以这是流程如何在我的应用程序中工作:

角度客户端有一个登录按钮
>用户点击按钮> Facebook Auth开始
>客户端接收user_id和FB访问令牌
>客户端将[POST json body]将user_id和访问令牌发送到Node Express Server为’http://server.com/auth/login
> Node Server已将express-jwt应用于除auth / login之外的所有路由

var expressJwt = require(‘express-jwt’);

var jwt = require(‘jsonwebtoken’);

app.use(expressjwt({secret:”})),({path:[‘/ auth / login’]}));
>节点服务器从req.body接收数据,使用JavascriptSDK从Facebook获取所有配置文件的详细信息,并使用它进行签名

var token = expressjwt.sign({profile},);
> Node Server存储(更新,如果user_id存在)db中的新令牌,并将其作为响应发送给客户端
>客户端将本地接收的新令牌作为json数据存储在本地存储中
>客户端使用angular-jwt从新令牌获取配置文件数据,并将其发送到服务器的所有请求自动附加到授权头中的新令牌

现在我的问题是:

>我真的需要在数据库中存储JWT令牌吗?我肯定不会将请求标头中的令牌与数据库进行比较
>我需要为安全性生成随机秘密密钥,每次登录?如果是,那么如何适应客户端和服务器?
>何时何地需要检查令牌过期?和如何刷新它?

我对设计流程和机制感到失落.

广告1.您不必在数据库中存储JWT.用户ID可以是有效载荷的一部分,因此不需要它.

广告2.服务器端应用程序通常使用一个密钥来生成所有JWT.

广告3.检查您的API的每个请求上的令牌是否过期,如果令牌已过期,则不允许访问,返回401状态代码.客户端应用程序应提示用户获取凭据并请求新的JWT.如果要避免用户重新提交凭据,您可以发出刷新令牌,以后可以用于生成新的JWT.

JWT refresh token flow

http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/

猜你在找的Angularjs相关文章