如何使用OpenID或OAuth进行内部第一方认证?

2024-02-29

我正在为一组 RESTful Web 应用程序的用户开发一个内部身份验证系统。我们的目的是,用户应该能够通过 Web 表单登录一次,并能够适当访问我们域中的所有这些 RESTful 应用程序,这些应用程序可能分布在跨许多服务器的私有云中。 (我已经了解,拥有单个经过身份验证的会话与纯粹的 RESTful 方法并不相符,但这是可用性要求。)

应用程序本身将用多种编程语言编写,因此需要一种与语言无关的方法。有人向我建议,我们可以使用 OpenID 或 OAuth 或类似的框架来处理身份验证,但我的理解是,这些框架适用于第三方服务,而不是用于在我们内部系统上共享数据的第一方服务。在这种情况下,我们可能有一个中央提供商服务,所有其他应用程序都被视为第三方(或依赖方)。

问题:

  1. OpenID/OAuth是否适合第一方服务之间的认证?
  2. 如果是这样,如何建议人们为此用例设置身份验证?
  3. 用户是否必须向他们想要使用的每个第一方服务器授予单独的权限,就像他们需要向任何第三方服务器授予单独的权限一样?我认为这违反了通过单点登录访问所有第一方服务的要求。
  4. 是否有支持此第一方用例的网站的好例子?
  5. 对于这个第一方用例来说,什么是一个好的替代框架?

SSO 服务不需要 OAuth。

正如您所知,OAuth 的主要用途/优点是授予第三方应用程序访问权限,以受控方式访问/使用您的资源。

与其拥有 OAuth 所需的身份验证/授权服务器,不如在所有 API 中使用单一登录服务。 OAuth 访问令牌与您需要的完全不同。

据我了解,您可以拥有类似于 OAuth 的东西,您的服务器可以将令牌出售给应用程序。 (我假设它是一个完全内部的系统,因此令牌不能被滥用)。

所以基本上我的建议是:

  1. 当应用程序尝试访问第一个 API 时,它会被重定向到 Web 表单。
  2. 用户输入凭据并被带到数据库进行验证。让有一个服务为用户/应用程序生成令牌
  3. 下一个 API 访问请求将使用该令牌发出 - 该令牌唯一标识该应用程序
  4. 根据您需要的安全级别,您可以使用 HMAC 签署一些文本并将其作为令牌发送,或者如果其完全内部,则只需为应用程序/用户生成唯一标识符并将其发送到其他 API
  5. 收到令牌后,每个服务首先使用令牌调用主服务器,并在内部获取相应的客户/用户 ID 并执行所需的功能。

简而言之,将登录+令牌生成+令牌验证分离到不同的模块中。所有 API 都应使用此模块进行登录/令牌验证。

