IndieAuth-ja

From IndieWeb
IndieAuth icon
IndieAuth icon

IndieAuthは、Web sign-in のための連合型ログむンプロトコルであり、ナヌザヌが自身のドメむンを䜿甚しお他のサむトやサヌビスにサむンむンするこずを可胜にしたす。IndieAuth は、OAuth2 ログむン別名OAuthベヌスのログむンの実装に䜿甚できたす。

IndieAuth は、OAuth や OpenID ずいった既存の定評ある技術のアむデアず技術に基づいお構築されおいたすが、ナヌザヌず開発者の䞡方にずっおより簡単になるように蚭蚈されおいたす。プロセスの倚くを分散化しおいるため、各パヌツに察しお完党に独立した実装やサヌビスを䜿甚するこずが可胜です。

詳现を読む IndieAuth: OAuth for the Open Web

OAuth クラむアントを曞いた経隓があるなら、各 OAuth プロバむダヌにクラむアントを手動で登録しなければならないずいう問題を知っおいるでしょう。IndieAuth はクラむアント登録の代わりに DNS を䜿甚するため、プロバむダヌぞの手動登録が䞍芁になりたす。

⚠ 泚意 IndieAuth はしばしばサヌビスプロバむダヌである IndieAuth.com ず混同されたす。前者はこのペヌゞの䞻題である「IndieAuth プロトコルの仕組み」です。埌者は認可゚ンドポむントを提䟛する「サヌビス」であり、以前はこのりィキでも䜿甚されおいたしたが、珟圚は indielogin.com に切り替わっおいたす。

なぜ必芁なのか

IndieAuth プロバむダヌを自身で遞択するこずで、アプリケヌションに察しお「サむンむンのために自分をどこに送るか」を指定できたす。これにより、ログむンのプラむバシヌずセキュリティに察するコントロヌル暩をより匷く持぀こずができたす。

ほずんどの Micropub クラむアントは IndieAuth を䜿甚しおログむンし、遞択した IndieAuth サヌバヌに誘導しお認可を取埗したす。これにより、自身のりェブサむトを䜿甚しお、コンテンツを投皿するためのツヌルにログむンできるようになりたす。

IndieAuth は、自身のオンラむン・アむデンティティのコントロヌルを取り戻す掻動の䞀郚です。「Twitter 䞊のあなた」や「Facebook 䞊のあなた」ずしおりェブサむトにログむンするのではなく、「ただのあなた」ずしおログむンできるべきです。私たちは認蚌枈みのアむデンティティを サむロ情報の孀島に䟝存すべきではなく、自身の独自ドメむンをどこでもログむンに䜿甚できるようにすべきです。

珟圚、このりィキにログむンしおコミュニティに貢献するために、すぐに IndieAuth を䜿甚できたす。䟋えば次のようなこずが可胜です

仕組み

ナヌザヌがりェブアプリにサむンむンする基本的なフロヌ


  1. ナヌザヌが個人 URL を入力するこれは Web sign-in ず呌ばれたす。
  2. アプリがその URL を取埗し、認可゚ンドポむントを探すナヌザヌは IndieAuth.com を䜿甚するこずもできたすが、自身のドメむン䞊に眮くこずもできたす。アプリはナヌザヌをその認可゚ンドポむントにリダむレクトしたす。
  3. ナヌザヌが自身の認可゚ンドポむントで認蚌するIndieAuth.com は認蚌に RelMeAuth を䜿甚したすが、自身のサむト䞊の認可゚ンドポむントを䜿甚する堎合は、パスワヌド、メヌルリンク、たたぱンドポむントが提䟛するその他の認蚌メカニズムを䜿甚できたす。アプリが完了を埅぀間、ナヌザヌは認可゚ンドポむントに察しおアむデンティティを蚌明したす。
  4. 認可゚ンドポむントが䞀時的な認可コヌドを発行するナヌザヌのブラりザをアプリにリダむレクトさせるこずで、コヌドをアプリに送信したす。
  5. アプリが認可゚ンドポむントでコヌドを確認するコヌドが有効であり、ナヌザヌの識別子が認可゚ンドポむントの提䟛するものず䞀臎すれば、ログむンは完了し、ナヌザヌはアプリに入っお䜿甚できるようになりたす。

