NIP-05認証バッジの付け方
自分のホームページなどをお持ちの方は、外部からアクセスできるディレクトリに .well-known/nostr.json をつくり、以下の内容を書いてください。
code:json:nostr.json
{
"names": {
"ここにあなたのID": "ここにあなたのHEX公開鍵。npub...の形式は使えないので、後述のツールで変換"
}
}
複数記述することもできます。
code:nostr.json
{
"names": {
"ここにあなたのID": "ここにあなたのHEX公開鍵 - npub...の形式は使えないので注意",
"ここに二人目のID": "ここに二人目のHEX公開鍵 - npub...の形式は使えないので注意"
}
}
なお、IDを_アンダースコアのみにすると、ドメイン管理者とみなされてクライアントの表示されるときに
ドメインだけが表示されるようになります。(対応しているクライアントのみ)
code:nostr.json
{
"names": {
"_": "ここにあなたのHEX公開鍵。npub...の形式は使えないので、後述のツールで変換"
}
}
実際の例
配置する場所は nostr.directory の .well-known/nostr.json
code:nostr.json
{
"names": {
"jack": "82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2"
}
}
npub...形式の公開鍵をHEX公開鍵(16進文字列)に変換する方法
一部のクライアントは直接Hexと書いてあるボタンからコピーできる
プロフィールの設定
その後、お使いのNostrクライアントのプロフィール設定 -> NIP-05の欄に、JSONに記述したID@あなたのドメインを入力します。
例えば筆者の場合、 h2so4@personal-portal.vercel.app になりましたh2so4.icon
上の例だと jack@nostr.directory よくあるミス
公開鍵がHEXでなくnpubになっている
アクセス可能なディレクトリの直下にnostr.jsonを作っている
.well-knownフォルダを作成しその下に格納する必要があります
公開鍵ではなく秘密鍵を置いてしまっている
これまでに複数の事例あり、秘密鍵流出事案となるためすべてアカウント作り直しとなった yto.icon
変換サイトに入力するときは、必ずnpub〜から始まる文字列を貼り付けましょう。間違ってもnsec〜から始まるものを使わないように… heguro.icon
IDに英大文字を使ってしまっている
IDに使える文字は a-z と 0-9 と - _ . のみです (仕様) yto.icon Github Pages で認証されない
理由: GitHub Pagesでは .well-known が無視されてしまう
GitHub Pagesのデフォルトの静的サイトジェネレータであるJekyllが、.で始まるファイル、すなわち.well-knownを無視するので、.nojekyllという空ファイルを一番上のディレクトリに置いてJekyllを使用しない設定にした上でgit pushする必要がありました。GitHub docs takaria0.icon ルートに .nojekyll の名の空ファイルを置くと認証される。その他下記参照 koteitan.icon
Jekyllを使っている人は _config.yml に include: [".well-known"]と書くと含めると良いそうです 参照 自分のドメインを所有していない場合
自分のドメインを所有していなくても、github pages とか vercel とかでホストしたWebサイトのメディアとしてJsonを格納しても成功します。h2so4.icon
この機にちょっとしたポートフォリオなど作成してみては?h2so4.icon
「認証を付けてくれるWebサービス」のたぐいは、有名なものは一部クライアントではバッジがつかない or 横線が引かれる、など検知されることがあります。
Snortでは取り消し線が引かれるらしい?
されないサービスもあるかも知れませんが、いずれされるでしょう
あれ、そうなんですか?少なくとも iris.to では横線が引かれるのは認証が通っていない(正しい公開鍵でない・CORS設定等でアクセスできない)ときの表示だと思うのですが、仕様に準拠していてもそのような表示になることはあるのでしょうか?hideyoshi.icon
クライアント独自でそのような機能を作ることはできると思いますが、だとしたらそのような blocklist を公開していそうな気がしますhideyoshi.icon
Snortで横線が引かれているというPostを見た気がしたのですが、検索しても見つけられずorz もしかしたら誤りかもしれません。h2so4.icon
でも、.co.jp や .gov といったドメイン以外でこの認証によってバッジをつける意味はあまりない気がするので、他におもしろい使い方を考えられると楽しそうですねhideyoshi.icon
その他Tips
CORS 設定でハマっている人もよくみる気がしますhideyoshi.icon
そうですね、認証を通すためにはCORSを有効にする必要がありますねh2so4.icon
CORSの設定についての公式の解説
nostr.jsonへはhttpsにて取得しにくるようなので、格納するサーバにSSL必須TKG3.icon
NIP-05欄を 識別子@ドメイン/hoge とした場合には ドメイン/hoge/.well-known/ を見に行ってくれるクライアントが多いです heguro.icon
実装によっては表示にも反映されるので、 .well-knownまでのパスを絵文字にして遊べたりします
本来.well-knownはドメインのトップに置く必要がある(RFC8615)ため、全てのクライアントが同様の挙動をしてくれるとは限らず、あまり推奨はされません 一部のレンタルサーバは、Cookieがないとレスポンスを返さない?