本文讲述使用 Authing 的 OIDC Provider 作为 AWS API Gateway 的认证器,用于保护 Lambda 函数。无需编写任何鉴权代码,只需要在两边配置即可完成。同时还演示了 Authing 可以根据上下文不同情况来签发自定义字段的 OIDC IdToken 能力。
创建一个应用
在应用列表找到刚刚创建的应用,点击配置。在下方签名算法处选择 RS256 。
进入用户管理 > 用户列表,点击右上角的新建按钮,创建两个用户: steve.zhang@kone.com 和 steve.zhang2@kone.com ,密码为 123456,最后点击保存。
进入扩展能力 > 流水线 Pipeline,在最右侧「 OIDC 签发 Token 前」位置,点击下面的加号。
选择添加自定义 IdToken 。
async function pipe(user, context, callback) {
if(user.email === 'steve.zhang@kone.com') {
user.addIdToken("companyCode", "kone")
}
if(user.email === 'steve.zhang2@kone.com') {
user.addIdToken("companyCode", "kone2")
}
callback(null, user, context)
}
进入 AWS API Gateway 控制台,点击「创建 API 」。
选择 HTTP API,然后点击「构建」。
点击「创建」。
进入 AWS Lambda 控制台,点击「创建函数」。
为 Lambda 函数添加触发器
点击 Lambda 函数,向下滚动浏览器窗口,进入编辑界面。
exports.handler = async (event) => {
// TODO implement
const token = event.headers.authorization.replace('Bearer ', '');
const claims = event.requestContext.authorizer.claims;
const response = {
statusCode: 200,
body: JSON.stringify({
token,
claims,
companyCode: claims.companyCode
})
};
return response;
};
最后点击「 Deploy 」。
进入 AWS API Gateway 控制台,找到刚创建的 API 。
找到刚刚为 Lambda 函数设置的触发器路由,点击「附加授权」。
点击「创建并附加授权方」。
选择 JWT 授权方类型
授权方按照以下方式设置。
上面的信息可以在 Authing 控制台找到:
在应用 > 应用列表,找到你的应用,点击「配置」。
发布者 URL 填写这里的 Issuer,受众填写应用 ID 。
最后点击「创建并附加」。
git clone https://git.authing.co/yezuwei/kone-poc
cd kone-poc
npm install
node bin/www
然后在浏览器访问 https://kone.authing.cn
在登录页面输入账号 steve.zhang@kone.com 和密码 123456
收到来自 Lambda 的响应:
点击登出,再使用账号 steve.zhang2@kone.com 和密码 123456 登录
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.