【发布时间】:2020-01-27 08:18:09
【问题描述】:
我是 node.js 的新手,我被要求创建一个应用程序(网站),用户可以在其中使用具有提升权限的 AD 帐户登录。然后,应用程序的目标是使用这些提升的凭据启动不同的 PowerShell 脚本和其他工具。
在网上搜索后,我们似乎需要以下包:
- jwt 和/或jsonwebtoken:允许我们查看用户是否是他所说的人
- activedirectory: 可以和AD交流
- passport 或 passport-jwt
似乎是not a good idea 将username 和password 存储在jsonwebtoken 的payload 中。该令牌应该保持轻量级,并且只保存 AD 用户的唯一标识符(我猜这可能是他的 DistinguishedName)。
我的问题:用户的 AD 密码存储在哪里?如果它不能在jsonwebtoken 中,那么唯一剩下的地方可能是数据库?这是这样做的安全方式吗?如果数据库被入侵,它似乎也不安全。
如果数据库存储了 AD 密码,我们将需要在用户每次触发 PowerShell 脚本时请求一个 AD 凭据对象。将完整的 AD 凭据对象存储在数据库中,而不仅仅是 AD 密码,会更好吗?
我的事情可能过于复杂,但感谢您为我澄清这一点。
【问题讨论】:
-
您可以使用bcrypt将密码存储在数据库中,最终护照也支持。
-
当数据库被入侵时,密码可以被解密吗?应用可以在需要时解密密码吗?
标签: javascript node.js authentication active-directory