# 이메일 주소 없이 SSO로 로그인하는 사용자

**URL:** https://meta.discourse.org/t/users-logging-with-sso-without-email-address/236747
**Category:** Feature
**Tags:** email, sso
**Created:** [8월 21, 2022, 10:08오전 UTC](https://meta.discourse.org/t/users-logging-with-sso-without-email-address/236747 "2022-08-21T10:08:54Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![icaria36](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/icaria36/32/426431_2.png) [@icaria36](https://meta.discourse.org/u/icaria36)
#### Post date: [8월 21, 2022, 10:08오전 UTC](https://meta.discourse.org/t/users-logging-with-sso-without-email-address/236747/1 "2022-08-21T10:08:54Z")

</div>

[[Paid] Plugin- Allow no email address necessary on registration](https://meta.discourse.org/t/paid-plugin-allow-no-email-address-necessary-on-registration/53919) 의 후속 글입니다.

> [@simon](#):
>
> 확인되지 않은 이메일로 가입을 허용하는 것은 위험해 보입니다. 특히 프라이버시를 중시하는 포럼에서는 더욱 그렇습니다. 하나의 해결책은 2단계 인증을 사용하는 다른 웹사이트를 통해 사용자를 인증하는 것입니다. 사용자가 이메일 주소를 제공하거나 확인하기를 원하지 않는 경우, 이메일 주소를 대신 생성해 줄 수 있습니다. `username@sms.yourdomain.com` 형식으로 주소가 생성되면, SendGrid와 같은 이메일 서비스를 사용하여 Discourse에서 해당 도메인으로 보낸 이메일을 파싱하고 그 내용을 URL로 POST할 수 있습니다. 그런 다음 Twilio와 같은 서비스를 사용하여 해당 URL에서 이메일 내용을 SMS 메시지로 재전송할 수 있습니다. 다만 이 방법은 비용이 많이 들 수 있습니다.

이 시나리오는 기술적으로 실현 가능한가요?

- 사용자는 포럼에 SSO를 통해서만 로그인합니다. 상위 프로젝트에서 이메일이 필수 사항이 아니기 때문에 일부 사용자는 확인된 이메일을 가지고 있을 수도 있고, 그렇지 않을 수도 있습니다. 포럼에서 사용자를 신뢰하는 정도는 상위 웹사이트에서 신뢰하는 정도와 동일합니다.
- 이메일 주소가 없는 사용자가 처음 로그인할 때, Discourse의 사용자 ID에 대한 내부 요건을 충족시키기 위해 가짜 이메일 주소가 생성됩니다.
- 이러한 사용자는 이메일을 받지 않는다는 점을 인지하고 있으며, 이러한 타협에 만족합니다. 이메일 알림을 원하는 사람은 신뢰할 수 있는 곳에서 이메일 계정을 만들어야 합니다.

배경: 안전상의 이유로 위키미디어에서는 많은 사용자가 이메일 주소와의 연결을 끊고 익명의 편집자로 남을 만한 정당한 이유가 있습니다. 이것이 많은 위키백과 등 편집자가 이메일 주소가 연결되지 않은 계정을 가진 이유입니다. 우리는 그들에게 포럼에서 토론에 참여할 수 있는 동일한 기회를 제공하고자 합니다. [여러 사용자가 요청했습니다](https://forum.movement-strategy.org/t/is-having-an-email-attached-to-the-forum-account-necessary/145) (다른 곳이나 우리에게 직접).

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [8월 21, 2022, 10:29오전 UTC](https://meta.discourse.org/t/users-logging-with-sso-without-email-address/236747/3 "2022-08-21T10:29:27Z")

</div>

네. 그게 잘 작동할 것 같아요. 사실, 시스템에서 이메일 주소로 `username@whatever.invalid`을 그냥 보내도 잘 작동할 거예요. `invalid` TLD는 모든 시스템이 무시하도록 알고 있으니까요.

---

<div class="post-metadata">

### Author: ![icaria36](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/icaria36/32/426431_2.png) [@icaria36](https://meta.discourse.org/u/icaria36)
#### Post date: [8월 21, 2022, 10:40오전 UTC](https://meta.discourse.org/t/users-logging-with-sso-without-email-address/236747/4 "2022-08-21T10:40:26Z")

</div>

@pfaffman님, 감사합니다. 이게 가능하다면 우리가 생각했던 것보다 더 간단한 방법일 수 있겠네요. 현재 인증을 위해 이 플러그인을 사용 중입니다: [GitHub - paviliondev/discourse-wikimedia-auth: A Discourse plugin for authenticating with Wikimedia · GitHub](https://github.com/paviliondev/discourse-wikimedia-auth). 가짜 이메일 주소를 주입하는 작업이 여기서 이루어질 수 있을까요?

@angus님, 참고해 주세요. 🙂

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [8월 22, 2022, 7:33오전 UTC](https://meta.discourse.org/t/users-logging-with-sso-without-email-address/236747/5 "2022-08-22T07:33:36Z")

</div>

> [@pfaffman](#):
>
> 시스템이 `username@whatever.invalid`을 이메일 주소로 보내면 그냥 작동할 것 같습니다. `invalid` TLD를 무시하도록 모든 시스템이 알고 있기 때문이라고 생각합니다.

호기심이 생겨서 여쭤봅니다. 실제로 이 방법을 성공적으로 사용해 본 적이 있으신가요(진지한 질문입니다)? 이러한 인스턴스의 로그(디스코urs와 메일 제공업체 모두)는 어떤 모습인가요?

p.s. 이메일 필요성을 제거하길 바라며 이 글을 읽고 계신 분들을 위해, 여기서는 "사용자가 SSO를 통해서만 포럼에 로그인"하는 범위에 해당한다는 점을 참고해 주세요.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [8월 22, 2022, 10:52오전 UTC](https://meta.discourse.org/t/users-logging-with-sso-without-email-address/236747/6 "2022-08-22T10:52:30Z")

</div>

하. 아니요. 이 방법이 실제로 작동한다고, 좋은 아이디어라고, 아니면 개를 죽이지 않을 것이라고 주장하려는 것이 아니었습니다. 이걸 시도하면 실제로 무슨 일이 일어날지 저는 모릅니다.

그냥 **작동할 것 같은** 느낌이 드는 겁니다. 정말로 이걸 원하고 테스트할 시간이 있다면, 어쩌면 작동할 수도 있습니다.

네, 이건 SSO에 의존하고, SSO가 이메일이 검증되었다고 거짓말하는 것에 의존합니다.

해당 사용자의 이메일을 비활성화하는 조치가 취해지는 것이 가장 좋겠지만, **메일러가 `invalid` TLD를 받게 되면 정확히 어떤 일이 일어나는지는 제가 확신하지 못합니다.** 재시도를 시도한다면, 잘못된 TLD가 포함된 이메일의 전송을 어떻게든 건너뛰는 플러그인이 필요할 것이고, 아니면 이메일을 완전히 비활성화하기 위한 사용자 정의 필드가 필요할 것입니다. 어쨌든 후자는 좋은 아이디어일 것입니다.
