在服务器端的Azure移动服务令牌上解密或validation签名
按照指南创buildAzure移动服务的自定义身份提供商后,我可以轻松生成相应的令牌。 代码非常简单,如下所示:
var userAuth = { user: { userId : userId }, token: zumoJwt(expiry, aud, userId, masterKey) } response.send(200, userAuth);
zumoJwt的参数和代码的定义位于链接处。 Azure会自动解码令牌,并将请求对象上的用户填充到我想要模拟的对象中。
基本上我想通过节点(而不是.net)解密服务器端的令牌。
令牌没有真正的encryption – 他们只是签名。 令牌具有JWT格式 (为了清楚起见,添加了换行符):
<header>, base64-encoded "." <envelope>, base64-encoded "." <signature>, base64-encoded
如果你想解码(而不是解密)节点中的令牌,你可以分割的值.
字符,取前两个成员,base64解码它们( var buffer = new Buffer(part, 'base64')
( buffer.toString('utf-8')
var buffer = new Buffer(part, 'base64')
),并将缓冲区转换为string( buffer.toString('utf-8')
)。
如果要validation令牌,则只需按照与创build令牌相同的方式,使用主密钥对令牌的前两部分(头+'。'+信封)进行重新签名即可执行相同的步骤,并将其与您在原始令牌上收到的签名进行比较。
我最终做了什么来validation令牌是如下(煮沸)。 这似乎是关于azure色的移动服务在需要授权的路线上所做的事情。
var jws = require('jsw'); // https://github.com/brianloveswords/node-jws function userAuth() { var token = ''; // get token as header or whatever var key = crypto.createHash('sha256').update(global.masterKey + "JWTSig").digest('binary'); if (!jws.verify(token,key)) { // invalid token logic } else { var decode = jws.decode(token) req.user = { userId: decode.payload.uid.split(';')[0].split('::')[0] }; next(); } } app.use(authChecker);
- 上传,然后下载一个大的文件,与Windows Azure,blob存储和nodejs
- 如何在Visual Studio Online中将node.js应用程序部署到Azure?
- 定义Azure blobstream的大小限制,即截断文件
- 在单个Azure VM上运行两个Nodejs服务器
- 使用Azure进行存储的Web应用程序
- 如何使用Azure ADvalidationVueJS应用程序?
- Azure中WebSockets连接的限制是什么?
- 尝试通过节点createBlockBlobFromStream()将Blob上载到Azure存储时发生“RequestBodyTooLarge”
- 我可以从Azurefunction的单个运行中排列多个项目吗?