gpt4 book ai didi

authentication - 如何使用 OpenID 或 OAuth 进行内部第一方身份验证?

转载 作者:行者123 更新时间:2023-12-03 13:31:50 24 4
gpt4 key购买 nike

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

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

问题:

  • OpenID/OAuth 是否适合第一方服务之间的身份验证?
  • 如果是这样,如何建议为此用例设置身份验证?
  • 用户是否不必向他们想要使用的每个第一方服务器授予单独的权限,就像他们需要向任何第三方服务器授予单独的权限一样?我认为这将违反单点登录以访问所有第一方服务的要求。
  • 有支持这种第一方用例的网站的好例子吗?
  • 对于这个第一方用例,什么是好的替代框架?
  • 最佳答案

    SSO 服务不需要 OAuth。

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

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

    据我了解,您可以拥有类似于 OAuth 的方式,即您的服务器将 token 出售给应用程序。 (我假设它是一个完全内部的系统,所以不能滥用 token )。

    所以基本上我的建议是:

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

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

    我在这里提出的建议与 OAuth 类似,但由于您想在私有(private)云中使用它,因此所有安全方面都已被剥离。

    关于authentication - 如何使用 OpenID 或 OAuth 进行内部第一方身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16486000/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com