Heim >Betrieb und Instandhaltung >Sicherheit >So ersetzen Sie Cognito durch Authing und AWS JWT Authorizer

So ersetzen Sie Cognito durch Authing und AWS JWT Authorizer

WBOY
WBOYnach vorne
2023-05-27 13:41:15775Durchsuche

Verwenden Sie den OIDC-Anbieter von Authing als Authentifikator für AWS API Gateway, um Lambda-Funktionen zu schützen. Es ist nicht erforderlich, einen Authentifizierungscode zu schreiben. Konfigurieren Sie ihn einfach auf beiden Seiten. Es demonstriert außerdem die Fähigkeit von Authing, OIDC-IdToken für benutzerdefinierte Felder basierend auf unterschiedlichen Kontexten auszustellen.

Konfiguration der Authing-Konsole

Registrieren Sie ein Authing-Konto

  1. Besuchen Sie https://console.authing.cn und registrieren Sie ein Konto

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

  1. Melden Sie sich bei der Authing-Konsole an

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

Erstellen Sie einen Benutzerpool

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

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

Erstellen Sie eine Anwendung

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

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

Suchen Sie die Anwendung, die Sie gerade erstellt haben, in der Anwendungsliste und klicken Sie auf Konfigurieren. Wählen Sie unten RS256 für den Signaturalgorithmus aus.

Benutzer erstellen

Geben Sie Benutzerverwaltung> ein, klicken Sie auf die Schaltfläche „Neu“ in der oberen rechten Ecke, erstellen Sie zwei Benutzer und klicken Sie schließlich auf „Speichern“.

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

如何使用Authing和AWS JWT Authorizer替换CognitoLegen Sie das benutzerdefinierte Token-Feld fest

Geben Sie die

Erweiterungsfunktionen

> Pipeline ein und klicken Sie auf das Pluszeichen unten an der Position „Bevor OIDC Token ausgibt“ ganz rechts.

如何使用Authing和AWS JWT Authorizer替换CognitoWählen Sie, ob Sie ein benutzerdefiniertes IdToken hinzufügen möchten.

如何使用Authing和AWS JWT Authorizer替换CognitoGeben Sie in der Popup-Schublade den folgenden benutzerdefinierten Code ein, um das Token-Feld anzupassen. Klicken Sie abschließend auf Hochladen.

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替换CognitoAWS-Konsolenkonfiguration

API-Gateway erstellen

Betreten Sie die AWS API-Gateway-Konsole und klicken Sie auf „API erstellen“.

如何使用Authing和AWS JWT Authorizer替换CognitoWählen Sie die HTTP-API aus und klicken Sie auf „Erstellen“.

如何使用Authing和AWS JWT Authorizer替换CognitoGeben Sie den API-Namen ein und klicken Sie auf „Weiter“.

如何使用Authing和AWS JWT Authorizer替换CognitoKlicken Sie auf „Weiter“.

如何使用Authing和AWS JWT Authorizer替换CognitoKlicken Sie auf „Weiter“

如何使用Authing和AWS JWT Authorizer替换CognitoKlicken Sie auf „Erstellen“.

如何使用Authing和AWS JWT Authorizer替换CognitoErstellen Sie eine Lambda-Funktion

Betreten Sie die AWS Lambda-Konsole und klicken Sie auf „Funktion erstellen“.

如何使用Authing和AWS JWT Authorizer替换CognitoErstellen Sie eine Lambda-Funktion wie unten gezeigt. Der Funktionsname kann beliebig eingegeben werden.

如何使用Authing和AWS JWT Authorizer替换CognitoTrigger für Lambda-Funktion hinzufügen

如何使用Authing和AWS JWT Authorizer替换CognitoAPI-Gateway auswählen.

如何使用Authing和AWS JWT Authorizer替换CognitoWählen Sie das soeben erstellte API-Gateway aus und klicken Sie auf „Hinzufügen“.

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

Das obige ist der detaillierte Inhalt vonSo ersetzen Sie Cognito durch Authing und AWS JWT Authorizer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen