사용자 A가 내 사이트에 로그인한 후 사이트의 '포럼’을 클릭합니다. 그러면 Discourse로 리디렉션되며, Discourse가 SSO를 통해 내 사이트로 콜백을 보내 사용자 A가 인증되어 Discourse에 자동으로 로그인됩니다. 완벽하게 잘 작동합니다.
잠시 후, 사용자 A가 컴퓨터를 떠나면 세션이 자동으로 만료됩니다. 사용자 A는 내 앱이나 Discourse에서 명시적으로 로그아웃을 클릭하지 않았습니다.
사용자 B가 같은 기기에서 내 사이트에 로그인하고 포럼으로 이동하려고 클릭합니다. Discourse에는 여전히 사용자 A가 로그인되어 있으므로, Discourse 세션이 로그인 상태이기 때문에 SSO를 요청하지 않습니다. 이제 사용자 B는 Discourse에서 사용자 A로 로그인된 상태가 됩니다. :-\
이 부분에 대해 좀 더 구체적으로 설명해 주실 수 있을까요? 앱의 세션 길이는 얼마인가요? 거기서 세션 만료를 어떻게 처리하고 있나요?
Discourse에는 기본적으로 1440시간, 즉 60일로 설정된 maximum session age(최대 세션 수명) 설정이 있습니다.
간단히 말하면, 컴퓨터를 사용하는 사용자가 바뀌었는지 알 수 없는 상황에서는 이를 쉽게 방지할 수 있는 방법이 없습니다. 세션 길이를 줄이거나, 앱에서 주기적으로 호출하여 사용자를 로그아웃시킬 수는 있지만, 그렇게 하면 사용자가 컴퓨터를 더 긴 시간 동안 사용하게 될 때 인증 플로우를 처음부터 다시 거쳐야 하는 불편함을 겪게 됩니다.
Discourse는 현재 사용 중인 로그인 및 세션 플로우를 확장할 수 있지만, 위에서 언급한 사항에 대한 추가 정보가 없으면 문제가 정확히 어디에 있는지, 그리고 어떤 기회가 있는지 파악하기 어렵습니다.