Nostrアカウントの認証(NIP-05)

はじめに

前回の投稿「Nostrアカウントの作成(Damus, Amethyst, snort.social)」の続きです。
今回はNIP-05 の認証をします。

自身で管理するWeb サーバのドメイン名とNostr アカウントを紐づけることで、Nostr アカウントのプロフィール欄にドメイン名を認証バッジ付きで表示させることができます。
Nostr アカウントがそのドメインの所有者であることを証明することになるので、第三者がそのNostr アカウントがなりすましでないことを確認できるようになります。

1. Web サーバに認証用のファイルを配置

自身で管理するWeb サーバの<domain>/.well-known/nostr.json で参照できる場所に下記のファイルを配置します。

{
  "names": {
    "<name>": "<pubkey>"
  }
}

3行目は自身のNostr アカウントの情報に書き換えます。

  • name
    • Nostr アカウントのUsername(先頭の@ を除く)
  • pubkey
    • Nostr アカウントの公開鍵(HEX 形式

今回、下記のように書き換えました。

{
  "names": {
    "GiantRodent": "94e3a1c166f4fea85b94870219e6461de923296f3fe4736b24c3e23b4c0c43e4"
  }
}

公開鍵(HEX形式)

nostr.directory にアカウントを登録している場合は、NIP-09 のhexPubKey にHEX 形式の公開鍵が表示されているので、ここからコピーして使えます。

nostr.directory > NIP19
nostr.directory > @RodentGiant

Damus のKey Converter というページで、npub で始まる公開鍵を入力してHEX 形式に変換することもできます。

Damus > Key Converter

ファイルを配置(CLI)

Web サーバの公開ディレクトリに認証用のファイルを配置します。
サーバにSSH 接続して下記のコマンドでファイルを配置しました。

mkdir .well-known
cd .well-known
touch nostr.json
chmod 644 nostr.json
vi nostr.json
→ 前述のJSON を貼り付け

2. Web サーバの設定でCORS を許可する

Web サーバの設定ファイルに、CORS を許可する設定を追記します。

Apache

Header set Access-Control-Allow-Origin "*"

nginx

add_header 'Access-Control-Allow-Origin' '*';

3. Nostr アカウントにNIP-05 の識別子を登録

Nostr アカウントにNIP-05 の識別子を登録します。

今回はDamus を使って登録します。
アカウントのプロフィールを編集するページで、<name>@<domain> という形式でNIP-05 の識別子を登録します。

  • name
    • Nostr アカウントのUsername(先頭の@ を除く)
  • domain
    • Webサーバのドメイン名
Damus > Account > Profile > Edit (NIP-05)
Damus > Profile > NIP-05 Verification

今回は [email protected] を登録しました。

登録してプロフィール画面に戻ると、認証バッジ付きのドメイン名が表示されるようになっていました。
細かいですが、実際には画面が表示されてから2〜3秒後に表示されました。

Damus > Account > Profile
NIP-05 認証前
Damus > Account > Profile (NIP-05認証済)
NIP-05 認証後

nost.directory のページを見ると、NIP-05 の認証バッジにチェックが入っていました。

nostr.directory > NIP-05 (認証済)
nostr.directory > @RodentGiant (NIP-05認証済)

あとがき

NIP-05 の認証はスムーズにできました。

nostr.directory にTwitter の認証バッジがあるので、これにもチェックを入れたいのですが上手くできず。
また時間がある時に試してみようと思います。

参照