이더리움으로 로그인 플러그인

Sign-In with Ethereum (SIWE) 표준을 사용하여 사용자가 Ethereum 지갑으로 인증할 수 있도록 하는 Discourse 플러그인입니다. 인젝션 지갑(MetaMask, Safe 등)은 추가 설정 없이 바로 사용할 수 있습니다. RPC 엔드포인트가 구성된 경우 ENS 이름과 아바타는 서버 측에서 해석됩니다.

요구 사항

  • 서드파티 플러그인을 지원하는 Communiteq와 같은 제공업체를 통해 호스팅되거나 셀프 호스팅되는 Discourse 포럼.

설치

컨테이너의 app.yml 파일에 액세스합니다:

cd /var/discourse
nano containers/app.yml

플러그인의 저장소 URL을 after_code 후크에 추가합니다:

hooks:
  after_code:
    - exec:
      cd: $home/plugins
      cmd:
        - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git
        - sudo -E -u discourse git clone https://github.com/signinwithethereum/discourse-siwe-auth.git # <-- 추가됨

기존 docker_manager.git 줄의 형식을 따르십시오. sudo -E -u discourse가 포함되어 있지 않다면 대신 git clone https://github.com/signinwithethereum/discourse-siwe-auth.git를 사용하십시오.

컨테이너를 다시 빌드합니다:

cd /var/discourse
./launcher rebuild app

구성

설치 후 관리자 > 플러그인에서 해당 플러그인을 찾아 활성화되어 있는지 확인하십시오:

플러그인을 구성하려면 설정을 클릭하십시오:

여기서 로그인 문구를 사용자 정의하고 선택적으로 WalletConnect / Reown 프로젝트 ID를 추가할 수 있습니다. 프로젝트 ID가 없으면 인젝션 지갑(MetaMask, Safe 등)만 사용할 수 있습니다.

설정

설정 설명
Discourse siwe enabled Ethereum 로그인 인증을 활성화하거나 비활성화합니다.
Siwe ethereum rpc url 선택 사항. ENS 이름/아바타 해석 및 EIP-1271 서명 검증(SAFE와 같은 스마트 컨트랙트 지갑에 필수)에 사용되는 Ethereum JSON-RPC 엔드포인트입니다. 전용 제공업체(Alchemy, Infura)를 권장합니다. 예: https://mainnet.infura.io/v3/YOUR_KEY.
Siwe project ID 선택 사항. WalletConnect / Reown 프로젝트 ID입니다. 이 값이 없으면 인젝션 지갑(MetaMask, Safe 등)만 사용할 수 있습니다. WalletConnect를 사용하려면 dashboard.reown.com에서 무료 프로젝트 ID를 생성하십시오.
Siwe statement SIWE 메시지에서 표시되는 사람이 읽을 수 있는 문구입니다. 기본값은 "Sign in with Ethereum"입니다.

작동 방식

사용자가 Ethereum 로그인 버튼을 클릭하면 플러그인이 전용 인증을 엽니다. 사용자는 지갑을 연결하고 SIWE 메시지에 서명하며, 서버 측의 OmniAuth 전략을 통해 인증됩니다.

첫 번째 로그인 후 사용자는 계정에 이메일 주소를 연결하도록 요청받습니다. RPC URL이 구성되어 있고 연결된 주소에 ENS 이름이 있는 경우, 해당 이름은 서버 측에서 해석되고 검증되며 기본 사용자 이름으로 제안됩니다. ENS 아바타는 ENS 메타데이터 서비스를 통해 가져와 프로필 사진으로 사용됩니다.

대신, 기존 사용자는 프로필 설정을 통해 Ethereum 계정을 연결할 수 있습니다.

14개의 좋아요

의존성에 대한 논의가 여기 있습니다: Discourse can't find gems specified in the plugin

GitHub에서 이 프로젝트를 발견했는데, 활발하게 개발되고 있는 것 같습니다. 웹3 로그인을 지원하는 것 같지만, 지갑으로 로그인한 후에도 이메일 주소를 입력해야 합니다.

다만, 개발자가 플러그인 설치 후 Discourse를 부트스트랩하는 것을 막는 문제를 겪고 있습니다. 자세한 내용은 아래 이슈에 나와 있습니다. 아주 단순한 문제일 수도 있으니, 여기 계신 누군가가 개발자를 위해 PR을 제출해 줄 수 있을지도 모릅니다.

1개의 좋아요

잠깐만 보세요 :wink:
해결 방법은 GitHub 이슈에 있습니다.

3개의 좋아요

정말 멋지네요, 지금 바로 시도해 보고 있습니다. 개발자에게도 도움이 되길 바랍니다 :grinning_face:

수정: 설치된 것처럼 보이지만 결국 같은 오류가 발생하는 것 같습니다:

version 2.3.0.
Successfully installed rubyzip-2.3.2
1 gem installed
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 777 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

이렇게 해주실 수 있나요?

2개의 좋아요

로그를 확인하면서 관련이 있을 것 같은 내용들을 올립니다.

