Skip to content

AUTH

createRxNostr()authenticator オプションを設定すると、rx-nostr はNIP-42 に基づく AUTH メッセージを自動でハンドリングするようになります。この機能が有効化されている場合、auth-required のステータスで拒否された REQ または EVENT は AUTH の成功後に自動で再送されます。

もっともシンプルな設定は authenticator: "auto" です。これは RxNostr に与えられた signer を使用して AUTH メッセージに応答します。ほとんどのユースケースではこの設定で十分のはずです。

ts
import { createRxNostr } from "rx-nostr";

const rxNostr = createRxNostr({ authenticator: "auto" });

より高度なユースケースに対応するため、authenticatorsigner をオプションに取ることができます。これにより、通常のイベント発行時とは異なる署名器を用いて AUTH メッセージを作成できます:

ts
import { createRxNostr } from "rx-nostr";
import { seckeySigner } from "rx-nostr-crypto";

const rxNostr = createRxNostr({
  signer: seckeySigner("nsec1aaa..."),
  authenticator: {
    signer: seckeySigner("nsec1bbb..."),
  },
});

また、リレーごとに異なる署名器を使いたい場合のために、関数形式の指定も可能です。例えば以下の例では、wss://nostr.example.com でのみ AUTH メッセージに応答し、他のリレーでは AUTH を無視します:

ts
import { createRxNostr } from "rx-nostr";

const rxNostr = createRxNostr({
  authenticator: (relayUrl) => {
    if (relayUrl === "wss://nostr.example.com") {
      return "auto";
    } else {
      return undefined;
    }
  },
});