AWS Cognito 비밀번호 없는 로그인 설정 중 문제 발생

다음 토론을 이어서 진행합니다: Discourse에서 테마를 변경할 수 없음 — 아무것도 작동하지 않음:

카를로스, 안녕하세요! 우리 커뮤니티에 오신 것을 환영합니다. :hugs:

아, 정말 짜증나네요. 다시 시도해 보실 의향이 있다면 여기서 새로운 주제를 시작하겠습니다. 저는 개인적으로 AWS Cognito에 익숙하지 않습니다. 어떤 시도를 했고 어디서 막혔는지 알려 주실 수 있나요? 호스팅 고객으로서 team@discourse.org에 연락하여 맞춤형 지원을 받을 수도 있습니다.

저희 AI 봇에 따르면, OpenID connect 플러그인을 사용하여 설정하는 것이 가능하다고 합니다.

Discourse용 AWS Cognito 설정 AI

tobiaseigen:

aws cognito 설정

ForumHelperBot:

생각 중...사용자는 AWS Cognito 설정에 대해 묻고 있습니다. AWS Cognito는 Amazon Web Services가 제공하는 인증 서비스로, 웹 및 모바일 앱에 사용자 가입, 로그인 및 액세스 제어를 추가하는 데 도움이 됩니다.

가장 관련성 높은 정보를 제공하기 위해 Discourse와의 AWS Cognito 통합에 대한 토론이나 가이드를 검색해 보겠습니다.

검색

'aws cognito integration discourse'에 대한 결과 54개를 찾았습니다

생각 중...검색 결과를 분석하여 Discourse와의 AWS Cognito 통합 설정에 대한 정보를 제공하겠습니다.

검색 결과에 따르면 Discourse와 AWS Cognito 통합에 대해 논의하는 여러 주제가 있습니다. 주요 접근 방식은 Discourse용 OpenID Connect 인증 플러그인을 사용하는 것으로 보입니다. 주요 정보를 요약하면 다음과 같습니다:

  1. 여러 주제에서 사용자가 OpenID Connect 플러그인을 사용하여 Discourse에 AWS Cognito를 성공적으로 통합한 사례가 있습니다.

  2. 관련 주제에는 다음이 포함됩니다:

    • “누군가 작동하는 AWS Cognito 구성(ouath2, openid 또는 sso)을 가지고 있나요?”
    • “OpenId Connect 플러그인과 AWS Cognito를 통한 자동 로그인”
    • “사용자 정의 로그인 플로우: AWS Cognito SSO(비밀번호 없는 로그인을 통해) - 이것이 가능한가요?”
    • “자체 호스팅 Discourse 인스턴스에서 OpenID Connect 지원”
  3. 이러한 토론에서 Discourse 공식 OpenID Connect 플러그인이 언급되었습니다: GitHub - discourse/discourse-openid-connect: Allows an OpenID Connect provider to be used as an authentication provider for Discourse · GitHub

  4. 한 사용자는 다음 주제에 있는 단계를 따름으로써 AWS Cognito를 통해 SSO를 활성화할 수 있다고 언급했습니다:

    • “OpenID Connect 인증 플러그인”
    • “누군가 작동하는 AWS Cognito 구성(ouath2, openid 또는 sso)을 가지고 있나요?”

더 구체적인 지침을 수집하기 위해 가장 관련성 높은 주제를 읽어보겠습니다.

Discourse와 AWS Cognito 설정

검색 결과에 따르면 OpenID Connect 플러그인을 사용하여 Discourse와 AWS Cognito를 통합한 성공적인 구현 사례가 여러 개 있습니다. 설정 방법은 다음과 같습니다:

1단계: OpenID Connect 플러그인 설치

Discourse OpenID Connect (OIDC) 플러그인을 사용하면 AWS Cognito를 Discourse의 인증 제공자로 사용할 수 있습니다.

플러그인을 설치하려면 app.yml 파일에 추가하세요:

- git clone https://github.com/discourse/discourse-openid-connect.git

2단계: AWS Cognito 구성

  1. AWS Cognito에서 사용자 풀(User Pool)을 생성합니다.
  2. 사용자 풀에서 앱 클라이언트를 설정합니다.
  3. 콜백 URL을 https://your-discourse-site.com/auth/oidc/callback로 구성합니다.
  4. Cognito 도메인, 클라이언트 ID 및 클라이언트 시크릿을 기록합니다.

3단계: Discourse에서 OpenID Connect 플러그인 구성

관리자 > 설정 > 플러그인 > openid connect로 이동하여 다음을 설정합니다:

  • openid connect enabled: true
  • openid connect discovery document: https://{cognito-domain}.auth.{region}.amazoncognito.com/{user-pool-id}/.well-known/openid-configuration
  • openid connect client id: Cognito 앱 클라이언트 ID
  • openid connect client secret: Cognito 앱 클라이언트 시크릿
  • openid connect authorize scope: openid email profile
  • openid connect token url: https://{cognito-domain}.auth.{region}.amazoncognito.com/oauth2/token
  • openid connect authorize url: https://{cognito-domain}.auth.{region}.amazoncognito.com/oauth2/authorize
  • openid connect user json url: https://{cognito-domain}.auth.{region}.amazoncognito.com/oauth2/userInfo

추가 구성 옵션

  • 자동 로그인을 활성화하려면 openid connect authorize url에 ?prompt=none을 포함하도록 설정합니다.
  • openid connect button title을 사용하여 로그인 버튼 텍스트를 사용자 정의할 수 있습니다.

문제 해결

문제가 발생하면:

  • 콜백 URL이 Cognito와 Discourse 양쪽에 올바르게 설정되었는지 확인합니다.
  • 클라이언트 ID와 시크릿이 올바른지 확인합니다.
  • Cognito 사용자 풀이 필요한 사용자 속성을 반환하도록 올바르게 구성되었는지 확인합니다.

더 자세한 구현 예시는 사용자가 성공적인 구성을 공유한 이 토론을 참고하세요.

이 설정 과정의 특정 부분에 대해 더 구체적인 정보가 필요하신가요?

정말 감사합니다, @tobiaseigen!

저는 AWS Cognito 없이 커뮤니티를 시작했습니다… 제 시스템은 기본 Discourse 인증 시스템을 사용 중인데… 사용자가 유료 고객이 될 때마다 Stripe 웹훅이 API를 통해 새로운 Discourse 사용자를 생성하고, 임시 비밀번호를 생성한 후 이메일로 자격 증명을 보내는 방식으로 작동합니다. 그래서 다소 해킹적인 방식입니다.

저는 AWS Cognito를 사용하길 원했습니다. 제 주요 유료 서비스는 Gitbook에 호스팅된 강의인데, AWS Cognito의 비밀번호 없는 인증 시스템으로 보호되어 있습니다. 이 시스템을 재사용하면 제 사용자들에게 이상적일 것 같았거든요. 하지만 이제 너무 늦었습니다 :slight_smile:

어쨌든, 제가 설명하신 모든 단계를 따랐다고 생각합니다… 아니면 무언가를 놓쳤을 수도 있고요… 이메일과 인증 코드를 입력한 후의 사실 하나를 제외하고는 모든 것이 완벽하게 작동했습니다. Discourse가 홈(/)으로 리다이렉트되지 않고 /login으로 되돌아가는 것이었죠. Discourse 관리자 페이지에서 사용자를 검사해 보니, AWS Cognito가 Discourse 사용자를 절대 생성하지 않는다는 것을 확인했습니다.

그럼에도 감사합니다!