npm 包 lifeid-js-oidc-provider-core 使用教程

阅读时长 7 分钟读完

前言

在前端开发中,我们经常需要使用到身份认证和授权等功能。而 OpenID Connect (OIDC) 则是目前最流行的身份认证和授权协议之一。在 OIDC 中,用户通过第三方认证,获得 token 后,可以带着 token 访问资源服务器。

本文介绍的 npm 包 lifeid-js-oidc-provider-core 是一个基于 OpenID Connect 协议的身份认证和授权服务提供者。使用它可以帮助我们快速构建一个 OAuth2 认证服务器,并支持 OpenID Connect 协议。经过多次实践,lifeid-js-oidc-provider-core 的使用效果很好。

安装

使用

我们按照如下步骤来使用 lifeid-js-oidc-provider-core。

1. 创建配置文件

以 config.js 文件为例:

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

其中,clients 定义了客户端的信息,cookies 设置了用于加密和签名 cookies 的密钥,discovery 定义了用于自动配置客户端的信息,formats 定义了访问令牌和 ID 令牌的格式,jwks 定义了 JSON Web Key Set 主要用于进行 JWT 签名和解密。scopes 定义了支持的 scope。

2. 创建服务器

3. 发送认证请求

在浏览器中访问以下链接:

这里的参数包括:

  • response_type: 必传参数,取值可以是 code 或者 token。
  • client_id: 必传参数,客户端的 ID。
  • redirect_uri: 必传参数,回调地址。
  • scope: 必传参数,授权作用域。
  • state: 非必传参数,原样返回。

如果用户未登录,则服务器重定向到登录页面,如果已经登录,服务器将询问用户是否允许客户端访问请求的范围,如果用户确认则跳转回客户端。

4. 获取访问令牌

客户端收到重定向并验证 state 参数,然后根据 grant_type 执行 token 请求。

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

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

5. 验证访问令牌

客户端访问资源服务器时,需要发送 Authorization 请求头,该请求头的值为 Bearer + token。

资源服务器的访问令牌验证代码如下:

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

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

verifyAccessToken 方法将解密并验证 JWT,并将结果作为 Promise 返回。

结语

本文介绍了使用 lifeid-js-oidc-provider-core 创建 OAuth2 认证服务器,以及客户端如何获取和验证令牌。使用 lifeid-js-oidc-provider-core 可以轻松地实现身份验证和授权。读者可以参考 https://github.com/lifeid-oss/lifeid-js-oidc-provider-core 来了解更多该项目的信息。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005739881e8991b448e98a7

纠错
反馈