CognitoID 풀을 사용한 자체 인증, 인증 후 STS를 사용한 임시 자격 증명 반환까지
개요
AWS 공식 ID 풀(페더레이티드 아이덴티티) 인증 흐름 의
開発者が認証した ID の認証フロー
의 基本的な認証フロー
拡張認証フロー
쪽이 대부분의 고객에게 있어서, 올바른 선택이라고 써 있습니다만, 뭔가 잘 안 되었기 때문에 우선 기본의 분 합니다. .환경
AssumeRoleWithWebIdentity
는 클라이언트로부터 하는 것이 되어 있습니다만, 귀찮아서, Lambda 안에서 완결시킵니다. ※인증되어 있다고 하는 전제로,
GetOpenIdTokenForDeveloperIdentity
로부터 합니다.실제로는
GetOpenIdTokenForDeveloperIdentity
전에 독자 인증의 처리가 필요합니다. FullAccess
를 붙입니다.※
GetOpenIdTokenForDeveloperIdentity
를 실행하기 위해서는 자격 증명이 필요합니다. (당연히 - 당연)그래서 로컬에서 갑자기
GetOpenIdTokenForDeveloperIdentity
를 실행하려고해도 화가납니다. 준비
CognitoID 풀 만들기
Lambda 구현
아래 코드를 Lambda에 복사하십시오.
람다
import json
import boto3
def lambda_handler(event, context):
# 事前にここに独自認証の処理を行う(要件に合わせて自分で実装)
client = boto3.client('cognito-identity')
# reponseのTokenにはIDトークンが入る
# ※備考
# "iss": "https://cognito-identity.amazonaws.com" になる。
# ユーザプールで発行した場合の"iss"は"https://cognito-idp.ap-northeast-1.amazonaws.com/ap-northeast-1_xxxxxxxx(ユーザプールID名)"になる
response = \
client.get_open_id_token_for_developer_identity(IdentityPoolId='ap-northeast-1:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', # プールID の IDプールのID
Logins={'login.mycompany.myapp': 'test_user'},
# { 認証プロバイダ > カスタム > 開発者プロバイダーの名前 で登録した開発プロバイダーの名前: 独自認証したユーザID }
)
client2 = boto3.client('sts')
ret = client2.assume_role_with_web_identity(
RoleArn='arn:aws:iam::xxxxxxxxxxxx:role/service-role/lambda_role',
RoleSessionName='boto',
WebIdentityToken=response['Token'],
)
print(f"assumeRoleWithWebIdentity:{ret}")
return {'statusCode': 200, 'body': json.dumps('Hello from Lambda!')}
실제로 자격 증명을 발행해 봅시다.
Lambda를 실행하기만 하면 됩니다.
로그에 다음이 표시됩니다.
주의사항
임시 자격 증명을 사용한 요청 참고
임시 자격 증명을 사용한 요청 참고
STS 실행 권한 부여
Lambda를 실행하는 역할에 STS 권한을 부여해야하므로 해당 역할의
"信頼関係" > "信頼関係の編集"
에 표시되는 정책 내용에 주의하기{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com",
"Federated": "cognito-identity.amazonaws.com" // ここ大事
},
"Action": [
"sts:AssumeRole",
"sts:AssumeRoleWithWebIdentity" // ここ大事
]
}
]
}
참고
AWS 공식 ID 풀(페더레이티드 아이덴티티) 인증 흐름 의
開発者が認証した ID の認証フロー
의 基本的な認証フロー
관련
Reference
이 문제에 관하여(CognitoID 풀을 사용한 자체 인증, 인증 후 STS를 사용한 임시 자격 증명 반환까지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k_hoso/items/4eca4103fb04e0ca07d4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)