Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
RShirohara opened this issue Apr 10, 2023 · 9 comments
Labels
🐛Bug Unexpected behavior 🌌Federation The Federation/ActivityPub feature packages/backend Server side specific issue/PR

Comments

@RShirohara
Copy link

💡 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 RShirohara added the ⚠️bug? This might be a bug label Apr 10, 2023
@saschanaz saschanaz added 🐛Bug Unexpected behavior and removed ⚠️bug? This might be a bug labels Apr 10, 2023
@EbiseLutica EbiseLutica added packages/backend Server side specific issue/PR 🌌Federation The Federation/ActivityPub feature labels Apr 15, 2023
@syuilo
Copy link
Member

syuilo commented May 2, 2023

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

@mei23
Copy link
Contributor

mei23 commented Jul 6, 2023

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

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

@saschanaz
Copy link
Member

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

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

@mei23
Copy link
Contributor

mei23 commented Jul 6, 2023

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

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

@saschanaz
Copy link
Member

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

@mei23
Copy link
Contributor

mei23 commented Jul 6, 2023

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

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

@saschanaz
Copy link
Member

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

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

@mei23
Copy link
Contributor

mei23 commented Jul 6, 2023

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

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

@mei23
Copy link
Contributor

mei23 commented Jul 6, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛Bug Unexpected behavior 🌌Federation The Federation/ActivityPub feature packages/backend Server side specific issue/PR
Projects
None yet
Development

No branches or pull requests

5 participants