Omniauth JWT 리다이렉트

이것을 참고하여 JWT를 사용하여 SSO를 설정하고 실행하는 데 성공했습니다.

discourse-omniauth-jwt 라이브러리를 사용하는데, 로그인 후 사용자를 어떻게 리디렉션해야 하는지 확실하지 않습니다.

사용자가 제 사이트로 로그인하면 JWT를 획득하고 즉시 discourse에도 로그인 처리합니다. 이 플로우의 마지막 단계에서 사용자는 제 사이트로 돌아오지 못하고 discourse 사이트로 이동하게 됩니다.

omniauth 라이브러리의 리디렉션 메서드, 즉 여기에서 언급된 origin 파라미터와 destination_url 쿠키를 확인해 보았지만, 어떤 것도 작동하지 않았습니다.

@eviltrout 님이 이 문제에 대해 좀 더 알려주실 수 있을까요?

수정: omniauth와 discourse의 omniauth 콜백이라는 두 가지 다른 라이브러리를 보고 있었다는 것을 방금 깨달았습니다. 어쨌든 이 문제를 해결하는 방법을 여전히 모르겠습니다.

즉, 여기서 문제는 다음과 같습니다:

  1. 사용자가 사이트 로그인
  2. 사용자를 Discourse로 리다이렉트하여 그곳에서 로그인
  3. 결국 Discourse에 로그인됨?

이것은 지원되지 않는 경로라고 생각합니다. 일반적으로 사용자는 Discourse에 있다가 로그인 버튼을 클릭하고, 인증을 위해 사용자의 사이트로 이동한 후 다시 리다이렉트되는 방식입니다. 사용자가 자신의 사이트에서 직접 로그인한 경우, 사용자의 사이트에 머물러 있어야 합니다.

보통 이렇게 처리하는 방법은 Discourse를 로그아웃 상태로 유지하면서, 사용자가 "로그인"을 클릭하면 인증 양식을 다시 입력하지 않고 바로 리다이렉트되도록 하는 것입니다.

음, 맞아요. 생각해보니 로그인하는 건 별로 의미가 없네요. 임베드가 인증 세션을 활용할 수 없으니까요.

즉, 임베드는 인증 세션(또는 세션 쿠키)을 활용하여 비공개 디스코러스(Discourse) 주제를 표시하거나 숨깁니다.

이 인증 흐름은 타당하지만, 일단 사용자를 새 탭에서 디스코러스 포럼의 로그인 페이지로 리다이렉트할 예정입니다. 새로고침을 하면 비공개 주제에 접근할 수 있습니다.