0

API 서비스가 있습니다.이 API 서비스는 Cognito 인증 자 + 람다를 백엔드로 사용하여 AWS API 게이트웨이를 사용하여 배포 할 예정입니다. 이 서비스는 자바 스크립트 클라이언트에서 사용됩니다. 또한 프로그래밍 방식 액세스를위한 원시 끝점으로 최종 사용자에게 노출되어야합니다.AWS Cognito 연합 ID + 프로그래밍 방식 API의 영구 액세스 키

페더레이션 ID를 사용하여 js 클라이언트에서 signup/login을 사용하는 것은 매우 쉽지만 사용자에게 개인용 액세스 토큰을 제공하여 http 헤더에 직접 포함시키는 방법을 알 수는 없습니다.

는 여기에 내가 결국 좀하고 싶습니다, 두 가지 인증 흐름은 다음과 같습니다

JS 클라이언트 사용자에 대한 흐름 : 페이스 북이나 구글과

  1. 사용자 가입 한.
  2. 사용자가 신원을 확인합니다.
  3. 로그인 후 사용자는 인터페이스의 프로필/API 키 섹션으로 이동합니다.
  4. 사용자 사본은 토큰에 액세스하고 HTTP 클라이언트에서 HTTP 요청 헤더 (httpie, 컬, 어떤 언어 라이브러리) 관리 생성 된 사용자에 대한

흐름에 포함 할 수 있습니다

  1. 관리자가 사용자를 만듭니다 .
  2. 해당 사용자에 대한 액세스 토큰이 생성됩니다.
  3. 관리자가 생성 된 액세스 토큰을 전달합니다.
  4. 사용자는 이전 플로우에서와 같이 요청을하기 위해 http 헤더에이를 포함시킬 수 있습니다.

액세스 토큰은 영구적이어야하며 언제든지 사용자가 재생성 할 수 있습니다 (Stripe API 액세스 키 생각).

여기서 중요한 것은 사용자가 서비스를 프로그래밍 방식으로 사용하기위한 추가 단계를 제거하는 것입니다. AWS 문서에서 가장 가까운 것은 developer-authenticated-identities이지만 사용자는 AWS SDK를 사용해야합니다.

이 작업을 수행하는 한 가지 가능한 방법은 API 게이트웨이에서 Cognito 인증 자 대신 사용자 지정 인증자를 사용하는 것입니다. 커스텀인가자는 예를 들어, auth 헤더 이름을 지정하고 Cognito 또는 데이터베이스의 사용자 API 액세스 토큰에 권한을 부여하도록 결정합니다. 가능한지 확실하지 않습니다. 주요 단점이 있다면 람다 함수에서 Cognito 인증 흐름을 다시 구현하는 것입니다.

질문은 어떻게하면 Cognito 또는 API 게이트웨이를 사용하여 API 액세스 토큰 (재) 생성을 수행 할 수 있습니까?

+0

먼저 Cognito의 액세스 토큰은 보안상의 이유로 영구적 인 것으로 간주되지 않습니다. 문제가 정확히 무엇인지 확실하지 않습니다. Cognito에 토큰을 요청하고 프로그래밍 방식으로 HTTP 요청에 포함시키는 스크립트를 작성할 수 있습니다. 사용자가 한 번만 로그인 한 후에 다시 로그인해야한다는 것을 의미합니까? 그렇다면 항상 새로 고침 토큰을 사용하여 신선한 토큰을 얻을 수 있습니다. – agent420

답변

0

첫 번째 흐름은 사용자 풀에서 가능해야합니다. 이제 Cognito 사용자 풀에는 Facebook/Google을 사용하여 페더레이션하고 사용 된 흐름에 따라 액세스 토큰/새로 고침 토큰을받을 수있는 페더레이션 기능이 있습니다.

관리자가 만든 사용자의 경우 사용자는 토큰이 발행되기 전에 인증을 받아야하지만 임시 비밀번호로 사용자를 생성하고 해당 비밀번호로 사용자를 서명하면 변경 및 로그인 할 수 있습니다 다시 액세스/새로 고침 토큰을 수신합니다.

새로 고침 토큰 사용 사례는 Cognito API에 대해 새 액세스 토큰을 수신하는 데 사용할 수 있다는 점입니다.새로 고침 토큰이 만료되면 (기본값은 30 일이지만 구성 가능) 사용자는 다시 인증해야합니다.