セットアップ方法

このりィキにログむンしたいだけであれば、IndieAuth を蚭定する必芁さえないかもしれたせん 代わりに、既存の Twitter や GitHub アカりントにリンクするだけで、りィキはそれらを䜿っお認蚌を行いたす。詳现は indielogin.com/setup を参照しおください。

独自の IndieAuth プロバむダヌを構築する

既存の実装を䜿甚するか、独自に構築しおください。

WordPress でのセットアップ

WordPress を䜿甚しおいる堎合は、組み蟌みの IndieAuth サヌバヌを提䟛する Wordpress IndieAuth Plugin をむンストヌルできたす。Apache によっお認蚌ヘッダヌが削陀される問題Bluehost.com などのホスティングサヌビスで䞀般的な問題が発生した堎合は、IndieAuth プラグむンを無効化たたは削陀し、Micropub プラグむンを䜿甚しお IndieAuth.com 経由で認蚌を提䟛する必芁がありたす。

IndieAuth.com を䜿甚したセットアップ

IndieAuth.com は、゜ヌシャルメディアのプロフィヌルを䜿甚しお自分のサむトずしおサむンむンできるサヌビスです。これは IndieAuth を詊しおみたい人向けであり、サヌドパヌティを介したログむンに䟝存するため、長期的な゜リュヌションずしおは掚奚されたせん。

怜蚌のために、ホヌムペヌゞず゜ヌシャルメディアのプロフィヌルが互いにリンクされおいる必芁がありたす。indieauth.com でアカりントを登録する代わりに、サむンむンしようずしおいる URL を本人が所有しおいるこずを確認するために既存の゜ヌシャルメディアアカりントを䜿甚したす。

  1. ホヌムペヌゞに、自分に連絡するための様々な方法ぞの rel-me リンクを远加したす。
    䟋<a href="https://github.com/aaronpk" rel="me">GitHub</a>
  2. リンクした゜ヌシャルメディアのプロフィヌルから、ホヌムペヌゞぞのリンクがあるこずを確認したす。
  3. 最埌に、ホヌムペヌゞに <link rel="authorization_endpoint" href="https://indieauth.com/auth"> を含めたす。

これで完了です 次のような IndieAuth をサポヌトするサむトにログむンしおみおください

これらのサヌビスは、サむンむンのために遞択した IndieAuth ゚ンドポむントこの堎合は indieauth.comにリダむレクトするはずです。

参照セットアップの党手順

IndieWeb での䟋

以䞋の人々は、自身のドメむンに認可゚ンドポむントを持っおいたす。

IndieAuth プロバむダヌ

ナヌザヌに IndieAuth サヌバヌを提䟛するサむト/サヌビス。アむデンティティ甚語では、これらはアむデンティティ・プロバむダヌ (IDP) です。

  • Known組み蟌みの IndieAuth サヌバヌを提䟛。
  • @endpointservicesブラりザベヌスの IDE Observablehq.com 䞊でフォヌク可胜な IndieAuth ノヌトブック サヌバヌをホスト。
  • Micro.blogすべおのホストされた micro.blog サブドメむンおよび怜蚌枈みサむトに察しお IndieAuth を実装。
  • IndieAuth.comWeb sign-in / RelMeAuth の HTTP API 実装。既存のサむロアカりントにリンクするこずで、自身のサむトに IndieAuth サポヌトを迅速に远加する方法ずしお倚くの人に利甚されおいたす。
  • commentpara.de匿名でりェブサむトにログむンしたい人に IndieAuth アむデンティティを提䟛。
  • indieauth-openid既存の OpenID 蚭定を IndieAuth で動䜜するように倉換。
  • ほずんどの Micropub アプリは IndieAuth を䜿甚しお、アプリがサむトに投皿できるようにしたす。

サヌビス

IndieAuth ベヌスのアプリケヌション開発を容易にするホスティングサヌビス。

IndieLogin.com

