首頁  >  文章  >  運維  >  如何使用Authing和AWS JWT Authorizer替換Cognito

如何使用Authing和AWS JWT Authorizer替換Cognito

WBOY
WBOY轉載
2023-05-27 13:41:15760瀏覽

使用 Authing 的 OIDC Provider 作為 AWS API Gateway 的認證器,用於保護 Lambda 函數。無需編寫任何鑑權程式碼,只需要在兩邊配置即可完成。同時也示範了 Authing 可以根據上下文不同情況來簽發自訂欄位的 OIDC IdToken 能力。

Authing 控制台配置

註冊一個Authing 帳號

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

如何使用Authing和AWS JWT Authorizer替换Cognito

  1. 登入Authing 控制台

如何使用Authing和AWS JWT Authorizer替换Cognito

建立一個使用者池

如何使用Authing和AWS JWT Authorizer替换Cognito

如何使用Authing和AWS JWT Authorizer替换Cognito

建立一個應用程式

如何使用Authing和AWS JWT Authorizer替换Cognito

如何使用Authing和AWS JWT Authorizer替换Cognito

在應用程式清單找到剛剛建立的應用,點擊配置。在下方簽章演算法處選擇 RS256。

建立用戶

進入用戶管理> 用戶清單,點擊右上角的新建按鈕,建立兩個用戶,最後點選儲存。

如何使用Authing和AWS JWT Authorizer替换Cognito

如何使用Authing和AWS JWT Authorizer替换Cognito

設定Token 自訂欄位

進入擴充功能> 管線Pipeline,在最右邊「OIDC 簽發Token 前」位置,點選下面的加號。

如何使用Authing和AWS JWT Authorizer替换Cognito

選擇新增自訂 IdToken。

如何使用Authing和AWS JWT Authorizer替换Cognito

在彈出的抽屜中,輸入以下自訂程式碼來自訂 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)
}

如何使用Authing和AWS JWT Authorizer替换Cognito

AWS 控制台設定

建立 API Gateway

#進入 AWS API Gateway 控制台,點選「建立 API」。

如何使用Authing和AWS JWT Authorizer替换Cognito

選擇 HTTP API,然後點選「建置」。

如何使用Authing和AWS JWT Authorizer替换Cognito

填寫 API 名稱,點選「下一步」。

如何使用Authing和AWS JWT Authorizer替换Cognito

點選「下一步」。

如何使用Authing和AWS JWT Authorizer替换Cognito

點選「下一步」

如何使用Authing和AWS JWT Authorizer替换Cognito

#點選「建立」。

如何使用Authing和AWS JWT Authorizer替换Cognito

建立 Lambda 函數

進入 AWS Lambda 控制台,點擊「建立函數」。

如何使用Authing和AWS JWT Authorizer替换Cognito

以圖表方式建立 Lambda 函數,函數名稱可以任意填入。

如何使用Authing和AWS JWT Authorizer替换Cognito

為 Lambda 函數新增觸發器

如何使用Authing和AWS JWT Authorizer替换Cognito

#選擇 API Gateway。

如何使用Authing和AWS JWT Authorizer替换Cognito

選擇剛剛建立的 API Gateway,點選「新增」。

如何使用Authing和AWS JWT Authorizer替换Cognito

点击 Lambda 函数,向下滚动浏览器窗口,进入编辑界面。

如何使用Authing和AWS JWT Authorizer替换Cognito

输入以下代码,用于返回 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」。

如何使用Authing和AWS JWT Authorizer替换Cognito

设置 API Gateway 路由 Authorizer

进入 AWS API Gateway 控制台,找到刚创建的 API。

如何使用Authing和AWS JWT Authorizer替换Cognito

找到刚刚为 Lambda 函数设置的触发器路由,点击「附加授权」。

如何使用Authing和AWS JWT Authorizer替换Cognito

点击「创建并附加授权方」。

如何使用Authing和AWS JWT Authorizer替换Cognito

选择 JWT 授权方类型

如何使用Authing和AWS JWT Authorizer替换Cognito

授权方按照以下方式设置。

如何使用Authing和AWS JWT Authorizer替换Cognito

上面的信息可以在 Authing 控制台找到:

应用> 应用列表,找到你的应用,点击「配置」。

如何使用Authing和AWS JWT Authorizer替换Cognito

发布者 URL 填写这里的 Issuer,受众填写应用 ID。

如何使用Authing和AWS JWT Authorizer替换Cognito

最后点击「创建并附加」。

如何使用Authing和AWS JWT Authorizer替换Cognito

到此所有配置完毕

登录示例

安装 NodeJS

http://nodejs.cn/download/

克隆项目

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

安装依赖

cd sample-poc
npm install

运行

node bin/www

然后在浏览器访问 https://kone.authing.cn

在登录页面输入账号和密码

如何使用Authing和AWS JWT Authorizer替换Cognito

收到来自 Lambda 的响应:

如何使用Authing和AWS JWT Authorizer替换Cognito

点击登出,再使用账号和密码登录

如何使用Authing和AWS JWT Authorizer替换Cognito

收到来自 Lambda 的响应:

如何使用Authing和AWS JWT Authorizer替换Cognito

注意 companyCode 已经根据用户的信息字段,进行逻辑判断然后返回了另外一个。

以上是如何使用Authing和AWS JWT Authorizer替換Cognito的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除