사용자 세션 완전히 로그아웃하고 OAuth 데이터 지우는 방법

로그아웃 로직 관련 문제를 겪고 있습니다.

Discourse의 oauth2 설정에 auth0를 사용하고 있는데, currentUser.destroySession()으로 로그아웃을 트리거하면 사용자가 로그아웃되어 Discourse 세션은 종료되지만, oauth 데이터가 어째서인지 여전히 캐시에 남아 있는 것 같습니다.

구체적으로 무슨 뜻인지 설명드리겠습니다.

배경: SSO를 사용하는 경우, 사용자가 사이트에서 로그아웃하면 다음에 다시 로그인하려고 할 때 사이트에서 SSO 페이지로 리다이렉트되어 자격 증명을 입력하고 인증되면 활성화된 세션과 함께 원래 사이트로 다시 리다이렉트되는 것이 정상입니다.

위와 같은 맥락에서, Discourse는 사용자를 완전히 로그아웃하지 않는 것처럼 보입니다. 따라서 Discourse에서 로그아웃을 하면 정상적으로 작동하지만, 포럼 사이트에 다시 로그인하려고 할 때 Discourse가 SSO 페이지를 다시 트리거하지 않습니다. 어째서인지 이전에 로그인된 SSO 계정을 기억하고 있어서 자동으로 해당 사용자를 선택하여 로그인하는 매우 이상한 상황이 발생합니다.

이로 인해 저는 해당 사용자로 고정되어 다른 사용자 계정으로 변경할 수 없으며, 아마도 시크릿 모드나 완전히 다른 브라우저를 사용해야 할 것 같습니다 :frowning:

기대 사항: 로그아웃을 클릭하면 다음에 다시 로그인하려고 할 때 auth0 SSO 페이지로 이동하여 필요한 작업을 수행한 후 Discourse 포럼으로 다시 리다이렉트되기를 바랍니다.

currentUser.destroySession()이 세션과 oauth 데이터를 어떻게 정리하는지에 문제가 있는 것으로 보입니다.

사용자 세션을 종료하기 위해 수동으로 API 호출을 수행해 보았지만, 여전히 동일한 결과가 나와 개선점이 없습니다:

fetch(`https://MY_FORUM.discourse.group/admin/users/USER_ID/log_out`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Api-Key': 'API_KEY',
    'Api-Username': 'ADMIN_USERNAME',
  },
})

oauth를 사용할 때 로그아웃을 어떻게 수정하거나 접근해야 할지 아이디어가 있으시다면 통찰을 공유해 주십시오.

1개의 좋아요