如何为 GraphQL API 设置授权与鉴权?

GraphQL 是一种强大的 API 查询语言和运行时,它能帮助开发者更好地管理复杂数据结构,提高开发效率和数据传输效率。然而,GraphQL API 接口的安全性是我们必须要考虑的,为了保证数据的安全性,我们需要在 GraphQL API 中添加授权与鉴权机制。本文将介绍如何在 GraphQL API 中设置授权与鉴权。

授权与鉴权的概念

授权与鉴权是网络服务安全性的重要组成部分,本文先介绍一下授权与鉴权的概念。

1. 授权

授权是指确定某个用户是否有权使用某个资源、执行某个操作的过程。授权通常是由服务提供者进行的,通常会授予用户一些访问资源的权限。例如,用户可以使用某个 API,但不能更改某个字段。

2. 鉴权

鉴权是指验证某个用户身份的过程。这通常是由资源属主管理的,比如说一个数据源来判断某个用户是否被允许访问该数据源。例如,某个 API 只能由某个用户或特定的 IP 地址访问,这就需要进行鉴权。

GraphQL API 的授权与鉴权

Graphql API 没有内置的授权和鉴权机制,但是可以通过代码实现。实现方式有多种,接下来我们将介绍解决方案并提供范例代码。

1. 实现安全保证

在 GraphQL API 服务中,要实现安全保证,需要掌握以下两个要点。

  • 将未经授权的用户从访问 GraphQL API 服务器中阻止。
  • 当已授权用户的访问请求被服务器接收时,必须仔细检查操作和数据,以确定它们是否符合用户被授予的限制。

2. Authorization 策略

我们需要设置某一种或多种授权策略来限制对于指定资源的访问权限。GraphQL API 常见的鉴权控制就是通过 HTTP 请求头来传递身份验证信息,这些头信息会被 GraphQL server 处理,服务器程序就可以实现对当前请求的身份认证。

----- - ------------- - - -----------------------
----- - --------- - - ------------------

----- --------- - -
  ------ -
    ---------- ----- -------- -
      ----- ------ - ------------------
      ------ --------------------- --- ------ --
    --
    ------------ ----- -------- -
      ------ ---------------------- ------ - ---------- ---- - --
    --
    -------------- ----- -------- -
      ----- ------ - ------------------
      ------ ---------------------- ------ - ---------- ------ ------- - --- ------ - - --
    --
    ------------ - -- -- -------- -
      ------ --------------------- -- --
    --
  --
  --------- -
    ------------------- - ------ ---- -- -------- -
      ----- ------ - ------------------
      ------ ---------------------------
        ------
        -----
        ------- - -------- - --- ------ - --
      --
    --
    --------------- - -- -- -------- -
      ----- ------ - ------------------
      ------ ---------------------------
        ------ - -- --
        ----- -
          ---------- -----
        --
      --
    --
  --
  ----- -
    -------------- ----- -------- -
      ------ --------------------- --- --------- -----------
    --
  --
  ----- -
    ------------- ----- -------- -
      ------ --------------------- --- --------- ---------- ------ - ---------- ---- - --
    --
  --
-

----- ------ - --- ---------------
  --------- -----------------------
  ----------
  -------- ------- -- -
    ------ -
      -----------
      -------
    -
  --
--
--------------- -- ------------------- -- ------- -- ------------------------

我们从请求上下文中获得 User id 函数,并返回数据。获取用户 id 的函数如下:

-------- ------------------ -
  ----- ------------- - ------------------------------------
  -- --------------- -
    ----- ----- - ----------------------------- -- ---
    ----- - ------ - - ------------- -----------
    ------ ------
  -

  ----- --- ---------- ---------------
-

这个函数检查 request 中的 Authorization 头部,如果该头部中有正确的验证 token 就返回用户 id。

结论

在这篇文章中,我们介绍了 GraphQL API 的授权与鉴权实现方法。其中安全保证的两个要点是授权策略的重点,而验证授权信息的传递通常是通过 HTTP 头部在 GraphQL Server 中进行。通过本文,你可以了解如何为 GraphQL API 设置授权与鉴权,以及如何通过实现 Authorization 策略和获取 User id 函数来保证 GraphQL API 安全。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67134646ad1e889fe20bc0f4