# 개발/테스트용 가짜 인증 제공자

**URL:** https://meta.discourse.org/t/fake-authentication-provider-for-development-testing-purposes/183700
**Category:** Plugin
**Tags:** development
**Created:** [3월 18, 2021, 9:38오후 UTC](https://meta.discourse.org/t/fake-authentication-provider-for-development-testing-purposes/183700 "2021-03-18T21:38:51Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [3월 18, 2021, 9:38오후 UTC](https://meta.discourse.org/t/fake-authentication-provider-for-development-testing-purposes/183700/1 "2021-03-18T21:38:52Z")

</div>

> ℹ 로컬 개발 전용입니다. 프로덕션 사이트에는 유용하지 않습니다

로컬에서 Discourse 작업을 할 때, 다양한 로그인 방법을 테스트할 수 있는 기능이 유용합니다. 대부분의 경우 실제 인증 과정 자체보다는 **Discourse** 가 다양한 입력에 대해 어떻게 반응하는지 확인하는 것이 중요합니다. 예를 들어 다음과 같은 경우를 생각해 볼 수 있습니다.

- 이메일이 인증되지 않으면 어떻게 되나요?
- 인증 제공자가 이메일 주소를 보내주지 않으면 어떻게 되나요?
- 인증 제공자가 사용자 이름을 보내주지 않으면 어떻게 되나요?
- 이메일은 일치하지만 UID가 일치하지 않으면 어떻게 되나요?
- 외부 인증을 사용할 때 초대(invites)는 어떻게 작동하나요?
- 로그인 화면은 어떤 모습인가요?
- (여기서 끝없이 이어질 수 있지만… 요지는 알겠죠)

지금까지 유일한 실질적인 선택지는 "개발 환경에 실제 Google/Twitter/OAuth2 등의 인증을 설정하는 것"이었습니다. 이는 작동하지만 매우 번거롭고, 다양한 조합을 테스트하기 위해 여러 Google/Twitter 계정을 만들어야 하는 문제가 있습니다.

조금 더 효율적인 방법을 만들었습니다:

> **[GitHub - discourse/discourse-development-auth: A discourse plugin which adds a fake...](https://github.com/discourse/discourse-development-auth)**
>
> A discourse plugin which adds a fake authentication provider. For development purposes only.

이 플러그인을 로컬에 설치하면 가짜 인증 제공자를 사용할 수 있습니다. Discourse의 관점에서는 Google, Twitter, OAuth2, OIDC 등 다른 어떤 제공자와도 동일하게 작동합니다.

 ![image](https://global.discourse-cdn.com/meta/original/3X/3/d/3dea5ef321adb05bcdb22644951e7194b9baba22.png)

로그인 플로우를 시작하면, 원하는 데이터를 직접 입력할 수 있는 화면이 표시됩니다. 제출된 값은 쿠키를 통해 기억되므로 동일한 작업을 쉽게 반복할 수 있습니다. 필드는 [Omniauth Auth Hash Schema](https://github.com/omniauth/omniauth/wiki/Auth-Hash-Schema)와 일치합니다.

 ![image](https://global.discourse-cdn.com/meta/original/3X/e/4/e47d231fd99a30ce713d867d05046cf919507846.png)

ManagedAuthenticator 시스템을 사용하므로, 데이터는 `user_associated_accounts` 테이블에 `provider_name`이 `developmentauth`인 상태로 저장됩니다.

* * *

[DiscourseConnect](https://meta.discourse.org/t/13045?silent=true)도 지원합니다! 이를 사용해 보려면 플러그인을 설치하고 `enable_discourse_connect` 설정을 활성화하면 됩니다. 다음 로그인 시 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) 필드가 모두 사용 준비가 된 상태로 표시됩니다.

 ![Screenshot 2021-03-19 at 13.37.28](https://global.discourse-cdn.com/meta/original/3X/b/6/b604011621945a2101fd7b4649f2ba6c8c59dbe7.png)

* * *

Auth 작업을 할 때 다음에 이 플러그인을 사용해 보고, 개선할 점이 있으면 알려주세요 🙂

> :philosoraptor: 이 플러그인은有史以來 가장 보안이 취약한 인증 플러그인임을 유의하세요. 따라서 프로덕션 환경에서는 부팅을 거부하며, 작동하려면 `DISCOURSE_DEV_ALLOW_ANON_TO_IMPERSONATE` 환경 변수를 `1`로 설정해야 합니다.

---

_[View the full topic](https://meta.discourse.org/t/fake-authentication-provider-for-development-testing-purposes/183700)._
