IndieAuth( https://indieweb.org/IndieAuth )はOAuth2拡張の1つで、Webページ自体をアカウントとして成立させる仕様となっている。昔なつかしの、ConnectじゃないOpenIDみたいな仕様。
で、これの実装としてIndieAuth.comが有り、これはPGP公開鍵単体でアカウントを成立させることができる。
やりかたは簡単で、
<a rel="pgpkey" href="https://keybase.io/okuoku/pgp_keys.asc">PGP公開鍵</a>
のように、 pgpkey
入りの rel
属性を持ったリンクをHTMLに入れるだけになっている。
アカウントの準備
...アカウントの準備といっても、PGP公開鍵へのリンクが入ったHTMLを適当なところでホストするだけで良い。今回はGistを使っているが、Glitch.meとかGitHub Pagesとか何かHTMLが適切なcontent-typeで送出されるところであればどこでもOKとなる。
PGP公開鍵の準備
適当に準備する。 https://keybase.io/ とかGnuPGなりなんなりをインストールするとか。
Gistの準備
https://gist.github.com/ にログインしてPGP公開鍵とHTMLを投稿する。HTMLにはPGP公開鍵のURLを書かないといけないが、とりあえず適当にしておく。
<!DOCTYPE html>
<html lang="en">
<head>
<title>profile</title>
<meta charset="utf-8">
</head>
<body>
<a rel="pgpkey" href="https://keybase.io/okuoku/pgp_keys.asc">my pgp public key</a>
</body>
</html>
投稿すると "Raw" ボタンが有るので、それぞれのURLを取得しておく。
URLの取得とページの書き換え
GitHack https://raw.githack.com/ にRawボタンをクリックして飛んだ先のURLを入力し、Productionの方のURLを入手する。今回は以下のようなURLが入手できた:
- HTML: https://gistcdn.githack.com/okuoku/f9061275a52ecbb449ff5a8dbe0074ae/raw/e053b0fe1db90a497a4874726810240b1a019db5/profile.html
- PGP公開鍵: https://gistcdn.githack.com/okuoku/f9061275a52ecbb449ff5a8dbe0074ae/raw/8fe65de36190cf571966bec8893d0b4451052790/pubkey.asc
PGP公開鍵のURLを取得したら、そちらを指すようにHTMLの方を書き換えておく。
実際のログイン
https://indieauth.com/setup の下部にお試し用のログインフォームが有るため、これを使ってログインを試すことができる。URLはHTMLの方のgistcdnのURLを入力する。
入力するとテキストデータ(JWT)を署名するように求められるので、秘密鍵で署名する。IndieAuthのページ https://indieauth.com/pgp ではMacOSのGPG Toolsを使った方法とkeybase.ioを使った方法が紹介されている。Windowsの場合はGPG4Winに収録されている、Kleopatraを使うのが簡単。
- 署名する文字列をクリップボードにコピーする
- タスクトレイのKleopatraを右クリックして クリップボード → OpenPGP署名... を選ぶ
- ウィザードに従って署名するとクリップボードに署名済の文字列がコピーされる
- ブラウザにペースト
ちなみに署名させられるJWTは以下のような内容を HS256
署名したものとなっている。
{
"me": "https://gistcdn.githack.com/okuoku/f9061275a52ecbb449ff5a8dbe0074ae/raw/e053b0fe1db90a497a4874726810240b1a019db5/profile.html",
"profile": "https://gistcdn.githack.com/okuoku/f9061275a52ecbb449ff5a8dbe0074ae/raw/8fe65de36190cf571966bec8893d0b4451052790/pubkey.asc",
"redirect_uri": "https://indieauth.com/success",
"state": null,
"scope": null,
"nonce": 970530,
"created_at": 1549118458
}
感想
Mailvelopeに対応してよ!(去年末のアップデートで、PC上のGnuPGを直接呼び出せるようになった)
ちなみに最初は Qiita投稿をアカウントにする でやろうと思ってたけど、 QiitaはHTMLタグに属性を入れられないので上手くいかなかった。