여러분 안녕하세요,
기존의 Discourse 사용자 이름/비밀번호를 사용하여 원격 웹사이트에 로그인하는 방법에 대해 조언을 구하고 싶습니다.
SSO는 필요하지 않을 것 같습니다. 그 이유는 다음과 같습니다.
먼저, 현재 사용 중인 시나리오와 제가 이 방식을 선호하지 않는 이유에 대한 배경 설명을 드리겠습니다.
현재 저는 https://www.example.com이라는 웹사이트를 운영 중이며, 이 사이트에는 로그인 버튼이 있습니다.
사용자가 로그인 버튼을 클릭하면 기존 Discourse 사용자 이름과 이메일 주소를 입력하도록 요청받습니다. (참고: 사용자 이름 + 이메일, 비밀번호가 아님)
그 다음 이 두 가지 정보를 가져와서 다음 주소로 API GET 요청을 보냅니다:
"https://mydiscourse.comm/admin/users/list/all.json?email=" + strEmail
이 API 호출의 헤더에는 “system” 사용자 계정 이름과 해당 시스템 사용자의 API 키를 포함합니다.
이메일 주소가 일치하는 경우, 제 폼에서 제공받은 사용자 이름을 해당 이메일 주소에 대해 API 응답으로 반환된 사용자 이름과 비교합니다.
일치하면 이 사용자가 제 사이트 https://www.example.com에 로그인된 것으로 간주합니다.
이것은 3~4년 전에 구축한 것이며, 지금까지도 잘 작동하고 있습니다.
하지만…
-
로그인 폼에서 사용자 이름 + 이메일 주소 조합을 입력하는 것은 사용자에게 매우 혼란스럽습니다.
– 대부분의 사람은 항상 사용자 이름 + 비밀번호를 입력합니다.
– 제 폼 곳곳에 대량의 설명이 있음에도 불구하고, 사람들은 여전히 본능적으로 잘못 입력합니다. -
보안이 취약합니다.
– 사용자 이름과 이메일 주소만 알면, 이 두 가지(단순한) 정보로 https://www.example.com에 “그 사람으로” 로그인하는 것이 매우 쉽습니다.
제가 하고 싶은 것은 사용자가 https://www.example.com의 로그인 버튼을 클릭하고 기존 Discourse 사용자 이름 + 비밀번호(사용자 이름 + 이메일이 아닌!)를 입력하는 것입니다.
그렇게 되면 example.com의 제 웹사이트가 Discourse로 빠른 API 요청을 보내, 제공된 사용자 이름/비밀번호 조합이 올바른지 확인하고 기존 Discourse 사용자 ID를 반환받으면 됩니다.
이해가 되시는지 모르겠습니다 ![]()
API 문서를 끝까지 찾아보았지만, 단순한 “login” 엔드포인트를 찾을 수가 없습니다 ![]()
제 Discourse 자체에서 사람들을 로그인/로그아웃시키는 것은 필요하지도, 원하지도 않습니다. 단순히 그들의 사용자 이름/비밀번호가 올바른지만 확인하면 됩니다.
어떤 지침, 조언, 링크나 조언이든 매우 환영합니다 ![]()