-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
アプリケーションを廃止 #5656
Comments
その都度生成がほぼ必須なクライアントアプリならそれでもいいかもしれないが、サーバー側で一回生成したアプリを使い回せるサードパーティーWebサービスへのログインだとアクセストークンが毎回生成されるのはだるそうな気がする |
ユーザーが自由にアクセストークン的なものを発行できるようにして、それをアプリに入力させる方法はどうでしょう |
面倒くさそう |
(それはそれとしてその機能は書き捨てスクリプトとかに便利そうなので別で欲しい) |
今もそうなのでは...?(毎回というか一回の要求に対してだけど)
権限とかはアプリ側で指定する必要がありますし、そこまで思い切るのは厳しいかなと |
ユーザーが自由にアクセストークン的なものを発行する方式でも、実装の仕方によっては今まで通りボタンのクリックのみで完結させることはできそう: 例えば
とかどうかな |
アクセストークンを保存しておけば、同じアプリ/Webサービスのアクセストークンが何個も生成されるということは無くなると思う |
トークン発行ページがクエリ文字列とかを受け付けて、必要なら名前とかを変えてOKボタン押すだけみたいな感じ? |
そうそう |
支障はなさそうだけど、事情に詳しくないユーザーが変なふうに権限やコールバックURLを編集し、アプリ作者に動かないと文句を言うというのが想像できるので、最初は編集不可にしておいて変更するときは変更ボタンを押してからできるようにするみたいな画面にするのが望ましそう |
アクセストークンを保存とは…? |
Webサービスが自分のデータベースに保存するなど |
ログインの時点では誰だかわからないのでアクセストークンわからなさそう |
ふーむ |
あー、Misskeyアカウント自体をアプリのログイン時の認証としている場合はアクセストークンを使い捨てることになるってことか |
ログインの時点で誰だかわかるシステムを新たに作るとか? |
個人的にはWebサービス用にアプリを残してスタンドアローンアプリ用の仕組みを別途作るのがよい気がする |
なるほど |
いろいろ考えてもやはりアプリ形式が板な気がするし、アプリ形式を「アプリ」じゃなくて「使い回すと前回と同じアクセストークンがもらえる認証リクエスト」と思うといいのかもしれない |
UI上(開発者センター)でアプリ作成できるようにする必要ってなさそうかな |
互換性は残しつつも、「アプリ」という名称は変えた方が良さそうだなぁ |
クライアントアプリでアクセストークンが毎回生成される時点で、Webサービスだけ特別扱いして使いまわせるようにする必要も特にないのかなと思えてきた |
でも同じWebサイトにログインするたびにアプリ連携のところにWebサイト増えてったら嫌じゃない? |
そもそもなんでクライアントアプリだとアクセストークン毎回生成しないといけないんだっけ |
端末間でアプリのClientID/Secretを共有する方法がないから |
全然知らないWebサービスに、許可なく自分のアカウントIDだけでも分かってしまうのってプライバシー的に何か問題あるかな? |
問題あるか |
uuid重複したらどうなるのこれ |
既に使われたUUIDはサーバーサイドで弾くことを予定 |
UUID自己申告よりサーバーにpermissionsとcallback送ってUUID返してそのUUIDでページに飛ばすみたいな仕組みのほうが便利そう (サーバーの対応/非対応判定もできるし) |
あとcallback URLに直接tokenが飛んでくるの各所のアクセスログに残るのであまりよくなさそう |
クライアントの実装の手間がひと手間増えないかな |
ほう この点は変えても良いかもしれない |
tokenの代わりにUUIDを付けてリダイレクト?と思ったけどそれ実質token付けてるのと同じか |
アクセスログについては気にしなくてもよい気がする |
|
あとこれ名前とか指定できないけどただの付け忘れ? どこでどの端末で認証したかだけじゃどのサービスのトークンかわからなくなりそう |
自己申告だからいくらでも偽装とか出来そうだし敢えて入れなかった |
でも後から何が何だかわからなくならない? |
何が何だかわかる必要ってあるかな |
このアプリやっぱ気に食わないな〜権限取り上げてえ〜って時 |
とりあえず名前(とかアイコンとか)設定可能にするか |
ので、UUIDを返して、UUIDから取れるのは一回限り、みたいにしたほうがまだセキュアそう (本当はUUIDを返すついでにclient_secretも返してそれが必要になるほうがいいと思うけど、それもう現行のアプリケーションじゃん) |
なるほど |
というかもう現行のアプリケーションの名前変えるだけでいいのでは?実は |
でも名前変えるにしろうまい名前思いつかないし、別に現状でいいのではって思う (/dev/でアプリ作れなくていいのは賛同するけど、v12で/dev/ごと消えたっぽいし) どうせ現行のアプリ仕様だろうがトークン毎回発行にしようが結局ユーザーにトークン一覧を出してrevokeさせる以上は大量に(アプリ名)っていうトークンが並ぶのは変わらないし… (それはそれとして、強いて言うならアプリorセッション作るときに端末名とかの認証したユーザーだけに見える付加情報を入れられるようにするといいかもしれない) |
アプリ作成の手間だったり、シークレットキーという概念だったり、セッション作成API叩く手間だったり、sha256する手間だったりを削れたらいいなというのもモチベーションのひとつではある |
ふ〜む |
シークレットキーはどうしようもなさそう |
あとこの方法だと権限をユーザーが設定できるというのがある |
やった |
Summary
https://misskey.io/notes/7zfchyqpdt
https://misskey.io/notes/7zfczb7wh0
app/create
でログインなしに誰もが大量にアプリケーションを作成できるようになった今、APIキー(i)の生成手順としてのアプリケーションのというのがあまり意味を成しておらず形骸化しており、アプリケーションを廃止してもいいのではないでしょうか。新手順(案)
DBやマイグレーションのことはあまり考えていませんがそんなに難しくないはず
1.
auth/session/create
に今までapp/create
に渡していたようなデータを渡すtoken
(例:798b9f6e-248d-43a7-a919-fabc664027f1
)とurl
が返ってくるのは現在と同様だが、新たにid
(アクセスID(?), aid 例:81jci5eqr0
)が加わる。これをappSecretの代わりとする。2. accessTokenを問い合わせる
ユーザーの認証が終わって
{ callbackUrl }?token=798b...
にアクセスされたらauth/session/userkey
にappIdとtokenを送信accessToken
が返ってくるのは今までと同様。3. APIキー(i)の生成
appSecretがidに変わっただけ
The text was updated successfully, but these errors were encountered: