npm 包 oauth2orize-password-realm 使用教程

阅读时长 13 分钟读完

在认证授权过程中,OAuth2 是一个非常流行的授权协议。OAuth2 通常会要求资源拥有者进行授权,由该资源的客户端和服务器进行交流,获得授权 Token 后才可以访问相关的资源。oauth2orize-password-realm 是一个针对 Node.js 的可以使用密码和领域识别用户客户端的实现。本文将详细介绍 npm 包 oauth2orize-password-realm 的使用方法。

教程目录

  • 安装
  • 如何使用
  • 客户端身份验证
  • Oracle 密码加密解密
  • 示例代码
  • 结论

安装

在安装之前需要确保已经安装了 Node.js 和 npm。可以通过以下命令安装:

安装成功后,便可以使用 require 引入了。

如何使用

oauth2orize-password-realm 的使用与其他 oauth2orize 是类似的。如下是其中一些最重要的模块:

需要自己创建相应的 OAuth 2.0 serverpassport.jsclientSerializeruserSerializer

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

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

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

这里实例化 PasswordGrantToken,传入了一个回调函数,该回调函数在客户端请求创建 tokens 时调用。

对于调用 authorize 端点的客户端应用程序,以下授权代码应该被包含在其中:

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

路由需要限制范围,以下是一个示例:

客户端身份验证

客户端身份验证是资源拥有者授权过程的必须过程。与其他 oauth2orize 一样,oauth2orize-password-realm 支持 clientCredentials 身份验证和 basicAuth 身份验证。

clientCredentials 身份验证可以通过以下代码在客户端请求 tokens 端点时实现。

basicAuth 身份验证可以通过以下代码在客户端请求 tokens 端点时实现。

Oracle 密码加密解密

oauth2orize-password-realm 还提供了加密解密方法,内置了 Oracle 加密算法。算法的加密解密方法如下。

OracleEncryption 构造函数可以传输一个选项对象,它支持下面几个属性:

  • encryptionKey: encryption key 对象,长度必须是 24 位,可以用 hexbase64binary 方式传输协议。
  • entityMapping: 特殊格式映射。本地解码适用于多个客户端的组合身份验证。
  • cipherAlgorithm: 加密算法。默认使用 EDE3

示例代码

以下是 oauth2orize-password-realm 的示例代码。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

结论

oauth2orize-password-realm 提供了一个通过密码和领域识别用户客户端的解决方法。在使用时需要结合 oauth2orize 和 passport.js,本文提出了一个较为完整的实现方案。此外,它也提供了 Oracle 加密算法的实现,这是一个强加密算法,可以有效地保护登录用户密码。

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

纠错
反馈