Maison  >  Article  >  Opération et maintenance  >  Comment remplacer Cognito par Authing et AWS JWT Authorizer

Comment remplacer Cognito par Authing et AWS JWT Authorizer

WBOY
WBOYavant
2023-05-27 13:41:15712parcourir

Utilisez le fournisseur OIDC d'Authing comme authentificateur pour AWS API Gateway afin de protéger les fonctions Lambda. Il n'est pas nécessaire d'écrire un code d'authentification, il suffit de le configurer des deux côtés. Cela démontre également la capacité d'Authing à émettre un IdToken OIDC pour des champs personnalisés en fonction de différents contextes.

Configuration de la console Authing

Enregistrez un compte Authing

  1. Visitez https://console.authing.cn et enregistrez un compte

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

  1. Connectez-vous à la console Authing

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

Créez un pool d'utilisateurs

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

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

Créez une application

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

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

Recherchez l'application que vous venez de créer dans la liste des applications et cliquez sur Configurer. Sélectionnez RS256 pour l'algorithme de signature ci-dessous.

Créer un utilisateur

Entrez Gestion des utilisateurs> Liste des utilisateurs, cliquez sur le bouton Nouveau dans le coin supérieur droit, créez deux utilisateurs et enfin cliquez sur Enregistrer.

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

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

Définissez le champ personnalisé du jeton

Entrez les Capacités d'extension> Pipeline, cliquez sur le signe plus ci-dessous à la position « Avant que l'OIDC n'émet le jeton » à l'extrême droite.

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

Choisissez d'ajouter un IdToken personnalisé.

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

Dans le tiroir contextuel, saisissez le code personnalisé suivant pour personnaliser le champ Jeton. Cliquez enfin sur Télécharger.

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

Configuration de la console AWS

Créer une passerelle API

Entrez dans la console AWS API Gateway et cliquez sur "Créer une API".

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

Sélectionnez l'API HTTP et cliquez sur "Construire".

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

Remplissez le nom de l'API et cliquez sur "Suivant".

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

Cliquez sur "Suivant".

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

Cliquez sur "Suivant"

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

Cliquez sur "Créer".

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

Créer une fonction Lambda

Entrez dans la console AWS Lambda et cliquez sur "Créer une fonction".

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

Créez une fonction Lambda comme indiqué ci-dessous. Le nom de la fonction peut être renseigné arbitrairement.

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

Ajouter un déclencheur pour la fonction Lambda

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

Sélectionnez API Gateway.

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

Sélectionnez la passerelle API que vous venez de créer et cliquez sur "Ajouter".

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer