# @almaobservatory/alma-oidc-client 中文文档

规范地址：https://npmcn.com/package/%40almaobservatory/alma-oidc-client/

版本：1\.13\.11
npm 元数据更新时间：2026-02-26T13:58:48.219Z
中文译文更新时间：2026-11-06T22:23:16.927Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40almaobservatory/alma-oidc-client
原文对照：https://npmcn.com/package/%40almaobservatory/alma-oidc-client/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：265 kB，20 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2021-05-10T14:39:28.248Z
- 最新版本发布：2026-02-26T13:58:48.033Z
- 近 30 天下载量：2262（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：54（近 12 个月 1 个）

## 中文简介

这是版本 **1.13.10 联合国** 角13:已添加 `publicURLs` 选择配置选项, 更正 README 文件.

## 安装

```sh
npm install @almaobservatory/alma-oidc-client
```

也可以使用：`pnpm add @almaobservatory/alma-oidc-client`、`yarn add @almaobservatory/alma-oidc-client`、`bun add @almaobservatory/alma-oidc-client`

## README

# @almaobservatory/alma-oidc-客户端图书馆

这是版本 **1.13.10 联合国** 角13:已添加 `publicURLs` 可选配置选项, 更正了 README 文件 .

这是基于 ALMA 的 OAuth2/ OIDC 客户端库 [角- oaut2- oidc](https://github.com/manfredsteyer/angular-oauth2-oidc)。 。 。 . 此项执行是为了: [键盘](https://www.keycloak.org/) 为 ALMA 配置的身份提供者 .

图书馆的代码在 _OBOPS/npm/alma-oidc-客户-lib/项目/alma-oidc-客户_。 。 。 .

一个 [实例客户端应用程序](https://npmcn.com/alma-oauth2-oidc-client) 这个 图书馆可供使用.

## 发展

图书馆是使用描述的程序开发的 [这里](https://indepth.dev/posts/1193/create-your-standalone-angular-library-in-10-minutes)。 。 。 .

**页:1** 如果你不遵循这个过程 _没错_ 你会陷入困境: 没有捷径!

如果您需要同时开发此库 作为客户端应用程序 应使用与《公约》第2条相同的方法 [示例应用程序](https://npmcn.com/alma-oauth2-oidc-client), (中文(简体) ), 见 `pull-lib` 目标 [创建文件](https://npmcn.com/alma-oauth2-oidc-client/Makefile) 在这里.

**页:1** 这可能需要一些杂耍 `npm install` 在你们面前 说对了.

### 构建

从顶级目录, _OBOPS/npm/ alma-oidc-客户_,发射 `make clean build` - 它会运行 `npm install` 财务报告和审定财务报表 `ng build`。 。 。 .

### 向国家预防机制公布图书馆

图书馆的新版本可向国家预防机制出版 提供 ALMA 开发者.

**页:1** 您不能两次发布相同的版本 。 你需要更新 页:1 `version` 数字 _软件包.json_ 在试图出版图书馆之前.

**页:1** 请记住更新文件的第一段!

命令 `make publish` 将重建图书馆并向国家预防机制登记册公布

### 未出版国家预防机制的图书馆

从命令行 :

```shell
npm unpublish @almaobservatory/alma-oidc-client@&lt;version&gt;
```

地点 `<version>` 有点像 `0.1.1` 。 。 。 .

## 您客户端应用程序中的用法

### 一般说明

-   确保您的应用程序不会干扰会话存储, 如 _角- oaut2- oidc_ 保存重要信息。 具体来说, 确保你永远不要打电话 `window.sessionStorage.clear()`。 。 。 .

### 更新软件包.json

添加以下依赖关系到 _弧/主/角/包.json_数字 :

```json
    "@almaobservatory/alma-oidc-client": "^1.11.0",
    "angular-oauth2-oidc": "^8.0.0",
    "angular-oauth2-oidc-jwks": "^9.0.0",
```

### 环境.ts

编辑 _弧度/主/角/弧/环境/环境.ts_ 联 合 国 _音标_ 对应单位 添加 `securedUrls` 财务报告和审定财务报表 `oauthOidcClientID` 字段.

```json
export const environment = {
    ...
    securedUrls: [ ... ],
    oauthOidcClientID: 'oidc',
    ...
};
```

外地 `securedUrls` 应 包括一系列 URL 片段( 字符串): 将用于识别 hTTP 请求应包含 _授权_ 标题为 _守护者_ 符号 .

碎片应匹配服务器侧配置的所有 URL 输入 `.antMatchers()` 内部通话 页:1 `WebSecurityConfigurerAdapter`,包括所有 `authenticated()` 财务报告和审定财务报表 `.hasAnyAuthority()` 案例.

例如,如下: `antMatchers`数字 :

```java
    .antMatchers( "/public/api/**"   ).permitAll()
    .antMatchers( "/admin/api/dr/**" ).hasAnyAuthority( "OBOPS/DRM", "OBOPS/ARCA" )
    .antMatchers( "/service/api/**"  ).authenticated()
```

一个应该设置 `securedUrls` 字段改为:

```json
    securedUrls: ['admin','service']
```

另见 [`AlmaOidcAuthInterceptorConfig`](https://npmcn.com/package/%40almaobservatory/alma-oidc-client/src/lib/alma-oicd.interceptor.config.ts)。 。 。 .

**页:1**  
案子是这样的 `.antMatchers( "/**" ).authenticated()` 无法是 地图,和你的 _蚂蚁匹配器_ 应始终包含一个实际的 URL 碎片.  
显然, `.antMatchers( "/**" ).permitAll()` 好吧,如果冒险.

### 应用模块.ts

```typescript
import { OAuthModule } from 'angular-oauth2-oidc';
import { environment } from '../environments/environment';
import { AlmaOidcModule } from "@almaobservatory/alma-oidc-client";

...

imports: [
    ...
    OAuthModule.forRoot(),
    AlmaOidcModule.forRoot( { securedURLs: environment.securedUrls } ),
]

```

### 应用-路由.module.ts

`RouterModule.forRoot()`: 如果设置属性 `useHash` 改为 `true` 确保您也设置 `initialNavigation` 改为 `false`, (中文(简体) ), 见 [这里](https://manfredsteyer.github.io/angular-oauth2-oidc/docs/additional-documentation/routing-with-the-hashstrategy.html)。 。 。 .

**页:1** 从Angular 11开始 `RouterModule` 配置应该有 `initialNavigation` 设置为 `'disabled'` 改为 `false`。 。 。 .

### 应用全球

在此文件中,或类似位置类似 _环境/环境.ts_,定义我们资源服务器的 URL, 直至并包括上下文路径,排除任何超出此范围的东西.  
比如说,

```properties
this.resourceServerURL = this.developmentMode ? 'http://localhost:10000/snoopi' : '/snoopi';
```

### 应用程序组件.ts

方法 `AlmaOidcService.authenticateAndInit()` 执行 认证序列.  
参数:

-   **客户端ID**: OIDC 客户端的ID, 例如“ oidc ”
    
-   **资源服务URL**: 我们资源服务器的 URL, 最多并包括 上下文路径,不包括任何超出 那个.  
    例如,http://localhost:1000/clai 互联网档案馆的存檔,存档日期2013-12-02
    

该方法返回可用于运行初始化代码的许诺 并导航到用户的预定标签——导航在 应用模块 `initialNavigation: false` (或 `'disabled'`, (中文(简体) ), (a) 以“Angular 11+”表示 _之后_ 初始化成功完成 .  
例如:

```typescript
import { AlmaOidcService } from '@almaobservatory/alma-oidc-client';
import { environment } from "../environments/environment";
import { Globals } from './app.globals';
import { Router } from '@angular/router';

...

constructor( ...,
             private router: Router,
             private almaOidcService: AlmaOidcService, 
             private globals: Globals ) { ... }

...

ngOnInit(): void {

    ...
    
    // At the end of the authentication/initialization phase we need to navigate to
    // the user's intended tab: we extract that from the URL they used to get here
    // If none is found we provide a default tab
    const navigateTo = window.location.hash.length === 0 ? '/default-tab' : window.location.hash.substr( 1 );
    this.almaOidcService
        .authenticateAndInit( environment.oauthOidcClientID, this.globals.resourceServerURL )
        .then( () => this.router.navigate( [navigateTo] ))
        .then( () => this.appService.startup() );
```

### 其他变动

-   删除所有呼叫 `/login-check`, (中文(简体) ), `/do-logout` 财务报告和审定财务报表 `/account` 终点, 和任何相关的代码
    
-   在成功认证后,一些用户信息,包括用户名, 完全名称和电子邮件地址,可从 OIDC 信使中获取;有 无需为此查询资源服务器 .  
    单位 `AlmaOidcService` 见 `userIdentity` 获取器和 快捷键 `username`, (中文(简体) ), `fullname`, (中文(简体) ), `email` 财务报告和审定财务报表 `roles`。 。 。 .  
    比如说,
    
    ```typescript
      this.globals.account = {
        name: this.almaOidcService.fullname,
        authorities: this.almaOidcService.roles
      };
    ```
    
-   要登录应用程序和 OIDC 服务器, 请使用 `AlmaOidcService.logout()`

## 常见问题

### @almaobservatory/alma-oidc-client 是什么？

这是版本 1\.13\.10 联合国 角13:已添加 publicURLs 选择配置选项, 更正 README 文件\.

### 如何安装 @almaobservatory/alma-oidc-client？

在项目目录运行 npm install @almaobservatory/alma-oidc-client，或使用 pnpm add / yarn add / bun add。

### @almaobservatory/alma-oidc-client 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @almaobservatory/alma-oidc-client 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @almaobservatory/alma-oidc-client 可以商用吗？

@almaobservatory/alma-oidc-client 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @almaobservatory/alma-oidc-client 的下载量有多少？

根据 npm 官方下载统计，@almaobservatory/alma-oidc-client 在 2026/10/06 – 2026/11/04 这 30 天内被下载 2,262 次，日均约 75 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @almaobservatory/alma-oidc-client 还在维护吗？

最新版本 1\.13\.11 发布于 2026/02/26（8 个月前）；至今共发布 54 个版本，其中过去 12 个月发布了 1 个；首次发布于 2021/05/10。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

