ホームページ >運用・保守 >安全性 >Cognito を Authing および AWS JWT オーソライザーに置き換える方法

Cognito を Authing および AWS JWT オーソライザーに置き換える方法

WBOY
WBOY転載
2023-05-27 13:41:15778ブラウズ

Authing の OIDC プロバイダーを AWS API Gateway の認証子として使用して、Lambda 関数を保護します。認証コードを記述する必要はなく、両側で設定するだけです。また、さまざまなコンテキストに基づいてカスタム フィールドの OIDC IdToken を発行する Authing の機能も示します。

認証コンソールの設定

認証アカウントの登録

  1. ##https://console.authing.cn にアクセスしてアカウントを登録します

如何使用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ユーザーの作成

ユーザー管理

>

ユーザーリスト

」と入力し、右上隅の「新規」ボタンをクリックして、2 人のユーザーを作成し、最後に「保存」をクリックします。

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

トークン カスタム フィールドの設定

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

拡張機能

>

パイプライン パイプライン

、右端の「OIDC がトークンを発行する前」の位置にある下のプラス記号をクリックします。

カスタム IdToken の追加を選択します。

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

#ポップアップ ドロワーに次のカスタム コードを入力して、[トークン] フィールドをカスタマイズします。最後にアップロードをクリックします。

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 コンソール設定

如何使用Authing和AWS JWT Authorizer替换CognitoAPI Gateway の作成

AWS API Gateway コンソールに入り、[Create API] をクリックします。

#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 関数のトリガーを追加します

#API ゲートウェイを選択します。 如何使用Authing和AWS JWT Authorizer替换Cognito

作成した API ゲートウェイを選択し、[追加] をクリックします。 如何使用Authing和AWS JWT Authorizer替换Cognito

如何使用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 已经根据用户的信息字段,进行逻辑判断然后返回了另外一个。

以上がCognito を Authing および AWS JWT オーソライザーに置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。