@almaobservatory/alma-oidc-客户端图书馆
这是版本 1.13.10 联合国 角13:已添加 publicURLs 可选配置选项,
更正了 README 文件 .
这是基于 ALMA 的 OAuth2/ OIDC 客户端库 角- oaut2- oidc。 。 。 . 此项执行是为了: 键盘 为 ALMA 配置的身份提供者 .
图书馆的代码在 OBOPS/npm/alma-oidc-客户-lib/项目/alma-oidc-客户。 。 。 .
一个 实例客户端应用程序 这个 图书馆可供使用.
发展
图书馆是使用描述的程序开发的 这里。 。 。 .
页:1 如果你不遵循这个过程 没错 你会陷入困境: 没有捷径!
如果您需要同时开发此库
作为客户端应用程序
应使用与《公约》第2条相同的方法
示例应用程序, (中文(简体) ),
见 pull-lib 目标
创建文件 在这里.
页:1 这可能需要一些杂耍 npm install 在你们面前
说对了.
构建
从顶级目录, OBOPS/npm/ alma-oidc-客户,发射 make clean build
- 它会运行 npm install 财务报告和审定财务报表 ng build。 。 。 .
向国家预防机制公布图书馆
图书馆的新版本可向国家预防机制出版 提供 ALMA 开发者.
页:1 您不能两次发布相同的版本 。 你需要更新
页:1 version 数字 软件包.json 在试图出版图书馆之前.
页:1 请记住更新文件的第一段!
命令 make publish 将重建图书馆并向国家预防机制登记册公布
未出版国家预防机制的图书馆
从命令行 :
npm unpublish @almaobservatory/alma-oidc-client@<version>
地点 <version> 有点像 0.1.1 。 。 。 .
您客户端应用程序中的用法
一般说明
- 确保您的应用程序不会干扰会话存储, 如
角- oaut2- oidc 保存重要信息。 具体来说,
确保你永远不要打电话
window.sessionStorage.clear()。 。 。 .
更新软件包.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 字段.
export const environment = {
...
securedUrls: [ ... ],
oauthOidcClientID: 'oidc',
...
};
外地 securedUrls 应
包括一系列 URL 片段( 字符串): 将用于识别
hTTP 请求应包含 授权 标题为 守护者
符号 .
碎片应匹配服务器侧配置的所有 URL
输入 .antMatchers() 内部通话
页:1 WebSecurityConfigurerAdapter,包括所有 authenticated() 财务报告和审定财务报表
.hasAnyAuthority() 案例.
例如,如下: antMatchers数字 :
.antMatchers( "/public/api/**" ).permitAll()
.antMatchers( "/admin/api/dr/**" ).hasAnyAuthority( "OBOPS/DRM", "OBOPS/ARCA" )
.antMatchers( "/service/api/**" ).authenticated()
一个应该设置 securedUrls 字段改为:
securedUrls: ['admin','service']
另见
AlmaOidcAuthInterceptorConfig。 。 。 .
页:1
案子是这样的 .antMatchers( "/**" ).authenticated() 无法是
地图,和你的 蚂蚁匹配器 应始终包含一个实际的 URL
碎片.
显然, .antMatchers( "/**" ).permitAll() 好吧,如果冒险.
应用模块.ts
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, (中文(简体) ),
见 这里。 。 。 .
页:1 从Angular 11开始 RouterModule 配置应该有 initialNavigation
设置为 'disabled' 改为 false。 。 。 .
应用全球
在此文件中,或类似位置类似 环境/环境.ts,定义我们资源服务器的 URL,
直至并包括上下文路径,排除任何超出此范围的东西.
比如说,
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+”表示 之后
初始化成功完成 .
例如:
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。 。 。 .
比如说,this.globals.account = { name: this.almaOidcService.fullname, authorities: this.almaOidcService.roles }; -
要登录应用程序和 OIDC 服务器, 请使用
AlmaOidcService.logout()