ATOMO: what our apps call ATProto OAuth login. Client metadata for each app, and the Swift parts. アトモ:ATProto の共通認証(OAuth)の呼び名。アプリごとの client
atomo README.ja.md
3.3 kB · 41 lines
Markdown
at main

ATOMO #

ATOMO(アトモ)は、ATProto の共通認証(OAuth)をわたしたちのアプリで呼ぶ名前だ。ボタンは「ATOMO でログイン」と書く。

English

名前 #

手本は IC 乗車券の名前だ(Suica・ICOCA・PASMO)。短く、カタカナで読め、「〇〇で乗る」と同じく「〇〇でログイン」と書ける。

  • AT と「友(とも)」を重ねた。Atmosphere の友だちとして、どのアプリにもついてくる
  • イタリア語・スペイン語では「原子」だ。分けられない1人として、どのアプリでも同じ自分だ

印 #

中を空けた光の輪だ。ハンドルを打つと、輪の中にその人のアイコンが入る。どのアプリでも同じ自分がそこに入る、という意味だ。

ブルスコのログインの画面。左上に中が空の光の輪、ハンドルの欄は空で、右下に輪の印の付いた「ATOMO でログイン」のボタン。 ハンドルの欄に moja.blue と打ったところ。光の輪の中に moja.blue のアイコンが入っている。

「ATOMO でログイン」を押すと輪が呼吸を始め、ブラウザで Bluesky の認可の画面が開く。パスワードはアプリに渡らない。輪がふだん止まっているのは、ほかの光(新しい知らせなど)と見分けるためだ。

押したあと。アイコンを囲む輪が明るく光り、ボタンの字が「ログイン中…」になっている。

このリポジトリ #

アプリごとの OAuth の client metadata を置き、Tangled の sites で配る。

アプリ client_id 戻り先
blusco https://moja.tngl.io/atomo/blusco.json io.tngl.moja:/callback
Re: https://moja.tngl.io/atomo/re.json io.tngl.moja:/callback
kamikire https://moja.tngl.io/atomo/kamikire.json io.tngl.moja:/callback
bianco https://moja.tngl.io/atomo/bianco.json io.tngl.moja:/callback
nirvana(iOS) https://moja.tngl.io/atomo/nirvana.json io.tngl.moja:/callback
  • ネイティブアプリの public client だ(token_endpoint_auth_method: none)。PKCE・PAR・DPoP を使う
  • 戻り先は client_id のホスト名を逆にしたスキームだ。同じホストのアプリは同じスキームになるが、認可の画面(ASWebAuthenticationSession)が戻り先を自分で受けるので、アプリ同士でぶつからない
  • ファイルの名前を替えると client_id が変わり、入っている全員のセッションが更新できなくなる。替えない
  • Atomo.swift は Mac のアプリで ATOMO に入る部品だ(Foundation と CryptoKit だけを使う)。AtomoWindow.swift は AppKit のアプリのための印とログインの窓だ。Re: と kamikire はこの2つを写して持つ