우리는 OAuth2 기본 플러그인을 사용하여 Auth0로 가입 및 로그인 구성 문서를 참고하여 oauth2 플러그인을 설정했습니다.
플로우의 동작 방식은 다음과 같습니다:
로그인 을 클릭한 후 dbt 커뮤니티 계정 사용 을 선택하면 계정이 성공적으로 생성 되며, 사용자명 등을 설정할 수 있는 계정 생성 대화 상자가 표시됩니다.
이 과정을 보여주는 Loom 영상:
oauth2 debug auth를 활성화했으며, 로그에서 (oauth2_basic) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected를 확인할 수 있습니다.
질문:
이는 Discourse 문제인지 Auth0 문제인가요? Slack에 대한 거의 동일한 로그인 플로우가 문제 없이 작동하므로 Discourse 문제라고 가정하고 있습니다.
로그인 페이지에서는 작동하지만 Auth0 측에서 로그인이 트리거될 때는 왜 작동하지 않는 것인가요?
기본 CSRF 오류 메시지는 브라우저가 변경되거나 로그인 플로우에 너무 많은 시간이 걸릴 때 발생하는 것을 암시합니다. 이 중 어느 것도 해당되지 않는 경우, 다른 원인은 무엇일 수 있나요?
david
(David Taylor)
12월 20, 2022, 10:38오전
4
안녕하세요 @joellabes - “Application Login URI” Auth0 설정에 입력한 URL을 확인해 주시겠어요?
{your forum}/auth/oauth2_basic 형식이어야 합니다. 끝에 /callback이 포함되어 있다면, 말씀하신 문제가 발생할 수 있습니다.
@david 감사합니다 - 현재 Application Login URI란에는 아무것도 입력되어 있지 않지만, allowed callback URLs에는 내용이 있습니다:
Application Login URI 필드에 https://discourse.getdbt.com/auth/oauth2_basic를 넣고, Allowed Callback URLs 필드에는 https://discourse.getdbt.com/auth/oauth2_basic/callback을 유지해야 할까요?
david
(David Taylor)
12월 20, 2022, 6:33오후
6
네, 그렇게 시도해 볼 수 있습니다.
“커뮤니티 포럼에서 도움 받기” 링크가 어떻게 구현되어 있는지 더 자세히 알려 주실 수 있을까요? 링크가 어디로 이동하나요? 현재 해당 버튼이 Auth0에서 처리되고, 새로운 URL 구성을 추가하면 버튼이 로그인 플로우를 시작하기 위해 /auth/oauth2_basic으로 올바르게 링크되도록 될 것이라고 가정하고 있습니다.
답변이 늦어서 죄송합니다 - 크리스마스 휴가에서 막 돌아왔습니다!
저는 이렇게 했습니다:
하지만 여전히 같은 결과가 나옵니다.
David Taylor:
링크는 어디로 가나요?
그 링크는 https://dev-zb38hsho.us.auth0.com/samlp/5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr로 가는데, 여기서 dev-zb38hsho는 우리의 Auth0 인스턴스 ID이고, 5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr는 Auth0의 Discourse 애플리케이션에 대한 Client ID입니다.
해당 링크를 방문하면 https://dev-zb38hsho.us.auth0.com/u/login?state=SESSION_SPECIFIC_TOKEN으로 리디렉션됩니다.
david
(David Taylor)
1월 13, 2023, 9:42오전
8
핵심은 Discourse가 /auth/oauth2_basic에서 인증 플로우를 시작해야 하고, 이후 Auth0로 리다이렉트한 다음 /auth/oauth2_basic/callback로 돌아와야 한다는 것입니다.
처음 URL을 통해 Auth0가 로그인을 트리거하도록 하는 것이 가능할 것이라 기대했지만, Discourse가 곧바로 콜백 URL로 이동하는 것 같습니다.
포럼에서 버튼이 /auth/oauth2_basic을 가리키도록 업데이트해 주실 수 있나요? 그러면 인증 플로우가 시작되고 즉시 Auth0로 리다이렉트되므로, 전반적인 사용자 경험(UX)은 동일할 것입니다.
네, 작동합니다! ‘계속’ 버튼이 있는 중간 페이지에서 잠시 멈추는데요; OAuth 플로우를 안전하게 트리거하기 위해 사용자 상호작용이 필수인가요?
만약
그것은 보너스겠지만, 이 정도면 훌륭합니다! 감사합니다
david
(David Taylor)
1월 17, 2023, 9:41오전
10
해당 페이지는 사이트에 여러 로그인 방식이 있는 경우 표시됩니다. ‘로컬 로그인’(사용자 이름/비밀번호)을 비활성화하면 로그인 과정으로 바로 진행됩니다.