npm 包 angular-auth-oidc-client-temp 使用教程

阅读时长 6 分钟读完

前言

前端作为现代应用开发的一环,随着技术和需求的不断变化,在实际开发中遇到的问题也越来越复杂。其中,认证和授权是前端应用中必不可少的一环,为了解决这些问题,一些开源的前端鉴权库也应运而生。而 angular-auth-oidc-client-temp 就是其中一个比较成熟的 npm 包。

环境搭建

要使用 angular-auth-oidc-client-temp 首先需要在本地开发环境中安装 Angular CLI,并且新建一个 Angular 项目,进入项目根目录后,我们可以使用以下命令来安装 angular-auth-oidc-client-temp npm 包:

安装成功后,我们需要在 app.module.ts 中引入依赖:

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

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

以上,我们完成了必要的依赖导入工作,并准备好可以用来配置鉴权服务的信息。根据你的应用需要修改 oidc_config 中的配置信息。

鉴权流程

接下来让我们来了解一下 angular-auth-oidc-client-temp 的鉴权流程,以便更好的了解如何应用它。

angular-auth-oidc-client 的鉴权流程大致分为以下几步:

  1. 初始化服务配置

angular-auth-oidc-client 服务初始化时,会构造一个 OidcSecurityService 服务和一个 AuthWellKnownEndpoints 必要证书。

  1. 用户鉴权

在业务代码执行过程中出现需要调用拥有访问权限接口的场景时,AuthInterceptor 拦截器会拦截该请求,检查是否存在有效的 Token。如果不存在,就会调用 OidcSecurityService 服务的 Authorize() 方法来进行用户鉴权。

  1. Token 获取

OidcSecurityService 服务会调用 AuthWellKnownEndpoints 模块来获取 OIDC 服务器的必要配置信息,并使用这些信息构造一个 OpenID Connect 认证请求,然后发送 OpenID Connect 请求,向 OIDC 服务器索取 ID Token 和 Access Token。成功获取到 Token 后,Token 会被存储在 Cookies 中,并且以事件的形式发出。

  1. Token 刷新

当 Token 即将过期时,AuthSilentRenew 模块会自动刷新 Token,保证用户在一定时间内不需要重新登录。

使用示例

以上,我们完成了环境搭建和鉴权流程的了解,接下来,我们来看看离线缓存策略的示例。

假设我们在 app.component.ts 中定义了一个 HttpClient 的请求方法:

考虑到有很多场景是 app.component.ts 会优先于 auth.component.ts 初始化,如果此时 Token 还未完成初始化,控制台会输出错误警告,我们可以通过 OidcSecurityService 的事件绑定来避免该错误,具体做法如下:

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

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

以上,我们在 app.component.ts 中完成了用户鉴权检查,控制台 Errors 不再提示,请根据具体业务需求功能扩展自己的拦截逻辑。

总结

本文已经向您展示了如何在 Angular 项目中使用 angular-auth-oidc-client-temp 完成鉴权功能,并简要介绍了它的鉴权流程。祝愿您使用本文提供的示例顺利完成您的业务开发。

参考资料:

  1. https://github.com/damienbod/angular-auth-oidc-client
  2. https://github.com/IdentityServer/IdentityServer4

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

纠错
反馈