여기 있는 단계를 따라 AWS Cognito를 통해 SSO를 활성화할 수 있었습니다:
- Discourse OpenID Connect (OIDC)
- Anyone have a working AWS Cognito configuration w/ ouath2, openid or sso?
그러나 모바일 및 웹 앱에서 사용하는 것과 동일한 인증 플로우를 discourse에서 활성화하는 방법을 찾고 있습니다. 이는 비밀번호 없이 로그인하는 커스텀 인증 플로우(사용자가 이메일을 입력하고 인증 코드를 받는 방식)입니다.
사용자가 메인 앱에서 비밀번호를 사용하지 않으므로, SSO가 이메일/비밀번호 대신 이 비밀번호 없는 인증 플로우를 통해 작동하기를 기대합니다.
이 기능을 활성화하는 방법에 대한 조언이나, 이것이 가능한지 여부에 대해 알려주시면 감사하겠습니다.
감사합니다.
pfaffman
(Jay Pfaffman)
2
제가 뭘 놓치고 있는 게 아니라면, 그 방법으로 작동해야 합니다. 링크를 보내라고 하는 곳으로 그들을 보내면, Discourse에 로그인된 상태가 되어야 합니다. 그래도 안 되나요? 아니면 Discourse가 링크를 요청하는 곳으로 그들을 보내도록 하고 싶으신 건가요?
제이님,
답변해 주셔서 감사합니다.
정리해 드리겠습니다.
저희 앱(discourse가 아닌)의 플로우에는 비밀번호가 없으며, 사용자는 이메일을 입력한 뒤 이메일로 6자리 코드를 받고, 해당 코드를 입력하여 로그인합니다.
이를 위해 인증 챌린지를 정의/생성하고 검증하는 람다 트리거를 사용하고 있습니다. 또한 UI는 커스텀으로 구현되어 있습니다(즉, AWS Amplify에서 제공하지 않음).
저희가 원하는 것은 discourse 로그인 과정도 이와 동일하게 만드는 것입니다. discourse에 동일한 Cognito 앱 클라이언트 설정을 사용하려고 했지만, 다음과 같은 오류 페이지가 표시됩니다.
(이 오류에 대해 Cognito의 네트워크 호출은 큰 도움이 되지 않습니다)
이 내용에 대한 후속으로, 관심 있으신 분들을 위해 공유드립니다:
결국 아래 포스트에 영감을 받아 토큰을 처리하기 위한 중간 OAuth 서버를 구축해야 했습니다:
https://medium.com/@scott_84836/adding-aws-cognito-authentication-to-discourse-using-oauth2-basic-f20209ba6162
백엔드가 Flask/파이썬이어서 다음을 사용하게 되었습니다: python-oauth2 · PyPI
요약하자면: Cognito의 기본 수단으로는 비밀번호 없는 설정을 할 수 없어, 경량화된 OAuth를 직접 구축해야 했습니다.