目标:利用 oidc-provider 框架,搭建自己的 oidc 授权服务器。
这是第一步,先建立 Koa 服务。
因为 OIDC 协议基于 OAuth2.0,所以 OIDC 的实现同样基于 OAuth2.0,所以我们可以在 OAuth2.0 网站上找到很多成熟的框架用来实现自己的授权服务器。
比如我比较习惯于使用 Koa 做 Web 服务,所以就选择了支持 Koa 的 oidc-provider。
略
步骤参考 Koa官网。
npm init .
npm init koa -S
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。
npm i koa-ejs -S
在 app.js 中,新增依赖
const path = require('path');
const render = require(koa-ejs)
然后配置模板目录
// 配置模板引擎
render(app, {
cache: false,
viewExt: 'ejs',
layout: '_layout',
root: path.join(__dirname, 'views'),
});
OIDC 要接受其他服务的跨域请求,这里可以提前配置好 CORS。
npm i @koa/cors -S
const cors = require('@koa/cors');
app.use(cors());
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;
});
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。