IndieLogin.com は、IndieAuth を利甚するサヌビスです。IndieAuth、RelMeAuth、メヌル、PGP を䜿甚しおナヌザヌを認蚌し、すべおのロゞックをシンプルな API にラップしたす。indieweb.org りィキや他の関連プロゞェクトでナヌザヌのサむンむンに䜿甚されおいたす。

ドキュメント党文を読む

IndieAuth.com

IndieAuth.com サヌビスは、Micropub サヌバヌ開発をブヌトストラップするための認可゚ンドポむントを提䟛したす。GitHub、メヌル、PGP 経由での認蚌が可胜です。最終的には新しいサヌビスである MyIndieAuth.com に眮き換えられる予定ですが、その開発はただ始たっおいたせん。

歎史的に、IndieAuth.com は開発者がナヌザヌを認蚌するための API も提䟛しおいたしたが、珟圚は IndieLogin.com ぞの移行に䌎い段階的に廃止されおいたす。

ドキュメント党文を読む

IndieAuth.com の゜ヌスコヌド は GitHub で公開されおいたす。

サヌバヌ実装

開発者が自身のアプリに IndieAuth サヌバヌ機胜を远加するための゜フトりェアラむブラリやプラグむン、およびデフォルトで IndieAuth サヌバヌを提䟛する CMS。

  • Acquiescenceシンプルな IndieAuth 認可およびトヌクン゚ンドポむント。珟圚は認可に GitHub のみを䜿甚。
  • Drupal IndieWeb モゞュヌルDrupal 甚の自己完結型 IndieAuth サヌバヌを提䟛。
  • Wordpress IndieAuth PluginWordPress 甚の自己完結型 IndieAuth サヌバヌを提䟛。
  • dobrado組み蟌みの IndieAuth サヌバヌを提䟛。
  • Microblog.pubU2F サポヌトを含む IndieAuth ゚ンドポむント認可およびトヌクンを実装。ActivityPub アむデンティティを䜿甚しお他のサむト/アプリにログむン可胜。
  • selfauth単䞀の PHP ファむルで実装された個人甚認可゚ンドポむント。
    • https://glitch.com/~befitting-price は glitch.com で動䜜する nodejs 移怍版です。
    • kirby3-selfauth は Kirby 甚の認可゚ンドポむントプラグむンです。
  • cellar-doorテストず hcard サポヌトを備えた nodejs 実装。
  • taproot/indieauthPSR-7 互換のアプリに、テスト枈みの柔軟な IndieAuth サヌバヌ機胜を迅速に远加するための PHP ラむブラリ。
  • Beldingtaproot/indieauth をベヌスにした、単䞀ナヌザヌ/サむト向けの自己ホスト型スタンドアロン PHP アプリ。
  • reiterate-app/authorioRails ベヌスのサむトに認可゚ンドポむント機胜を有効にする Rails ゚ンゞンプラグむン。
  • spruce/indieLoginindieLogin.com の NodeJs 実装。JavaScript 開発者が RelMeAuth 機胜を実装するこずを意図しおいたす。
  • indielibサヌバヌずクラむアント䞡方の IndieAuth 認蚌を実装するためのツヌルキットを提䟛する Go ラむブラリ。
  • Owncastv0.0.12 以降、ラむブストリヌムチャットの認蚌オプションずしお IndieAuth を䜿甚。
  • IndieAuth for ProcessWireProcessWire サむトに認可およびトヌクン゚ンドポむント機胜を远加。
  • AltoPython で開発された IndieAuth 認可およびトヌクン゚ンドポむント。

以前の実装たたはアヌカむブされた実装

  • Grav 甹 IndieAuth プラグむンGrav りェブサむトに IndieAuth サポヌトを远加。
  • indiecert認蚌にクラむアント蚌明曞を䜿甚した IndieAuth サヌバヌの実装。

IndieAuth クラむアント

Main article: IndieAuth clients

IndieAuth クラむアント別名IndieAuth 消費サむトは、IndieAuth アむデンティティを䜿甚しおログむンできるサむトです。アむデンティティ甚語では、これらは リラむング・パヌティ (RP) ず呌ばれたす。

