Sign-In with Ethereum (SIWE) 표준을 사용하여 사용자가 Ethereum 지갑으로 인증할 수 있도록 하는 Discourse 플러그인입니다. 인젝션 지갑(MetaMask, Safe 등)은 추가 설정 없이 바로 사용할 수 있습니다. RPC 엔드포인트가 구성된 경우 ENS 이름과 아바타는 서버 측에서 해석됩니다.
요구 사항
서드파티 플러그인을 지원하는 Communiteq와 같은 제공업체를 통해 호스팅되거나 셀프 호스팅되는 Discourse 포럼.
기존 docker_manager.git 줄의 형식을 따르십시오. sudo -E -u discourse가 포함되어 있지 않다면 대신 git clone https://github.com/signinwithethereum/discourse-siwe-auth.git를 사용하십시오.
여기서 로그인 문구를 사용자 정의하고 선택적으로 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 메타데이터 서비스를 통해 가져와 프로필 사진으로 사용됩니다.
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.
@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)
현재 다른 에러는 보이지 않습니다 (혹은 로그가 길어서 제가 놓치고 있는 것일 수도 있습니다).
솔직히 여기서 무슨 일이 일어나고 있는지 핵심을 잘 파악하지 못하겠습니다. @RGJ 님과 @michaeld 님이 분리를 할 권한이 있으니, 저보다 더 세심하게 처리해 주실 수 있을 것 같아 그분들이 직접 해주셨으면 좋겠습니다. (아니면, 분리를 시작할 게시물을 지정하고, 옮기고 싶은 카테고리를 알려주세요. 그리고 제목도 정해 주시면 제가 진행하겠습니다 )
@michaeld, 수정해 주셔서 다시 한번 감사드립니다. 해당 문제가 해결되었고, 저희 측에서도 문서를 업데이트했습니다. 이 문제를 제기해 주셔서 감사합니다. 우리는 여전히 Ethereum으로 로그인(Sign-In with Ethereum) 관련 기능을 적극적으로 개발하고 유지보수하고 있습니다.
또한 궁금한 점이 하나 있습니다. 이 플러그인을 결국 공식 지원 플러그인으로 만들 수 있는 방법이 있을까요? - 우리는 Discourse를 정말 좋아하며, 자체 호스팅되지 않은 인스턴스에도 이 기능을 확장하는 방법을 찾고 있습니다.
하지만 Comuniteq의 지원에는 진심으로 감사드립니다! Web3 사용자를 돕는 모든 시도는 정말 훌륭합니다.
우리는 Ethereum 로그인(Sign-In with Ethereum) 채택을 지원하기 위해 다양한 방식을 연구하고 있으며, Discourse는 항상 우선순위 목록의 상위에 있었습니다. 그래서 EIP-4361을 표준화한 후 이 플러그인을 만들었습니다. 또한 이 플러그인에 무엇을 더 추가할지에 대한 고민도 계속되고 있는데, 커스텀 RPC 제공자 설정이 그 첫 번째 요소 중 하나입니다.
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