>운영 및 유지보수 >안전 >Cognito를 인증 및 AWS JWT Authorizer로 교체하는 방법

Cognito를 인증 및 AWS JWT Authorizer로 교체하는 방법

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

  1. 인증 콘솔에 로그인

如何使用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을 선택하세요.

Create user

User Management> User List를 입력하고 오른쪽 상단의 New 버튼을 클릭한 후 두 명의 사용자를 생성하고 마지막으로 저장을 클릭합니다.

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

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

토큰 사용자 정의 필드 설정

확장 기능> Pipeline을 입력하고 맨 오른쪽의 "OIDC 발행 전 토큰" 위치에서 아래 더하기 기호를 클릭하세요.

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

사용자 정의 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 콘솔 구성

Create API Gateway

AWS API Gateway 콘솔에 들어가서 "Create 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 게이트웨이를 선택하세요.

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

방금 생성한 API 게이트웨이를 선택하고 "추가"를 클릭하세요.

如何使用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를 인증 및 AWS JWT Authorizer로 교체하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제