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

miauthで簡単にWebサービスにログインできるシステム #6623

Open
syuilo opened this issue Aug 5, 2020 · 12 comments
Open

miauthで簡単にWebサービスにログインできるシステム #6623

syuilo opened this issue Aug 5, 2020 · 12 comments
Labels
✨Feature This adds/improves/enhances a feature

Comments

@syuilo
Copy link
Member

syuilo commented Aug 5, 2020

Summary

Motivation

現状、Webサービス側でセッション情報を保持していない限り、WebサービスにMisskeyアカウントでログインするときはその都度Miauthでアクセス許可をしてトークン発行がされる。
Misskey側で、ひとつのWebサービスはひとつのトークンを使いまわせるようにすると便利なため、そうしたい。

アクセス許可の際に、ブラウザでリファラを取得しておく。そうするとどのWebサービスから来たのかわかるため、トークンにもその情報を付けておく。
次にアクセス許可を求められた際は、まずその時のリファラと一致するトークンがデータベースに既に無いか確認し、あれば許可しているものとしてそのトークンをレスポンスとしてリダイレクトする。
そうすることで、ユーザーは何の操作も必要なしにログインできる。

@syuilo syuilo added the ✨Feature This adds/improves/enhances a feature label Aug 5, 2020
@syuilo
Copy link
Member Author

syuilo commented Aug 5, 2020

この方法で何かセキュリティリスクとか脆弱性が発生し得ないか確認していただきたく
CC: @rinsuki @mei23 @acid-chicken @Xeltica @tamaina

@acid-chicken
Copy link
Member

字面だけ見ると攻撃に対してあまり強くなさそう(リファラと何らかの追加情報さえあればトークン盗める?)に見えるけど、具体的にどういうフローなんだろう

@syuilo
Copy link
Member Author

syuilo commented Aug 5, 2020

リファラ情報さえ有ればトークン取得できるけど、ブラウザでリファラを偽装することは不可能なのでその点は大丈夫そう

@mei23
Copy link
Contributor

mei23 commented Aug 5, 2020

Webサービス側でセッション情報を保持していない限り

これはWebサービス側でセッションなりアクセストークンを保持しておけばいいのではと

外部Webサービス側から再リクエストしてくる理由が、
ただの手抜きなのか意図しているのかわからないので、特にMisskey側でで補完するべきものでもない気がします。

@syuilo
Copy link
Member Author

syuilo commented Aug 5, 2020

これはWebサービス側でセッションなりアクセストークンを保持しておけばいいのではと

そういえばセッションあっても別のブラウザからログインする時とかはセッションないのでやっぱりトークン複数作られることになる

@rinsuki
Copy link
Contributor

rinsuki commented Aug 5, 2020

リファラ切ってるユーザーが使えなさそう

@rinsuki
Copy link
Contributor

rinsuki commented Aug 5, 2020

あと連携サービス先にオープンリダイレクトがあるとやばそう

@rinsuki
Copy link
Contributor

rinsuki commented Aug 5, 2020

あとドメイン失効した時が怖い

@syuilo
Copy link
Member Author

syuilo commented Aug 5, 2020

あとドメイン失効した時が怖い

ドメインに関してはこの機能実装しなくても危険性ありそう
例えば前のサービスと全く同じデザインにしてアクセス許可求めたらユーザーは分からないから許可しそう

@syuilo
Copy link
Member Author

syuilo commented Aug 5, 2020

リファラ切ってるユーザーが使えなさそう

使えないユーザーは単に今までの手順になるだけだからそこは無視で良さそう

@Johann150
Copy link
Contributor

Johann150 commented Nov 16, 2021

I am currently implementing something that needs log out & log in again. Users can manually log out if they wish (for example if they are using multiple fediverse accounts on the aplication this is necessary) but logging back in with Miauth will generate a new API token.
When using the legacy authentication method, this works fine because the app has to be registered first (this is not documented well). So I think I can continue using the legacy authentication for now? Are there any plans of removing the legacy authentication system?

@syuilo
Copy link
Member Author

syuilo commented Feb 12, 2022

Probably it is more worthwhile to implement OAuth2 than to devote resources to revive legacy authentication or enhance MiAuth like this Issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨Feature This adds/improves/enhances a feature
Projects
None yet
Development

No branches or pull requests

5 participants