gko*_*ger 17 authentication meteor
我似乎无法找到有关如何使用Meteor的DDP验证用户的任何好信息.
这可能吗?如果是这样,最好的方法是什么?如何使用SRP远程登录Meteor?
我目前正在使用直接节点(最终将使用Express),以及此节点ddp客户端.
Aks*_*hat 35
要通过DDP登录,只需发送方法调用即可.根据您的登录方式稍微改变它.
我将使用ddp-tools尝试解释如何登录,因为它将与纯ddp进行通信.以下示例中的登录详细信息为
该用户名是USER_1,密码是QWERTY键盘(是的,我知道它的坏的),以及电子邮件地址是email@email.com,在登录令牌是MxNY9BFPKra2uNWG7
格式是
ddp call <method call name> [<param1>..]
Run Code Online (Sandbox Code Playgroud)
这与ddpclient.call(<method call name>,<param1>,callback)在nodejs中执行的操作相同
使用电子邮件和密码登录
ddp call 'login' '{"password":"qwerty","user":{"email":"email@email.com"}}'
Run Code Online (Sandbox Code Playgroud)
使用用户名和密码登录
ddp call 'login' '{"password":"qwerty","user":{"username":"user_1"}}'
Run Code Online (Sandbox Code Playgroud)
使用令牌登录(登录时meteor保存的内容:
ddp call 'login' '{"resume":"MxNY9BFPKra2uNWG7"}'
Run Code Online (Sandbox Code Playgroud)
-
如果您不希望以上述方式以纯文本形式发送密码,则表示您没有使用SSL安全/ https连接,您可以使用SRP.
要使用SRP登录它有点过分,因为它有几个阶段
1. Begin a passwordExchange to establish the key to communicate the hash
2. Send a login call with the hash calculated using the reply from 1)
Run Code Online (Sandbox Code Playgroud)
步骤1:
- 开始SRP密码交换:
ddp call 'beginPasswordExchange' '{"A":"A","user":{"email":"email@email.com"}}
Run Code Online (Sandbox Code Playgroud)
回应将是这样的
{"identity":"identity","salt":"salt","B":B"}
Run Code Online (Sandbox Code Playgroud)
然后你可以用它来登录:
ddp call 'login' '{"srp":{"M":"srp hash"}}'
Run Code Online (Sandbox Code Playgroud)
同样,您可以使用用户名而不是上面的电子邮件.
因此,要获得M和A的值,您需要一个SRP库.由于流星中有一个SRP库,因此很容易解释如何从每个中获取密码,这非常棘手.如果你想用另一种语言写一个,你可以使用维基百科的解释来构建方法
所以我们开始一个srp交换(来自流星SRP包中的SRP库),因为你使用的是node.js,你可以包含项目中的所有文件(package.js除外)
var srp = new SRP.Client(password);
Run Code Online (Sandbox Code Playgroud)
这将为您提供A,然后您将获得可以回复的数据:
var response = srp.respondToChallenge(result);
Run Code Online (Sandbox Code Playgroud)
这将最终为您提供SHA哈希回复使用'M',接收'B'和盐.
最后
登录时不要忘记检查最终响应,以查看结果是否与应有的结果相符
srp.verifyConfirmation({HAMK: result.HAMK}
Run Code Online (Sandbox Code Playgroud)
这些都来自Meteor的SRP库,但它们都是维基百科上的SRP规范的一部分.Meteor的SRP使用SHA256作为散列函数.
| 归档时间: |
|
| 查看次数: |
6122 次 |
| 最近记录: |