認証関係: サンプルプログラム

セクション違い:

openid_connect_sample

[2021.12] v2.0.0 リリース.

OpenID Connect OP (IdP) 実装サンプル。nov/openid_connect_sample を fork し, Ruby on Rails 6.1対応した。Authorization Code Flow と Implicit Flow をサポート。

同時に, OpenID Connect Relying Party (RP) として Googleログイン。

Ruby on Rails 6.1, Sorcery, Facebook Login の組み合わせ。

[historical] Implicit Flow RP sample

ネイティブアプリなど client_secret を安全に保存できない状況では, Implicit Flow を使わなければならない。

[2024-02 追記] OpenID Connect 認証仕様の基礎である OAuth 2.0 認可 (認証にあらず) フレームワークについて、改定作業が行われている. The OAuth 2.1 Authorization Framework Internet-Draft. Implicit Flow は単に削除される見込み。response_type = id_token token は廃止。

今後は Authorization Code Flow with PKCE を使え。[/2024-02 ここまで]

Rails アプリではサーバサイドの Authorization Code Flow で問題ないが、これは, あえて Implicit Flow を実装した OpenID Connect Relying Party (RP) サンプル。

netsphere-labs/openid-connect-implicit-flow-rp-sample: OpenID Connect (oidc) - Relying Party (RP) sample. The Implicit Flow, Ruby 3.0 + Ruby on Rails 6.1. Tested Google and Yahoo JP.

Rails 6.1. IdP として Google と Yahoo JP に対応。

Sorcery 2FA Sample

netsphere-labs/sorcery_twofactor_sample: Sorcery 2FA sample. Rails 7

ベーシックなパスワード認証と Google Authenticator (Google 認証システム) で生成される確認コードの入力を組み合わせた、2要素認証のサンプル。

二要素認証 (2FA) は, "知識" 本人のみが知っていること (例: 暗証番号) と, "所有" 本人が持っているもの (例: スマフォ) を組み合わせた認証。所有のほうは、それだけでは本人確認にならないので、あくまでも「知識」を補完する位置づけ。例えば、パスワードをほかのサービスと共通のものを使っているような場合で、それが漏洩したとしても、ただちに破られないようにする。

二段階認証とは異なることに注意。

Google Authenticator を使うこのサンプルは, SMS (ショートメッセージ) よりも, 非常に実装が簡単。Ruby 3.1, Ruby on Rails 7, Sorcery, google-authenticator-rails の組み合わせ.

TODO: 本当は、スマフォの紛失に備えてリカバリ方法を用意しなければならないが、そこは手つかず。