ohpm-repo从2.3.0版本开始支持自定义认证插件(需配套使用1.8.0及以上版本ohpm命令行工具),允许您使用AccessToken认证,开发定制化的认证插件来对接开发者自己的用户信息系统。
当您使用自定义认证插件对接自己的用户系统时,如果存在网络通信,建议使用https协议,确保信息安全传输。
打开CustomAuth.ts模板文件,需要编写代码实现接口类AuthPlugin,实现auth和getUserInfo两个基础方法,实现类CustomAuth的名字可自定义修改。
接口类AuthPlugin中包含如下三个方法,需要在实现类中完成功能的实现。
// 插件文件的接口类定义如下
export interface AuthPlugin {
/**
* 用户信息获取:根据读写accessToken的值,返回用户的数据:用户的id,用户的名字,用户所属的组织,用户所创建的组织
* @param accessToken 用户的读写accessToken
* @returns
* id:用户的id,保证唯一性
* name:用户的名字,保证唯一性
* belongGroupList:用户所在的组织,具有发布指定组织包的权限
* groupAdminList: 用户所管理的组织,具有删除组织内包的权限
*/
auth(accessToken: string): Promise<{
id: string;
name: string;
belongGroupList: Array<string>;
groupAdminList: Array<string>;
}>;
/**
* 用户信息获取:根据只读accessToken的值,返回用户的数据:用户的id,用户的名字,用户所属的组织,用户所创建的组织
* @param accessToken 用户的只读accessToken
* @returns
* id:用户的id,保证唯一性
* name:用户的名字,保证唯一性
* belongGroupList:用户所在的组织,具有发布指定组织包的权限
* groupAdminList: 用户所管理的组织,具有删除组织内包的权限
*/
authWithReadOnly(accessToken: string): Promise<{
id: string;
name: string;
belongGroupList: Array<string>;
groupAdminList: Array<string>;
}>;
/**
* 根据用户id,返回用户的名字
* @param id 用户的id值
*/
getUserInfo(id: string): Promise<string>;
} 通过读写AccessToken获取对应用户信息,函数的入参为读写AccessToken值,返回值有四个参数:用户的id值,用户的name值,用户所属的组织列表belongGroupList,用户所管理的组织列表groupAdminList。
通过只读AccessToken获取对应用户信息,函数的入参为只读AccessToken值,返回值有四个参数:用户的id值,用户的name值,用户所属的组织列表belongGroupList,用户所管理的组织列表groupAdminList。当ohpm-repo配置不支持匿名访问时,ohpm可以通过配置只读AccessToken值,获取执行install,info和update命令的权限。
实现根据用户id获取用户名字的功能。函数入参为用户的id值;返回值为用户的名字。
$ npm i typescript $ npm i @types/node
$ tsc
如果CustomAuth.ts没有存放在ohpm-repo解压根目录的plugins内,请先修改tsconfig.json 文件中include和outDir参数,前者指定待编译插件代码的存储目录,后者指定编译完成后文件的输出位置,然后再在ohpm-repo解压根目录执行编译命令tsc。
// tsconfig.json 文件中的默认配置 // 默认值:插件存放在 ./plugins 中,编译后的文件存放在./plugins/outDir中 "include": "plugins/*" // 插件文件的位置 "outDir": "./plugins/outDir" // 编译后文件的存放位置
编译后获得的CustomAuth.js需要与CustomAuth.ts 保持在同一级目录中,否则会编译出错,默认输出在./plugins/outDir内,需要把CustomAuth.js拷贝到CustomAuth.ts同级目录./plugins中(ohpm-repo成功启动后可删除CustomAuth.ts文件)。
// 配置文件中 auth_plugin 项的格式参考 auth_plugin: name: CustomAuth path: plugins/CustomAuth.js
参数说明:
当ohpm-repo成功启动后,在ohpm客户端的配置文件.ohpmrc中新增一行(//是有效字符,不是注释,勿删)。
//<ip>:<port>/repos/ohpm/:_read_auth=<readOnlyToken>
//<ip>:<port>/repos/ohpm/:_auth=<readWriteToken>
其中ip和port为ohpm-repo私仓启动机器所在的ip值和端口值;readOnlyToken/readWriteToken为用户信息系统内有效的只读/读写accessToken值,通过该accessToken值,用户调用自定义认证插件CustomAuth中auth和authWithReadOnly方法,能够获取到有效的用户信息。