gpt4 book ai didi

rest - 具有预配置授权的 OAuth 安全性

转载 作者:行者123 更新时间:2023-12-04 08:55:06 24 4
gpt4 key购买 nike

我有一个场景,其中用户已登录到 Web 应用程序(使用 OpenID Connect 进行身份验证),然后需要从单独的 REST 服务访问数据。

REST 服务需要确定用户是否有权访问所请求的数据,但如果用户确实有权限,则应向 Web 应用程序授予权限,而无需用户与 UI 交互。

从本质上讲,我需要的是一个双腿 OAuth 解决方案,其中客户端/依赖方是完全可信的,但已经通过身份验证的用户不是。

进去后,我假设 OAuth 可以满足这些要求,但似乎没有一种授权类型符合要求:

  • 授权码与我需要的相反,因为用户几乎是自动信任的,但客户端不是,要求用户通过 Web 表单授予对客户端的访问权限。
  • 客户凭证 信任客户端(这是我需要的),但没有给服务机会来确定用户是否对资源具有权限(用户身份验证 token 不会传递给服务,使所有请求基本上都是“匿名的”)。
  • ROPC (Resource Owner Password Credentials) 似乎是唯一的选择,但需要 Web 应用程序知道并可能存储用户的登录凭据(这是站不住脚的)。

  • 这是 OAuth 的差距吗?还是我误解了这些赠款类型?如果 OAuth 不能支持这种情况,是否还有另一个我错过的广泛采用的开放标准?

    值得注意的是:我只拥有/控制 Web 应用程序,而客户(所有这些都是企业)拥有/控制身份验证服务器和 REST 服务。因此,一个共享的、非专有的标准是必要的,这样我们的客户就会知道如何配置他们的服务(IBM、微软等),并且我将知道如何传递任何身份验证 token 等。

    最佳答案

    我认为使用普通的 OAuth2 流是可能的。您的 Web 应用程序使用 code authorization grant获取 token 以代表用户调用 API。

    您的 Web 应用程序调用 API,并在 Authorization header 中附加 JWT token 。如果 REST 服务确定用户没有访问资源的权限,它会返回 401 Unauthorized HTTP 响应代码。

    您的 Web 应用程序通过返回到授权服务器并使用 client credentials grant 来处理 401 响应。获取访问 token 以代表客户端本身调用 REST API。

    由于这两项授权都允许您获得刷新 token ,因此您应该能够轻松地在访问 token 之间切换。

    关于rest - 具有预配置授权的 OAuth 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31620810/

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