前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【OIDC】授权服务器-1-KOA服务

【OIDC】授权服务器-1-KOA服务

原创
作者头像
tonglei0429
发布2022-10-05 23:25:00
9030
发布2022-10-05 23:25:00
举报
文章被收录于专栏:信息安全小学生

摘要

目标:利用 oidc-provider 框架,搭建自己的 oidc 授权服务器。

这是第一步,先建立 Koa 服务。

框架选型

因为 OIDC 协议基于 OAuth2.0,所以 OIDC 的实现同样基于 OAuth2.0,所以我们可以在 OAuth2.0 网站上找到很多成熟的框架用来实现自己的授权服务器。

比如我比较习惯于使用 Koa 做 Web 服务,所以就选择了支持 Koa 的 oidc-provider

具体步骤

一、准备 Node 执行环境

二、创建 Koa2 服务

步骤参考 Koa官网

  • 新建文件夹 hello-oidc
  • 创建文件 hello-oidc/package.json
代码语言:shell
复制
npm init .
  • 安装 koa
代码语言:shell
复制
npm init koa -S
  • 创建 app.js 文件,并编辑内容为
代码语言:javascript
复制
const Koa = require('koa');
const app = new Koa();

let server;
(async () => {
    server = app.listen(9000, () => {
    console.log(`Server start on http://localhost:9000.`);
  })
})().catch((err) => {
  if (server && server.listening) server.close();
  console.error(err);
  process.exitCode = 1;
});

至此,Koa 服务已经建立,下一步补充需要用到的服务能力。

三、配置引擎模板

因为 OIDC 授权服务器中,包含了如 登录、授权等几个页面,为了能够更方便的呈现,这里可以选择一个服务端渲染模板工具,比如 ejs

  • 安装 ejs 依赖
代码语言:shell
复制
npm i koa-ejs -S
  • 配置 ejs 模板目录

在 app.js 中,新增依赖

代码语言:javascript
复制
const path = require('path');
const render = require(koa-ejs)

然后配置模板目录

代码语言:javascript
复制
// 配置模板引擎
render(app, {
  cache: false,
  viewExt: 'ejs',
  layout: '_layout',
  root: path.join(__dirname, 'views'),
});

四、配置跨域

OIDC 要接受其他服务的跨域请求,这里可以提前配置好 CORS。

  • 安装 cors 依赖
代码语言:javascript
复制
npm i @koa/cors -S
  • 引入 cors
代码语言:javascript
复制
const cors = require('@koa/cors');
  • 应用 cors
代码语言:javascript
复制
app.use(cors());

五、完整代码

代码语言:javascript
复制
const path = require('path');
const Koa = require('koa')
const cors = require('@koa/cors');
const render = require('koa-ejs');

// 创建 Koa 实例
const app = new Koa()

// 配置跨域
app.use(cors());

// 配置模板引擎
render(app, {
  cache: false,
  viewExt: 'ejs',
  layout: '_layout',
  root: path.join(__dirname, 'views'),
});

// 启动 KOA 服务
let server;
(async () => {
  server = app.listen(9000, () => {
    console.log(`Server start on http://localhost:9000.`);
  })
})().catch((err) => {
  if (server && server.listening) server.close();
  console.error(err);
  process.exitCode = 1;
});

TODO

  1. 创建 KOA 服务 ✔
  2. Oidc-Provider 的基础配置
  3. Oidc-Provider 的高级配置
  4. 配置 Https 服务
  5. 使用 MidwayJS 搭建资源服务器

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 框架选型
  • 具体步骤
    • 一、准备 Node 执行环境
      • 二、创建 Koa2 服务
        • 三、配置引擎模板
          • 四、配置跨域
            • 五、完整代码
            • TODO
            相关产品与服务
            云服务器
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档