使用 Authing + AWS JWT Authorizer 替換 Cognito

本文講述使用 Authing 的 OIDC Provider 做爲 AWS API Gateway 的認證器,用於保護 Lambda 函數。無需編寫任何鑑權代碼,只須要在兩邊配置便可完成。同時還演示了 Authing 能夠根據上下文不一樣狀況來簽發自定義字段的 OIDC IdToken 能力。

Authing 控制檯配置

註冊一個 Authing 帳號

  1. 訪問 https://console.authing.cn,註冊一個帳號

image

  1. 登陸進入 Authing 控制檯

image
建立一個用戶池
image
建立一個應用
.pngnode

.png

在應用列表找到剛剛建立的應用,點擊配置。在下方簽名算法處選擇 RS256。git

建立用戶

進入用戶管理 > 用戶列表,點擊右上角的新建按鈕,建立兩個用戶,最後點擊保存。
.png算法

.png

設置 Token 自定義字段

進入擴展能力 > 流水線 Pipeline,在最右側「OIDC 簽發 Token 前」位置,點擊下面的加號。
.pngnpm

選擇添加自定義 IdToken。
.png瀏覽器

在彈出的抽屜中,輸入如下自定義代碼來自定義 Token 字段。最後點擊上傳。async

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)
}

11.png

AWS 控制檯配置

建立 API Gateway

進入 AWS API Gateway 控制檯,點擊「建立 API」。
imageide

選擇 HTTP API,而後點擊「構建」。image填寫 API 名稱,點擊「下一步」。image點擊「下一步」。image點擊「下一步」
image點擊「建立」。image函數

建立 Lambda 函數

進入 AWS Lambda 控制檯,點擊「建立函數」。image按下圖方式建立 Lambda 函數,函數名稱能夠任意填寫。imagespa

爲 Lambda 函數添加觸發器image選擇 API Gateway。image選擇剛剛建立的 API Gateway,點擊「添加」。image點擊 Lambda 函數,向下滾動瀏覽器窗口,進入編輯界面。
image輸入如下代碼,用於返回 Token 中的信息,包括 companyCode。3d

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」。image

設置 API Gateway 路由 Authorizer

進入 AWS API Gateway 控制檯,找到剛建立的 API。image

找到剛剛爲 Lambda 函數設置的觸發器路由,點擊「附加受權」。image

點擊「建立並附加受權方」。image

選擇 JWT 受權方類型image

受權方按照如下方式設置。
.png

上面的信息能夠在 Authing 控制檯找到:
在應用 > 應用列表,找到你的應用,點擊「配置」。
.png

發佈者 URL 填寫這裏的 Issuer,受衆填寫應用 ID。

最後點擊「建立並附加」。
32.png

到此全部配置完畢

登陸示例

安裝 NodeJS

http://nodejs.cn/download/

克隆項目

git clone https://git.authing.co/yezuwei/kone-poc

安裝依賴

cd sample-poc
npm install

運行

node bin/www

而後在瀏覽器訪問 https://kone.authing.cn

在登陸頁面輸入帳號和密碼
33.png

收到來自 Lambda 的響應:
34.png

點擊登出,再使用帳號和密碼登陸
35.png

收到來自 Lambda 的響應:
36.png

注意 companyCode 已經根據用戶的信息字段,進行邏輯判斷而後返回了另一個。

相關文章
相關標籤/搜索