为什么以及何时应该使用 Auth0 或 Azure AD B2C 等身份提供程序,而不是仅将用户凭据存储在数据库中?

art*_*tie 3 authentication rest identity oauth-2.0 azure-ad-b2c

我正在开发一个 ASP.NET Core API,并且我正在尝试尽我所能地完成身份验证和授权部分。我正在研究 OAuth 2 和 OpenIDConnect(目前还处于非常初步的研究)。但从 API 开发人员的角度来看,在流程中插入 Auth0 或 Azure AD B2C 等身份提供程序而不是仅使用某种形式的加密技术存储用户凭据,我可以获得什么好处?

另外,Oauth 2 似乎允许许多流量,API 的工作是否与使用该 API 的应用程序的流量有关?似乎有点不合理。我想要的只是有一种安全的方式来存储用户凭据,并允许我的 API 的用户在使用和操作 API 内其他服务中的资源之前执行身份验证和授权。

我知道身份验证和授权是应用程序中的一个敏感主题,因为它们涉及安全问题,并且我计划构建一个处理敏感财务操作的应用程序。这就是我追求 Auth0 和 Azure AD B2C 的原因。但说实话,我在尝试理解像这样的身份提供者会带来什么方面遇到了一些麻烦,我知道它们会带来一些重要的东西,我只是需要一些帮助来了解我应该使用它们的内容和原因。

juu*_*nas 5

在此过程中插入 Auth0 或 Azure AD B2C 等身份提供程序(而不是仅使用某种形式的加密技术存储用户凭据)可以获得什么好处?

好吧,您可以自由地不在数据库中存储凭据。这些服务提供商很可能比您更好地保护他们的安全。您获得的另一件事是单点登录。许多应用程序可以为用户使用相同的身份提供商,因此用户只需登录一次即可使用所有应用程序。

当然它不是零成本,OAuth/OIDC 涉及复杂性。但建立自己的用户商店也不是。

另外,Oauth 2 似乎允许许多流量,API 的工作是否与使用该 API 的应用程序的流量有关?似乎有点不合理。

不,API 通常不关心调用者使用什么流程。它关心的是它收到一个有效的访问令牌,其中包含访问特定资源所需的权限。选择要使用的流程是客户端应用程序关心的问题。

但说实话,我在尝试理解像这样的身份提供者会带来什么方面遇到了一些麻烦,我知道它们会带来一些重要的东西,我只是需要一些帮助来了解我应该使用它们的内容和原因。

嗯,这是我想到的事情:

  • 更好的安全性(很可能,这不仅仅是密码哈希算法等)
  • 更好的 SLA(构建像 Auth0 这样 99.95% SLA 的服务并不便宜)
  • 良好的记录
  • 单点登录
  • 所有应用程序的用户使用单一身份,也可以轻松禁用他们的帐户,以防止同时访问所有应用程序
  • 可以轻松添加对与其他身份提供商的联合身份验证的支持
  • 无需在您的应用程序中存储密码哈希等
  • 现成的管理工具(您需要另外构建)


nzp*_*mad 5

要添加到@juunas:

  • 人工智能可主动监控用户访问并禁用狡猾的登录,例如从美国和俄罗斯间隔一分钟登录
  • 报告和统计。
  • 密码保护,例如不允许出现泄露的密码
  • 用户 CRUD 的门户和 API
  • 艺术硕士
  • 自助密码重置
  • 无密码支持
  • Fido 2 支持