【问题标题】:Oauth Flow to protect APIs用于保护 API 的 Oauth Flow
【发布时间】:2021-07-23 19:02:06
【问题描述】:

我正在为多租户应用程序设计一个 REST API。我想保护 API。多租户应用可以由一个租户订阅,而租户又可以有多个用户使用该应用。

我计划同样使用 OAuth。其中一种可能性是使用 OAuth 的客户端凭据流 - 向订阅该服务的每个租户提供客户端 ID 和密码。

这种方法的问题是,我无法区分租户的不同用户,因为每个人都使用相同的客户端 ID 和密码来获取访问令牌。

另一个选项是使用 OAuth 的授权令牌流。但在这种情况下,我不确定应该如何交互,因为它是 API(非 UI)。

进一步,如何使用 SAML 解决这种用例?

【问题讨论】:

    标签: oauth authorization saml saml-2.0 clientcredential


    【解决方案1】:

    不能。 SAML 规范。无法将 SAML 令牌传递给 API。

    如果您需要用户上下文,则需要使用授权授予流程。通过身份验证后,您需要为该 API(范围等)量身定制的 JWT,然后将该 JWT 发送到 API。

    【讨论】:

    • 恕我直言 API 不应使用任何流。它只是执行请求的操作或返回错误 - 例如401 Unauthorized if token is missing/expired, .... 请求者(通常是前端)负责处理错误,例如初始化登录流程。授权授予流程适用于 webapp,但在这种情况下不适用于 API。
    • @JanGaraj 我正在使用 API 优先方法。最终用户可能直接使用 API。
    • @Kumar API 端没有流程。 API 规范提供了如何获取令牌的详细信息(什么是 IDP URL、所需的范围......) - swagger.io/docs/specification/authentication/oauth2 并且用户有责任执行所需的流程 - 例如。它可以使用带有某些 UI(例如 Swagger UI)的 API 客户端,并且该客户端将执行登录流程
    猜你喜欢
    • 2020-07-22
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2021-10-14
    • 2015-02-07
    • 2020-07-24
    相关资源
    最近更新 更多