Authing의 OIDC 공급자를 AWS API Gateway의 인증자로 사용하여 Lambda 기능을 보호하세요. 인증 코드를 작성할 필요가 없으며 양쪽에 구성하기만 하면 됩니다. 또한 다양한 컨텍스트를 기반으로 사용자 정의 필드에 대해 OIDC IdToken을 발행하는 Authing의 기능을 보여줍니다.
인증 계정 등록
https://console.authing.cn을 방문하여 계정을 등록하세요
인증 콘솔에 로그인
사용자 풀 생성
애플리케이션 생성
애플리케이션 목록에서 방금 생성한 애플리케이션을 찾아 구성을 클릭하세요. 아래 서명 알고리즘으로 RS256을 선택하세요.
Create user
User Management> User List를 입력하고 오른쪽 상단의 New 버튼을 클릭한 후 두 명의 사용자를 생성하고 마지막으로 저장을 클릭합니다.
토큰 사용자 정의 필드 설정
확장 기능> Pipeline을 입력하고 맨 오른쪽의 "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) }
Create API Gateway
AWS API Gateway 콘솔에 들어가서 "Create API"를 클릭하세요.
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를 인증 및 AWS JWT Authorizer로 교체하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!