RGJ
(Richard - Communiteq)
2022 年 7 月 4 日午後 5:57
1
ユーザーが 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
RGJ
(Richard - Communiteq)
2022 年 7 月 4 日午後 5:58
2
MarcP
(MarcP)
2022 年 7 月 2 日午後 11:25
3
GitHubで見つけました。活発に開発されているようです。Web3ログイン(ウォレットでログインした後もメールアドレスが必要)ができるようです。
Discourse plugin for SIWE authentication
しかし、開発者はプラグインのインストールとその後のDiscourseのブートストラップを妨げる問題に直面しています。詳細は以下のIssueに記載されています。もしかしたら非常に簡単な問題で、誰かが開発者のためにPRを提出できるかもしれません。
opened 05:01PM - 20 May 22 UTC
closed 03:52PM - 11 Jul 22 UTC
siwe-discourse
Using the latest docker image from Discourse we're seeing the error:
```
I, [… 2022-05-20T16:58:42.288275 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
ERROR: Error installing rbsecp256k1:
ERROR: Failed to build gem native extension.
current directory: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/gems/rbsecp256k1-5.1.0/ext/rbsecp256k1
/usr/local/bin/ruby -I /usr/local/lib/ruby/site_ruby/2.7.0 -r ./siteconf20220520-1530-cv5chg.rb extconf.rb
Downloading libsecp256k1.zip (100%)
```
Even after installing the required system-level dependencies of rbsecp256k1 our discourse server will not start. Our app.yml looks like:
```
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/spruceid/discourse-siwe-auth.git
```
Any assistance would be appreciated!
「いいね!」 1
michaeld
(Michael - Communiteq)
2022 年 7 月 3 日午後 7:21
4
ビールを注いでくれ
GitHubのイシューに解決策があります。
「いいね!」 3
MarcP
(MarcP)
2022 年 7 月 3 日午後 7:24
5
素晴らしいですね。今試してみます。開発者の方にも役立つことを願っています
編集:gemがインストールされているように見えますが、同じエラーが発生しました。
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.
MarcP
(MarcP)
2022 年 7 月 4 日午後 5:04
7
ログを確認したところ、関連性があると思われるものを投稿します。
@moderators これについてトピックを分割していただけますか?このプラグインには公式トピックがなく、開発者はメタにいないと思います。
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
MarcP
(MarcP)
2022 年 7 月 4 日午後 5:26
9
ここから分割する提案です。
https://meta.discourse.org/t/web-3-0-features/203321/19?u=marcp
最も適切なカテゴリは Support または #plugins でしょう(確信はありませんが、Metaのメンバーによって開発されていないプラグインをどのように扱いますか?彼がMetaに参加するか、いつかGitHub経由でMetaに招待できるかもしれません)。
編集:
こちらが開発者のようですので、Metaにいるのでしょうか? @w4ll3
RGJ
(Richard - Communiteq)
2022 年 7 月 4 日午後 6:01
10
「いいね!」 3
MarcP
(MarcP)
2022 年 7 月 4 日午後 7:20
11
これは機能することを確認できます!マイケルさん、ありがとうございます。
「いいね!」 1
michaeld
(Michael - Communiteq)
2022 年 7 月 4 日午後 7:34
12
「いいね!」 5
SpruceチームのRoccoです。公式フォーラムでは少し遅くなりましたが、こんにちは。
修正していただきありがとうございます、@michaeldさん 。おかげで問題は解決し、こちらでもドキュメントを更新しました。この件を取り上げていただき、重ねて感謝いたします。私たちは現在もSign-In with Ethereumに関する開発とメンテナンスを積極的に行っています。
また、お伺いしたいのですが、将来的にはこれが公式にサポートされるプラグインになる可能性はありますか? Discourseは素晴らしいので、セルフホストされていないインスタンスにもこの機能拡張を検討したいと考えています。
「いいね!」 2
michaeld
(Michael - Communiteq)
2022 年 7 月 20 日午前 6:12
14
明確にするために、Communiteq はマネージドホスティングプランでもこのプラグインをサポートしており、Professional プラン以上で利用可能です。
「いいね!」 3
michaeld
(Michael - Communiteq)
2022 年 7 月 20 日午後 4:30
16
謝る必要はありません!公式ホスティングには(まだ?)ありません。これらのweb3プラグインへのコミットメントを強調したかっただけです。
「いいね!」 3
残念ながら、公式にはサポートされていないプラグインです。
しかし、Commiteq社のサポートには間違いなく称賛に値します!Web3ユーザーをサポートするためなら何でも素晴らしいことです。
こちら側では、Sign-In with Ethereumの採用をサポートするためのさまざまな方法に取り組んでおり、Discourseは常に私たちのリストのトップにありました。そのため、標準化EIP-4361 後にプラグインを作成しました。もう一つ常に考えていたのは、それに他に何を追加するかということです。カスタムRPCプロバイダーが最初の要素の1つです。
「いいね!」 3
Ashley87
(Ashley Zimmerman)
2022 年 9 月 21 日午後 1:30
18
このプラグインが機能しません。プラグインのインストールに問題があり、インストールできません。どなたか代替案を共有していただけますか、またはこのプラグインについて手助けしていただけますか? @michaeld @RGJ
RGJ
(Richard - Communiteq)
2022 年 9 月 21 日午後 1:55
19
Ashley Zimmerman:
プラグインのインストールに問題があります
ヘルプが必要な場合は、詳細を共有する必要があります。
「いいね!」 1
Ashley87
(Ashley Zimmerman)
2022 年 9 月 22 日午前 7:58
20
@RGJ このプラグインをインストールしようとすると、次のようなエラーでリビルドが失敗します。
/var/www/discourse/plugins/discourse-siwe-auth/plugin.rb で gem rbsecp256k1 を指定していますが、存在しません!
探した場所: /var/www/discourse/plugins/discourse-siwe-auth/gems/2.7.6/specifications/rbsecp256k1-5.1.0.gemspec