Authing の OIDC プロバイダーを AWS API Gateway の認証子として使用して、Lambda 関数を保護します。認証コードを記述する必要はなく、両側で設定するだけです。また、さまざまなコンテキストに基づいてカスタム フィールドの OIDC IdToken を発行する Authing の機能も示します。
認証アカウントの登録
# #ユーザープールの作成
##アプリケーションの作成アプリケーション リストで作成したアプリケーションを見つけて、[構成] をクリックします。以下の署名アルゴリズムとして RS256 を選択します。
ユーザーの作成
「
ユーザー管理>
ユーザーリスト」と入力し、右上隅の「新規」ボタンをクリックして、2 人のユーザーを作成し、最後に「保存」をクリックします。
トークン カスタム フィールドの設定入力
拡張機能>
パイプライン パイプライン、右端の「OIDC がトークンを発行する前」の位置にある下のプラス記号をクリックします。
カスタム IdToken の追加を選択します。 #ポップアップ ドロワーに次のカスタム コードを入力して、[トークン] フィールドをカスタマイズします。最後にアップロードをクリックします。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 の作成
#HTTP API を選択し、「ビルド」をクリックします。
API 名を入力し、「次へ」をクリックします。
#「次へ」をクリックします。 「次へ」をクリックします。 「作成」をクリックします。 Lambda 関数を作成するAWS Lambda コンソールに入り、[関数の作成] をクリックします。 以下のようにLambda関数を作成します 関数名は任意で入力可能です。#Lambda 関数のトリガーを追加します
#API ゲートウェイを選択します。
作成した API ゲートウェイを選択し、[追加] をクリックします。
点击 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
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
在登录页面输入账号和密码
收到来自 Lambda 的响应:
点击登出,再使用账号和密码登录
收到来自 Lambda 的响应:
注意 companyCode 已经根据用户的信息字段,进行逻辑判断然后返回了另外一个。
以上がCognito を Authing および AWS JWT オーソライザーに置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。