@moderators 이 주제를 분할하는 것이 좋을까요? 이 플러그인에 대한 공식 주제가 없으며, 개발자가 meta에 있는 것 같지 않습니다.

I, [2022-07-04T16:43:46.394301 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::ConflictError: Unable to activate eth-0.5.1, because openssl-3.0.0 conflicts with openssl (~> 2.2)

현재 다른 에러는 보이지 않습니다 (혹은 로그가 길어서 제가 놓치고 있는 것일 수도 있습니다).

1개의 좋아요

솔직히 여기서 무슨 일이 일어나고 있는지 핵심을 잘 파악하지 못하겠습니다. :slightly_smiling_face: @RGJ 님과 @michaeld 님이 분리를 할 권한이 있으니, 저보다 더 세심하게 처리해 주실 수 있을 것 같아 그분들이 직접 해주셨으면 좋겠습니다. :slightly_smiling_face::crossed_fingers: (아니면, 분리를 시작할 게시물을 지정하고, 옮기고 싶은 카테고리를 알려주세요. 그리고 제목도 정해 주시면 제가 진행하겠습니다 :+1:)

1개의 좋아요

제 제안은 여기서 분리되었습니다:

https://meta.discourse.org/t/web-3-0-features/203321/19?u=marcp

가장 적합한 카테고리는 Support 또는 #plugins일 것 같습니다 (확신이 없네요.. Meta 회원이 아닌 사람이 개발한 플러그인은 어떻게 처리하나요? 언젠가 그가 Meta에 합류하거나, GitHub를 통해 Meta에 초대할 수도 있겠죠?)

수정:

이 사람이 개발자인 것 같으니, Meta에 있는 건가요? @w4ll3

@michaeld 님이 어제 이 문제에 대한 PR을 만들었지만 아직 병합되지 않았습니다. 그 사이에는 https://github.com/communiteq/discourse-siwe-auth/ 를 사용할 수 있습니다.

3개의 좋아요

이것이 작동하는 것을 확인했습니다! 마이클 감사합니다.

1개의 좋아요

요약하자면, 이슈 Cannot Install Plugin on Self-Hosted Discourse server - rbsecp256k1 · Issue #15 · spruceid/discourse-siwe-auth · GitHub 설명된 before_code와 제가 PR(현재 미병합 상태)을 만든 새로운 버전의 eth gem이 모두 필요합니다.

5개의 좋아요

공식 포럼에서 조금 늦게 인사드립니다. Spruce 팀의 Rocco입니다.

@michaeld, 수정해 주셔서 다시 한번 감사드립니다. 해당 문제가 해결되었고, 저희 측에서도 문서를 업데이트했습니다. 이 문제를 제기해 주셔서 감사합니다. 우리는 여전히 Ethereum으로 로그인(Sign-In with Ethereum) 관련 기능을 적극적으로 개발하고 유지보수하고 있습니다.

또한 궁금한 점이 하나 있습니다. 이 플러그인을 결국 공식 지원 플러그인으로 만들 수 있는 방법이 있을까요? :grinning: - 우리는 Discourse를 정말 좋아하며, 자체 호스팅되지 않은 인스턴스에도 이 기능을 확장하는 방법을 찾고 있습니다.

2개의 좋아요

정확히 말씀드리면, Communiteq는 관리형 호스팅 플랜에서 이 플러그인을 지원하며, Professional 플랜 이상에서 사용할 수 있습니다.

3개의 좋아요

그 점에 대해 죄송합니다!

사과하실 필요 없어요! 공식 호스팅에는 아직 (아마도) 해당 기능이 없는 것 같습니다. 그저 이 웹3 플러그인에 대한 우리의 전념을 강조하고 싶었을 뿐입니다.

3개의 좋아요

음 — 안타깝게도 공식적으로 지원되는 플러그인은 아닙니다.

하지만 Comuniteq의 지원에는 진심으로 감사드립니다! Web3 사용자를 돕는 모든 시도는 정말 훌륭합니다.

우리는 Ethereum 로그인(Sign-In with Ethereum) 채택을 지원하기 위해 다양한 방식을 연구하고 있으며, Discourse는 항상 우선순위 목록의 상위에 있었습니다. 그래서 EIP-4361을 표준화한 후 이 플러그인을 만들었습니다. 또한 이 플러그인에 무엇을 더 추가할지에 대한 고민도 계속되고 있는데, 커스텀 RPC 제공자 설정이 그 첫 번째 요소 중 하나입니다.

3개의 좋아요

이 플러그인이 제 환경에서는 작동하지 않습니다. 플러그인 설치에 문제가 있는 것 같은데, 대안을 공유해 주시거나 이 플러그인에 대해 도와주실 분 계신가요? @michaeld @RGJ

도움을 받으려면 세부 정보를 공유해야 합니다.

1개의 좋아요

@RGJ 이 플러그인을 설치하려고 하면 다음과 같은 오류로 인해 재구성이 실패합니다.

You are specifying the gem rbsecp256k1 in /var/www/discourse/plugins/discourse-siwe-auth/plugin.rb, however it does not exist!
Looked for: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/specifications/rbsecp256k1-5.1.0.gemspec