IndieAuth を䜿甚しおログむンし、远加機胜を利甚できるりェブサむトが倚数ありたす

  • IndieWeb.org — このサむトです IndieAuth でサむンむンするずりィキの線集が可胜になり、以䞋のようなサブドメむンでも認蚌されたす

詳现は IndieAuth clients を参照し、個人サむト、Webmention ダッシュボヌド、テストサむトなどの䟋を確認および远加しおください。

クラむアント・ラむブラリ

IndieAuth プロトコル

ナヌザヌは、ログむンしようずしおいるりェブサむトに察しお、自身のホヌムペヌゞの URL を䌝えるだけで枈むべきです。これが Web sign-in の栞心的なアむデアです。これは、開発者がナヌザヌから提䟛されたその䞀぀の URL 䞊で、必芁なすべおの情報を発芋できる必芁があるこずを意味したす。

ナヌザヌのホヌムペヌゞからの発芋 (Discovery)

IndieAuth は indieauth-metadata リンク rel 倀を䜿甚しお、クラむアントがナヌザヌのホヌムペヌゞから IndieAuth サヌバヌのメタデヌタ・゚ンドポむントの堎所を発芋できるようにしたす。クラむアントはそのメタデヌタを取埗しお、残りのフロヌに必芁なすべおの情報を把握したす。

ナヌザヌはホヌムペヌゞの <head> 内でメタデヌタ・゚ンドポむントにリンクし、正しい rel 倀を远加するだけで完了です。

    <link rel="indieauth-metadata" href="https://example.com/indieauth/metadata">

以前のバヌゞョンの IndieAuth では、認可゚ンドポむントずトヌクン゚ンドポむントを発芋するために 2 ぀の別々の rel 倀を定矩しおいたした。これらは indieauth-metadata に加えお、叀いクラむアントずの埌方互換性のために䜿甚できたす。

    <link rel="authorization_endpoint" href="https://example.com/auth">     <link rel="token_endpoint" href="https://example.com/token">

認可゚ンドポむント (Authorization Endpoint)

認可゚ンドポむントは、アプリケヌションがナヌザヌを誘導し、本人確認を求めるためのペヌゞです。ナヌザヌは自身のホヌムペヌゞ䞊で独自の゚ンドポむントを定矩するため、これは自身のりェブサむトの䞀郚であったり、完党に別のサヌビスであったりしたす。これが、ナヌザヌが提䟛したホヌムペヌゞ URL を実際に管理しおいるずいう蚌拠を提䟛する方法です。

アプリケヌションはたた、認可゚ンドポむントを通じお特定の暩限スコヌプの付䞎をナヌザヌに求めるこずもできたす。䟋えば Micropub クラむアントは create 暩限を芁求するかもしれたせん。ナヌザヌぱンドポむントにリダむレクトされた際に、これらを承認するかどうかを遞択できたす。

開発者にずっお、認可゚ンドポむントは怜蚌サヌビスずしおも機胜したす。ナヌザヌからコヌドを受け取った堎合、その゚ンドポむントで有効性を確認し、それが本圓にそのナヌザヌによっお発行されたものであるこずを保蚌できたす。

トヌクン・゚ンドポむント (Token Endpoint)

トヌクン・゚ンドポむントは、アプリケヌションが保存しお Micropub リク゚ストで䜿甚するためのアクセストヌクンを䜜成するサヌビスです。アプリケヌションを認可した埌、トヌクン・゚ンドポむントはアプリケヌションが保存するトヌクンを生成したす。アプリケヌションは Micropub リク゚ストを行う際にヘッダヌにトヌクンを含めお送信し、Micropub ゚ンドポむントはリク゚スト凊理䞭にそのトヌクンを怜蚌できるこずが期埅されたす。

FAQ

IndieAuth.com の FAQ はこちら

IndieAuth は OpenID Connect ずどう違うのですか

サむロのアカりントは必芁ですか

IndieAuth サヌビスにサむロSNSなどのアカりントは必須ではありたせんが、認蚌方法ずしおそれらを䜿甚するこずを遞択できるサヌビスもありたす。

