misskey icon indicating copy to clipboard operation
misskey copied to clipboard

`username` の大文字と小文字を区別するインスタンスで WebFinger リクエストに失敗する

Open RShirohara opened this issue 1 year ago • 9 comments

💡 Summary

username の大文字と小文字を区別する ActivityPub 実装 (e.g. cloudflare/wildebeest) では、WebFinger リクエスト内の resource クエリパラメータでも大文字と小文字が区別され、別のユーザとして扱われます。

1. 重複するユーザが存在しない場合

image

2. 重複するユーザが存在する場合

image

Misskey は WebFinger リクエストを生成する際に username を小文字へ正規化するため、上記のような ActivityPub 実装からはリモートユーザが取得できません。

🥰 Expected Behavior

username に大文字を含むリモートユーザの情報を Misskey UI 上で確認できます。

🤬 Actual Behavior

リモートユーザの username に大文字を含む場合、WebFinger リクエストが失敗します。

image
image

📝 Steps to Reproduce

  1. ブラウザを開き、https://<misskey-instance>/<@username@domain> の形式でリモートユーザの情報を取得する

📌 Environment

Additional Info

Mastodon などの殆どの実装で username の大文字と小文字を区別していない (mastodon/mastodon#7658) ことは理解していますが、明確な仕様として定義された文章を確認できませんでした。

RShirohara avatar Apr 10 '23 16:04 RShirohara

区別するインスタンスはサポートしないで良いかも

syuilo avatar May 02 '23 03:05 syuilo

区別するインスタンスはサポートしないで良いかも

大文字と小文字を区別して一意性制約とするデータベースと 大文字と小文字を区別せずに一意性制約とするデータベースの同期など出来ないから それでいいというかそうせざるを得ないと思うわ。

mei23 avatar Jul 06 '23 19:07 mei23

WebFinger リクエストを生成する際に username を小文字へ正規化するため

これしなかったらどうなりますか?

saschanaz avatar Jul 06 '23 19:07 saschanaz

これしなかったらどうなりますか?

相手側に大文字小文字違いの重複ユーザーがいなかったら、いちおう取得(&認識)できると思うのだわ。 ただし、相手側に大文字小文字違いの重複ユーザーがいた場合は 結局重複している方のユーザーはDBにINSERT出来なくて存在しないことにされると思うのだわ。

mei23 avatar Jul 06 '23 19:07 mei23

つまりなくても何かが新しく壊れることはないと

saschanaz avatar Jul 06 '23 19:07 saschanaz

つまりなくても何かが新しく壊れることはないと

大文字小文字違いの重複ユーザーがいない場合のみうまく動くようになるが それ以外の場合は動作不定になるのでどちらかがベターかは私には判断できないわ

mei23 avatar Jul 06 '23 20:07 mei23

それ以外の場合は動作不定になる

二つのノートのactorが大文字小文字違いの重複ユーザーだったらいまでも動作不定になりそうですがどうでしょう

saschanaz avatar Jul 06 '23 21:07 saschanaz

二つのノートのactorが大文字小文字違いの重複ユーザーだったらいまでも動作不定になりそうですがどうでしょう

確かにidの方はスキーマ上はcase sensitiveだわね。 かと言ってusernameの方をcase sensitiveに寄せられないし、めんどくさいわね。

mei23 avatar Jul 06 '23 21:07 mei23

確かに、WebFingerでlowercaseを使う理由は特にない。 lowercaseを使わないようにすれば、このIssueの問題である「WebFinger リクエストに失敗する」は解決する。 (その解決されたユーザーがDBにINSERT出来て認識出来るかどうかは保証できない) ではあるわね。

mei23 avatar Jul 06 '23 21:07 mei23