在here之后,给出以下字段最少的任何JWT Token
与MongoDB Stitch Authentication一起使用。另外,令牌必须由External Authentication System
{
"aud": "<stitch app id>"
"sub": "<unique user id>",
"exp": <NumericDate>,
}
我已经对此进行了测试,并且效果很好
Custom Authentication Provider
以这种方式起作用
value
:sub
中提供的唯一"sub": "<unique user id>"
来验证MongoDB Stich Users Collection中的用户,如果该用户存在,则返回该用户的对象ID。 查询是
MongoDB Stitch Custom Authentication
涉及External Authentication System
发出JWT
,那么在用户注册时用户数据将实际存储在哪里? -MongoDB Stitch App Collection
或External Authentication API System
?答案 0 :(得分:3)
为什么Stitch会创建一个新的“用户”
在这种情况下,Stitch创建的“用户”是内部用户。此“用户”还包含JWT提供的用户数据和元数据,并且不会与其他集合一起存储在与应用程序链接的Atlas集群中。请注意,如果不使用触发器或其他函数将其“加载”到数据库中,则MongoDB无法访问此“用户”。
为什么没有返回登录失败
未返回登录失败,因为定制身份验证提供程序仅对照来自外部系统的签名JWT对其自身的签名密钥副本进行检查。如果签名匹配,则认为登录成功。
外部身份验证提供者有责任使登录失败;不是针迹。
用户数据的实际存储位置
用户数据应在数据库中进行管理。将其与自定义身份验证提供程序集成的最有效方法是在创建和/或登录操作类型上使用Authentication Trigger。这样,您可以在触发身份验证事件的任何时间运行Stitch Function。
有一个在MongoDB blog上使用身份验证触发器的示例,这可能有助于进一步解释该过程。