我在这里建议的工作方式类似于 OAuth,但所有安全方面都已被剥离,因为您想在私有云中使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用OpenID或OAuth进行内部第一方认证? 的相关文章

  • 社交登录重复帐户冲突

    我正在制作一个新应用程序 除了常规电子邮件 密码注册之外 还需要多个社交注册 但是有一种特殊情况可能会导致数据完整性问题 例子 用户在 Facebook 上注册 但没有收到任何电子邮件回复 我在数据库中创建一个用户 将电子邮件和密码设置为
  • 不需要 UserProvider 的自定义身份验证

    我在网上寻找适合我的配置的解决方案 但找不到满足我需求的东西 到目前为止 我已经为此工作了整整三天 但我无法使其正常工作 我确信有几件事我不明白 我正在分支 2 1 上开发我的 symfony 应用程序 为了让这个简短 我有一个网络服务 我
  • 使用 OAuth2 对应用程序*和*网站进行身份验证

    我正在开发一个主要通过应用程序访问的网站 我想使用 OAuth2 进行用户注册和身份验证 由于它是一个 Android 应用程序 我将开始使用 Google 的 OAuth2 东西 因为它在 Android 上提供了一个不错的 UI 谷歌表
  • 如何在控制器中获取 User()->id (Laravel 8+)

    我正在尝试通过以下方式选择任务用户身份 但我无法将其放入控制器 我从中选择数据DB 我尝试过很多事情 其中 一些来自堆栈溢出 但它不起作用 I tried 1 userId Auth check Auth id true 2 Auth us
  • 为什么 $_SERVER["PHP_AUTH_USER"] 和 $_SERVER["PHP_AUTH_PW"] 没有设置?

    在开始之前 我想指出我浏览过 Stack Overflow 并发现了其他类似的问题 PHP AUTH USER 未设置 https stackoverflow com questions 3663520 php auth user not
  • Golang 网络爬虫 NTLM 身份验证

    Golang 网络抓取工具需要从经过 NTLM 验证的网页中提取信息 有了有效的用户名和密码 网络抓取工具如何与服务器进行 NTLM 4 次握手 以获得对后面受保护网页的访问权限 url username password http www
  • MVC Owin Identity 2 CheckPasswordAsync() 将不会执行

    我有两个问题似乎彼此相关 并且 stackoverflow 中的其他重复项都不能回答我的问题 First当 的时候PasswordSignInAsync方法执行它永远不会停止或抛出任何异常它只是继续执行 var result await S
  • Keycloak 社交登录 REST API

    我已经为我的 keycloak 实例启用了谷歌社交登录 但我需要将其用作休息服务 是否有可用于执行此操作的端点 Keycloak 中没有 Google 身份验证 API 但您可以使用以下方法解决它代币交换 https www keycloa
  • 基于资源的访问控制与基于角色的访问控制

    我正在学习 Apache Shiro 发现了这篇文章 新的 RBAC 基于资源的访问控制 http www stormpath com blog new rbac resource based access control 作者说 您可以将
  • 使用自己的 Web 应用程序 API - 使用 OAuth2 进行身份验证过程

    Overview 我目前正在为图像共享应用程序创建 API 该应用程序将在网络上运行 将来在移动设备上运行 我了解 API 构建的逻辑部分 但我仍然在努力满足我自己对身份验证部分的要求 因此 我的 API 必须可供全世界访问 具有访客访问权
  • 尝试使用 SQL 身份验证登录失败

    我正在尝试使用 sa 用户名及其密码连接到 SQL Server 2008 在 SQL Server 日志文件中我看到以下错误 用户 sa 登录失败 原因 尝试使用 SQL 登录 认证失败 服务器配置为 Windows 身份验证 仅有的 当
  • 如何使用 keycloak 强制每个客户端登录(最佳实践?)

    我们目前正在实施 keycloak 但我们面临着一个问题 我们不确定解决它的最佳方法是什么 我们有不同的网络应用程序使用单点登录 并且运行良好 我们遇到的问题是 当我们在一个 Web 应用程序中使用 sso 登录 然后在另一个 Web 应用
  • 将 gsutil 与谷歌驱动器(不是谷歌云存储)一起使用

    gsutil https cloud google com storage docs gsutil csw 1 gettingstarted use 博托配置文件 https cloud google com storage docs gs
  • 需要用户使用 NTLM 重新进行身份验证

    我是 NTLM web config 中的authenication windows 有一个 asp net mvc 2 0 站点 现在 一旦用户登录 他们就会一次保持登录状态数周 该应用程序的使用正在向共享使用登录服务帐户的计算机的用户开
  • nginx代理认证拦截

    我有几个服务 它们支持 nginx 实例 为了处理身份验证 在 nginx 中 我拦截每个请求并将其发送到身份验证服务 在那里 如果凭据正确 我将设置一个包含用户相关信息的 cookie 现在 请求应该被路由到适当的服务 并设置 cooki
  • 如何在 access_token 中添加角色声明,目前它是在 id_token 中?

    我正在使用 PKCE 跟踪身份验证代码流 我的身份提供程序是 Azure Active Directory 我从应用程序注册创建了一个应用程序 客户端应用程序 在清单中 我添加了如下所示的 appRoles appRoles allowed
  • Firebase Auth - 最近登录多长时间

    我有一个个人资料选项卡 用户可以在其中按编辑并编辑他们的个人资料 我只想在必要时才需要他们的密码 所以想知道用户登录的时间是多少毫秒 这使得它不是最近登录 其中firebase会抛出错误 auth requires recent login
  • 将密钥对添加到现有 EC2 实例

    我被给予AWS控制台访问正在运行 2 个实例的帐户 但我无法关闭 在生产中 但是 我想获得对这些实例的 SSH 访问权限 是否可以创建一个新的密钥对并将其应用到实例 以便我可以通过 SSH 访问 获取现有的pem当前无法选择创建实例所用的密
  • ServiceStack自定义用户身份验证

    有谁有一个关于如何按照本建议使用 int RefId 的实际示例question https stackoverflow com questions 11117469 how can i extend servicestack authen
  • django 中的身份验证方法返回 None

    你好 我在 django 中做了一个简单的注册和登录页面 当想要登录时 登录视图中的身份验证方法不返回任何内容 我的身份验证应用程序 模型 py from django db import models from django contri

随机推荐