您是否曾经使用 Google、Facebook、LinkedIn 甚至 Github 登录过网站? 直接从您的云(例如您的 Google 云端硬盘帐户)将文件上传到网站怎么样?
好吧,这两个都是网站或应用程序访问您存储在其他网站或服务上的信息的示例。 但是,如何在不损害个人数据安全以及将凭据提供给第三方应用程序的情况下实现这一目标呢?
以 Facebook 为例; Facebook 可以使用您的 Google 帐户中存储的联系人在该平台上查找您的朋友。 为了让 Facebook 访问您的联系人并查找您的朋友,您需要授予其访问您的 Google 帐户的权限。
几年前,这是以一种非常粗糙的方式完成的,您将您的 Google 电子邮件地址和 Gmail 密码提供给 Facebook,Facebook 将使用这些密码以您自己的身份登录您的 Google 帐户并访问您的联系人。 许多应用程序(不仅仅是 Facebook)都以这种方式对存储在其他网站中的用户数据进行授权。
由于如此多的第三方应用程序以这种方式实现授权,用户面临着不利的局面,因为他们必须牺牲自己的安全性才能访问服务。 恶意开发人员很容易滥用用户的凭据,从而损害用户的利益。 这就是 OAuth 开发的必要性。
根据互联网工程任务组 (IETF) 的说法,OAuth 是一个授权框架,允许第三方应用程序代表资源所有者获取对服务的访问权限。 OAuth 允许用户授予对第三方应用程序的有限访问权限。
这允许应用程序访问其在线资源,例如存储在另一个应用程序中的个人资料或个人数据,而不必向尝试访问资源的第三方应用程序公开其登录凭据。
这通常称为委派访问,即用户向第三方应用程序授予对其托管在另一服务上的资源的有限访问权限,而无需共享其用户的凭据。
OAuth 2.0 是 OAuth 协议中使用最广泛的版本,它是 Web 授权和身份验证的关键组件。
OAuth 广泛应用于移动应用程序身份验证、保护 API、允许对多个应用程序进行单点登录以及第三方的委托访问,并且还允许用户管理和控制授予第三方应用程序的权限。
目录
使用开源 OAuth 平台的好处。
开源 OAuth 平台是指 OAuth 标准的开源实现。 考虑到应用程序是使用各种编程语言和框架开发的,OAuth 平台提供了库和工具,使开发人员可以轻松地将 OAuth 功能集成到其应用程序中。 使用开源 OAuth 平台的一些好处包括:
代码质量和透明度
开源平台允许用户访问他们的代码。 这是有益的,因为许多具有广泛技能和经验的开发人员都会浏览代码,并可以提出他们可能注意到的代码问题。
这有助于确保代码具有最高质量,没有漏洞或错误。 公司还可以在承诺使用该产品之前仔细检查代码,以确定它能在多大程度上满足他们的需求。
成本效益
开源软件解决方案可以免费使用,因此可以成为公司节省因使用专有 OAth 平台而产生的成本的一种方式。 这样做的好处是,即使是没有大量预算的公司也能确保其用户的安全不受影响。
避免供应商锁定
使用开源 OAuth 提供程序时,您可以轻松地在不同的 OAuth 提供程序之间切换,而无需重新设计整个应用程序架构以匹配新的供应商。
开源 OAuth 解决方案遵循广泛接受的标准,确保与其他系统的兼容性和互操作性。 这使得在不同的开源解决方案之间切换变得容易。
社区支持
开源解决方案通常得到大型开发人员社区的支持,致力于改进它们并提供软件更新。 这不仅确保了软件可以与开发人员使用的许多工具配合使用,而且可以更快地解决软件问题,因为肯定会有熟悉该软件的人随时准备提供帮助。
评估开源 OAuth 平台的关键标准
评估开源 OAuth 平台时需要考虑的一些关键因素包括:
安全和加密措施
您使用的开源 OAuth 解决方案必须具备可靠的无懈可击的安全性和加密措施,这一点非常重要。
这是因为平台处理敏感的用户数据和访问资源。 该平台应支持安全通信,并提供保护访问令牌的机制。
易于集成和开发人员友好的 API
由于 OAuth 平台集成到应用程序中,因此 OAuth 解决方案应提供清晰直观的 API、文档和软件开发工具包 (SDK) 以简化集成过程,这一点至关重要。
该平台的端点还应该通过流行编程语言和框架的代码示例和库进行详细记录。
社区支持和积极发展
开源资源的强大活跃用户和贡献者社区表明资源周围有一个健康的环境。 在这种情况下,这意味着 OAuth 正在不断改进和使用。
此外,活跃的社区可以提供有用的资源和支持,帮助您理解和使用开源 OAuth 解决方案。
可扩展性和性能
随着越来越多的人接触应用程序,应用程序的用户群通常会不断增长。 因此,您使用的任何 OAuth 解决方案都应该支持随着用户群的增加而扩展,并且还应该能够处理大量并发请求,这一点很重要。
定制和可扩展性选项
OAuth 解决方案应该是高度可定制的,以便适应广泛用户的不同业务需求和逻辑。 简而言之,企业不必围绕 OAuth 平台构建逻辑。
相反,OAuth 解决方案应该具有足够的可定制性和可扩展性,以便在不更改业务逻辑的情况下实现它。 这可以通过允许添加自定义身份验证流程、声明和用户属性来实现。
考虑到上述考虑因素,以下是一些可在您的下一个项目中使用的最佳开源 OAuth 解决方案
超级代币
SuperTokens 是一个开源登录提供商,在 HackeRank、Skoot 和 Food Market Hub 等初创公司中广泛使用,并被 Google、Amazon 和 Meta 等公司的工程师使用。
SuperTokens 提供高度可定制、可扩展和可重写的组件,允许用户轻松地将用户身份验证集成到他们的应用程序中。
SuperTokens 不仅可以轻松快速地集成,而且还为注册页面和开箱即用的用户身份验证功能提供预构建的用户界面。 用户还可以使用 SuperToken 附带的帮助程序功能快速构建自己的登录。
使用 SuperTokens,您可以实现电子邮件密码登录、使用 OAuth 的社交登录以及应用程序的无密码登录。 您还可以在应用程序的同一登录屏幕中使用社交登录和电子邮件密码登录。
塞尔波斯
Cerbos 是一个开源、与语言无关、可扩展的授权平台,被 Business Wire 评为 2022 年 API 安全最佳平台。
Cerbos 是一个用于实现角色和权限的授权层,可与各种身份提供商合作,包括 Auth0、Magic、WorkOS、Okta 和 FusionAuth 等。
Cerbos 允许您集中管理所有应用程序的授权逻辑,并立即更改应用程序处理授权和身份验证的方式。
此外,Cerbos 还提供上下文感知的角色定义和属性,并公开了可与任何技术堆栈一起使用的与语言无关的 API。
最重要的是,Cerbos 是无状态和自托管的,可以托管在无服务器平台、任何公共或私有云、甚至私有数据中心上。
护照
Passport 是 Node.js 框架中非常流行的身份验证中间件,它对使用 Node.js 后端构建的应用程序中的传入请求进行身份验证。
身份验证是使用称为策略的插件完成的。 Passport 为开发人员提供了挂钩,用于控制身份验证失败或成功时要采取的操作。
Passport 提供 500 多种身份验证策略,并允许使用 OpenID 和 OAuth 进行单点登录。 它还支持持久会话、动态范围和权限、自定义策略的实现以及身份验证过程中成功和失败的轻松处理。
此外,Passport.js 不会在 Node.js 应用程序中挂载路由,也不采用任何特定的数据库模式,因此允许开发人员做出所有应用程序级别的决策。
Auth.js
Auth.js 是一种开源身份验证解决方案,可与各种前端框架配合使用,包括 Next.js、SvelteKit 和 SolidStart 等。
Auth.js 旨在与各种 OAuth 版本配合使用。 它支持任何后端的无状态身份验证、电子邮件/无密码身份验证、JSON Web 令牌以及数据库会话。
尽管 Auth.js 是为无服务器架构设计的,但它可以在任何地方运行,包括 AWS Lambda、Docker 和 Heroku 等。
Auth.js 还保证用户对其数据的控制,并且可以在没有数据库的情况下工作,尽管它内置了对 MySQL、Postgres、MongoDB、SQLite、MariaDB 和 Microsoft SQL Server 等流行数据库的支持。
Auth.js 在 POST 路由上使用跨站点请求伪造 (CSRF) 令牌,加密 JSON Web 令牌,并自动生成对称签名和加密密钥以方便开发人员。
钥匙斗篷
Keycloak 是一种非常流行的开源身份和访问管理解决方案。 Keycloak是基于标准协议的解决方案,支持OAuth 2.0、安全断言标记语言(SAML)和OpenID Connect。
作为一个开源解决方案,Keycloak 非常易于集成,并具有单点登录等功能,允许用户通过一次登录 Keycloak 来登录多个应用程序。
这也有利于开发人员,因为他们不必负责处理用户身份验证和存储以及在应用程序中制作登录表单。
KeyCloak 的一个亮点是它易于与应用程序集成。 KeyCloak 允许您轻松添加使用社交网络登录应用程序的功能,而无需更改您的应用程序或代码。
所有这一切都是通过管理控制台完成的,您还可以在其中配置其他 Keycloak 功能,例如用户联合和身份代理。 通过管理控制台,您还可以创建和管理应用程序和服务,并微调授权策略。
阿佩雷奥 CAS
Apereo CAS 是一个开源单点登录解决方案和身份提供商。 CAS 支持多种身份验证协议,包括 OAuth 2.0、SAML、OpenID、REST 和 WS-Federation 等。
CAS 内置了对密码管理、通知、使用条款和模拟的支持。
CAS 还支持可插入身份验证、对 Facebook、Twitter 和 OpenID Connect 等外部身份提供商的委托身份验证,以及通过 Google Authenticator、Authy、YubiKey、Acceptto 和 Inwebo 等提供商进行的多因素身份验证。
要使用 CAS,最好将其与其官方支持的客户端平台一起使用,包括 Java、.NET、Apache 和 PHP。
奥里·奎托斯
Ory Kratos 是一个强大且功能丰富的用户管理系统,专为云服务而设计。 尽管 Ory Kratos 是用 Go 编写的,但它配备了适用于每种编程语言的 SDK,以及可定制的登录、注册和配置文件管理。
此外,Ory Kratos 可以与任何 UI 框架配合使用,并且需要最少的代码来设置它。
Ory Kratos 附带的一些值得注意的功能包括与各种提供商的多因素身份验证、自助登录和注册、社交网络登录、帐户验证和恢复以及用户管理。
用户管理允许创建、更新和删除用户库中的身份及其数据。 最后,Ory Kratos 允许使用可自定义的身份模型,您可以在其中创建自己的界面并定义自定义字段,例如名称、地址或最喜欢的宠物。
洛格托
根据其文档,Logto 是 Auth0 的一种经济高效的开源替代品,Auth0 是一种专有的身份验证和授权解决方案。 Logto 以更实惠的价格提供安全身份验证和授权所需的所有功能。
Logto 附带了一个随时可用的管理 API,可以用作身份验证提供程序。 它还具有 SDK,可让您轻松快速地将 Logto 与您正在构建的任何应用程序集成。
OpenID Connect(OIDC)是OAuth 2.0授权协议的扩展,用于身份验证,而基于角色的访问控制(RBAC)用于授权。
借助 LogTo,您的应用程序可以实现无密码登录社交登录,并能够处理忘记登录凭据的用户。 为了使开发变得更加容易和更快,LogTo 提供了带有可定制 CSS 的漂亮的预构建 UI 组件。
用户还可以访问他们的云平台,在那里他们可以自定义、集成和预览他们在应用程序中实施的身份验证。
结论
在您的应用程序中实施身份验证和授权时,有多种开源解决方案可以为您和您的企业节省大量资金。 请考虑本文中分享的任何解决方案来保护您的业务和关键用户数据。
您还可以探索一些最佳的用户身份验证平台。