MongoDB Stitch JWT 自定义身份验证:需要有效的 UID(介于 1 到 128 个字符之间)
Posted
技术标签:
【中文标题】MongoDB Stitch JWT 自定义身份验证:需要有效的 UID(介于 1 到 128 个字符之间)【英文标题】:MongoDB Stitch JWT custom auth: valid UID required (between 1 and 128 characters) 【发布时间】:2020-09-26 03:37:02 【问题描述】:如何在 node.js 中为 mongodb Atlas Cloud Stitch 设置 需要的有效 UID(1 到 128 个字符之间)?我正在使用 jasonwebtoken 包来签署 Stitch 凭证的令牌:
Nodejs:
var token = jwt.sign(payload, Buffer.from(key), options);
credential = new CustomCredential(token);
stitchclient.auth.loginWithCredential(credential)
.then(authedUser => console.log(`logged in with custom auth as user $authedUser.id`))
.catch( err => console.error(`failed to log in with custom auth: $err`))
我可以发送,通过签名但 Stitch 返回:
使用自定义身份验证登录失败:StitchServiceError: invalid custom 身份验证令牌:需要有效的 UID(介于 1 到 128 个字符之间)
你的时间!
文档: https://docs.mongodb.com/stitch/authentication/custom-token/#usage
【问题讨论】:
【参考方案1】:已解决:
在有效载荷上预先设置:
"aud": "your api stitch id",
"sub": "your user custom api key"
var header =
alg: "HS256",
typ: "JWT"
var payload =
"aud": "your api stitch id",
"sub": "your user custom api key",
name : "name",
pass : "pass",
var options =
expiresIn : (60 * 60 * 24).toString(), // ONE DAY TO EXPIRATION
algorithm: 'HS256'
稍后:
var token = jwt.sign(payload, Buffer.from("your user custom api key"), options);
credential = new CustomCredential(token);
stitchclient.auth.loginWithCredential(credential)
.then(authedUser => console.log(`logged in with custom auth as user $authedUser.id`))
.catch( err => console.error(`failed to log in with custom auth: $err`))
【讨论】:
【参考方案2】:更具体地说,例如,如果您要从 Realm 函数生成令牌,您将从上下文中获取用户 ID:
exports = function(userMail)
const jwt = require('jsonwebtoken')
const KEY_JWT = 'MY_SECRET_KEY'
const token = jwt.sign(
email: userMail,
sub: context.user.id,
aud: "<application_id>"
,
KEY_JWT,
expiresIn: "1h"
)
return token
【讨论】:
以上是关于MongoDB Stitch JWT 自定义身份验证:需要有效的 UID(介于 1 到 128 个字符之间)的主要内容,如果未能解决你的问题,请参考以下文章
如何在同构或 s-s-r 应用程序中使用 MongoDB Stitch Auth?
使用区块链技术的身份管理应用,MongoDB Stitch & MongoDB Atlas
如何在同构或SSR应用程序中使用MongoDB Stitch Auth?
使用 MongoDB 获取存储的用户凭据的 JAVA Spring 自定义身份验证