freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

使用 Authing + AWS JWT Authorizer 替换 Cognito
2020-10-18 14:25:39
本文讲述使用 Authing 的 OIDC Provider 作为 AWS API Gateway 的认证器,用于保护 Lambda 函数。无需编写任何鉴权代码,只需要在两边配置即可完成。同时还演示了 Authing 可以根据上下文不同情况来签发自定义字段的 OIDC IdToken 能力。

Authing 控制台配置

注册一个 Authing 账号
  1. 访问 https://console.authing.cn,注册一个账号
  1. 登录进入 Authing 控制台
创建一个用户池
创建一个应用
在应用列表找到刚刚创建的应用,点击配置。在下方签名算法处选择 RS256。
创建用户
进入用户管理> 用户列表,点击右上角的新建按钮,创建两个用户,最后点击保存。
设置 Token 自定义字段
进入扩展能力> 流水线 Pipeline,在最右侧「OIDC 签发 Token 前」位置,点击下面的加号。
选择添加自定义 IdToken。
在弹出的抽屉中,输入以下自定义代码来自定义 Token 字段。最后点击上传。
async function pipe(user, context, callback) {
  if(user.email === 'sample@sample.com') {
    user.addIdToken("companyCode", "sample")
  }
  if(user.email === 'sample2@sample.com') {
    user.addIdToken("companyCode", "sample2")
  }
  callback(null, user, context)
}

AWS 控制台配置

创建 API Gateway
进入 AWS API Gateway 控制台,点击「创建 API」。
选择 HTTP API,然后点击「构建」。
填写 API 名称,点击「下一步」。
点击「下一步」。
点击「下一步」
点击「创建」。
创建 Lambda 函数
进入 AWS Lambda 控制台,点击「创建函数」。
按下图方式创建 Lambda 函数,函数名称可以任意填写。
为 Lambda 函数添加触发器
选择 API Gateway。
选择刚刚创建的 API Gateway,点击「添加」。
点击 Lambda 函数,向下滚动浏览器窗口,进入编辑界面。


输入以下代码,用于返回 Token 中的信息,包括 companyCode
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」。
设置 API Gateway 路由 Authorizer
进入 AWS API Gateway 控制台,找到刚创建的 API。
找到刚刚为 Lambda 函数设置的触发器路由,点击「附加授权」。
点击「创建并附加授权方」。
选择 JWT 授权方类型
授权方按照以下方式设置。
上面的信息可以在 Authing 控制台找到:
应用> 应用列表,找到你的应用,点击「配置」。
发布者 URL 填写这里的 Issuer,受众填写应用 ID。
最后点击「创建并附加」。
到此所有配置完毕
登录示例
安装 NodeJS
克隆项目
git clone https://git.authing.co/yezuwei/sample-poc
安装依赖
cd sample-poc
npm install
运行
node bin/www
然后在浏览器访问 https://kone.authing.cn
在登录页面输入账号和密码
收到来自 Lambda 的响应:
点击登出,再使用账号和密码登录
收到来自 Lambda 的响应:
注意 companyCode 已经根据用户的信息字段,进行逻辑判断然后返回了另外一个。


# SaaS # AWS
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者