NextDeveloper IAM 包,由 NextDeveloper Generator 生成。


README

这个库提供了一个企业级的基本身份和访问管理功能。这个库的功能尽可能简单。这个库背后的想法是让开发者根据自己的需求来复杂化。

在当今注重安全的数字环境中,身份管理软件是一个关键工具。我们将随着时间的推移添加这些功能。身份管理软件的核心功能通常包括以下内容

  • 用户配置:此功能允许管理员及时创建、修改、禁用或删除 IT 系统中的用户帐户和权限。这还包括帐户(或团队)配置。
  • 身份验证:身份验证确保用户是他们声称的人。这可能包括多因素身份验证(MFA)、生物识别身份验证或密码管理。
    • 密码
    • 一次性电子邮件(OTP)
    • 一次性短信(OTP)
    • 谷歌
    • 脸书
    • 雅虎
    • OpenID
    • 微软
    • 苹果
    • GitHub
    • GitLab
    • 领英
    • 推特
    • Firebase
    • OneAll
    • OneLogin
    • Okta
    • Auth0
  • 授权:通过身份验证验证身份后,系统确定用户可以执行哪些操作、可以访问哪些文件、可以使用哪些资源等。
  • 单点登录(SSO):此功能允许用户登录一次,即可访问多种应用程序,无需记住多个密码。
  • 联合身份:这允许用户在不同的系统或甚至在不同的组织中使用相同的凭据。
  • 目录服务:这些服务存储、组织和提供关于用户和资源的信息。
    • LDAP
    • 活动目录
  • 基于角色的访问控制(RBAC):此功能使组织内部署的角色基于访问权限的分配成为可能。例如,营销部门的全体员工可以拥有类似的权利。
  • 身份治理:这包括定义和实施用户访问策略和规则的工具,以及审计和报告用户访问。
  • 身份生命周期管理:这包括从帐户的初始创建到各种更改,再到帐户最终退出的管理流程。
  • 密码管理:管理密码、强制执行密码策略等的工具。
  • 基于风险的认证(RBA):此功能使用机器学习来评估用户活动的风险水平,并相应地调整认证要求。
  • 与其他系统集成:身份管理系统需要与其他系统集成,如 HR 系统,以自动化员工加入、在公司内部调动或离开公司时添加、更改和删除用户的过程。
  • 2FA 实现
    • 短信一次性代码
    • 电子邮件一次性代码
    • WhatsApp 一次性代码
    • Telegram 一次性代码
    • 各种一次性代码的推送机制
    • 谷歌身份验证器
    • 短信
    • WhatsApp

这些功能为组织提供了一种有效管理数字身份的方法,有助于确保安全并符合数据隐私法规。

身份验证机制

在这个库中,我们试图支持几乎所有可用的身份验证机制以及安全的授权机制。为此,我们将应用之前提到的各种标准。

密码管理

为了密码管理,我们现在和将来会采用各种不同的做法来提高安全性;

  • 使用Argon2id进行密码散列,并使用scrypt作为后备。
  • 存储旧密码,以检查用户是否没有使用相同的密码。
  • 检查密码质量,即复杂性。
  • 如果可用,使用重新散列算法重新散列密码。

开发者注意事项;

  • 请仔细查看位于config文件夹下的配置文件。
  • 请设置散列算法,并请使用argon2id或scrypt作为后备。

给自己和可能也是你的注意事项?

令牌管理

我们使用JWT和Laravel Password实现来生成令牌。然而,我们也创建了不同的令牌,以便能够使用客户端信息和位置信息进行安全登录。这就是为什么我们实际上保存了带有位置、IP、客户端信息(用户代理)、JWT令牌的数据哈希,并将此数据哈希返回给用户。当用户发送不带“NDAuth”关键字而是“Bearer”的令牌时,我们理解他们正在使用我们对令牌管理的实现。在这种情况下,我们转到JWT令牌数据库并查看客户端信息。如果我们认为用户是正确的,那么我们返回JWT令牌。

透明的JWT令牌操作

当用户发送我们生成的令牌而不是JWT令牌时,我们需要告诉应用程序用户是有效的,并且是我们正在寻找的用户。有各种方法可以做到这一点,包括但不限于数据库搜索、Redis搜索或在负载均衡器或代理级别的操作。

我们目前实现应用程序级别的查找,但我们将提供负载均衡器级别的查找以减少CPU使用和开销。

  • 应用程序查找
  • 负载均衡器查找

商业支持

如果您需要任何商业支持,请告知我们。我们目前没有这样的商业计划,但我们将很乐意帮助您在项目上,或是在项目中应用这个库。

想要贡献吗?

当然欢迎您贡献。请发送电子邮件给我们,以便我们能够联系并讨论细节;codewithus@nextdeveloper.com