毎回 URL を入力する必芁がありたすか

はい。埓来のナヌザヌ名/パスワヌド圢匏ず同様に、アプリにログむンする際には URL を入力する必芁がありたす。ブラりザは入力した URL を蚘憶し、通垞のオヌトフィル自動補完機胜を䜿甚しお提案しおくれたす。

誰でもリク゚スト時に URL をクラむアント ID ずしお提䟛できるのですか

はい。OAuth 2.0 のパブリッククラむアントにおいお他人のクラむアント ID を芋぀けおリク゚ストに含めるこずができるのず同様です。パブリッククラむアントネむティブアプリなどでは秘密情報を保持できないため、リダむレクト URL による怜蚌など、パブリッククラむアントに求められるすべおの保護策を適甚しおいたす。

HTTPS を䜿甚すべきですか

IndieAuth 仕様は OAuth 2.0 の拡匵であり、OAuth 2.0 はすべおにおいお HTTPS を掚奚しおいたす。

なぜフォヌム゚ンコヌドされたレスポンスがあるのですか

IndieAuth は圓初、りェブの暙準的な圢匏であるフォヌム゚ンコヌドを䜿甚しおいたした。時間の経過ずずもに、OAuth 2.0 ずの互換性を高めるために JSON レスポンスのサポヌトが远加され、珟圚の仕様では JSON が文曞化されおいたす。

アプリケヌションはどうやっおナヌザヌの远加情報を取埗できたすか

IndieAuth 仕様では、ナヌザヌのプロフィヌルペヌゞh-card をパヌスするなどから公開情報を取埗する方法を提䟛しおいたす。非公開情報を取埗する共通の方法は珟圚ありたせん。

OpenID 1.0 ずは䜕が違うのですか

OpenID 1.0 も同様の問題を解決しようずしおいたしたが、OpenID Connect の登堎で「自分のアむデンティティを持ち寄る」ずいう偎面が薄れたした。OpenID Connect は個人のアむデンティティよりも䌁業が発行するアむデンティティを重芖する傟向にありたすが、IndieAuth は OpenID 1.0 が持っおいた「個人のドメむンによるアむデンティティ」ずいう目暙を OAuth の仕組みの䞊で実珟しおいたす。

発芋 (Discovery) に Webfinger を䜿甚したすか

IndieAuth は Webfinger よりも少ないステップを䜿甚したす。珟圚はナヌザヌがフル URL を入力し、そこから HTTP および HTML のリンク rel を取埗しお゚ンドポむントを芋぀けたす。

事前登録がない堎合、どうやっお自分を蚌明するのですか

クラむアントアプリはすべお URL によっお識別されたす。事前登録による秘密情報の代わりに、DNS ずリダむレクト URL の䞀臎を確認するこずで、リク゚ストを送っおいるシステムが正しいこずを保蚌したす。

ナヌザヌ情報はどこから取埗したすか

認蚌フロヌの最埌のステップで、識別されたナヌザヌぞの参照URLを取埗したす。これを䜿甚しお、ナヌザヌが公開を蚱可した情報名前、メヌル、写真、垌望するナヌザヌ名などを含む h-card を抜出できたす。

なぜ認可ずトヌクンの゚ンドポむントが分かれおいるのですか

OAuth2 から匕き継がれた蚭蚈䞊の決定です。認可゚ンドポむントはナヌザヌずの察話HTML、クッキヌなどを扱い、トヌクン・゚ンドポむントはアプリケヌション間のやり取りPOST リク゚スト、JSON 応答を扱いたす。実際には、倚くの堎合これらは同じシステムの䞀郚ずしお構築されたす。

課題

仕様に関する課題は GitHub プロゞェクト を、IndieAuth.com サヌビスに関する課題は こちら を参照しおください。

講挔ずデモ

䞭略 - 各幎次の講挔リスト。リンク構造は原文を維持

蚘事

䞭略 - アヌロン・パレッティ氏らによる解説蚘事リスト。リンク構造は原文を維持

関連項目