OmniAuth (Ruby) 用の OpenID Connect ストラテジ。このパッケージは次のパッケージを置き換えます。
オリジナルはこちら; omniauth-openid-connect | RubyGems.org. しかしながら, 2019年1月現在, 最新は 2015年12月にリリースされた v0.2.3. もはやメンテナンスされていない。
依存している openid_connect パッケージが古く、困る。多くの人が fork してしまっている。
そこで、多くの人による散らばった修正を取り込んだ。決定打を目指す。
GitHub repository: netsphere-labs/omniauth-openid-connect: Universal authentication strategy using OpenID Connect for OmniAuth
OpenID Connect は, OAuth 2.0仕様の上に構築された認証 (authentication) 手順。認可 (authorization) とは異なる。
ただの OAuth 2.0 を「認証」に使おうとすると、セキュリティ上よくない。例えば, 単なる OAuth 2.0 を認証に使うと、車が通れるほどのどでかいセキュリティー・ホールができる | @_Nat Zone OAuth 2.0 の implicit flow を使って「認証」をしようとすると、とっても大きな穴が開きます。カット & ペースト攻撃が可能だからです。
各社が OAuth 2.0 の上に独自に認証の仕組みを作っていた。これでは困るので, 標準化したものが OpenID Connect. 'OpenID 2.0' (OpenID Authentication 2.0) からの技術的な連続性はない。名前だけ。紛らわしい。
OpenID Connect に対応した認証サービス (OpenID Provider; OP) は、例えば、次がある;
組織 | サービス | Basic OP | Implicit OP | Hybrid OP |
---|---|---|---|---|
Google Federated Identity | ✓ | ✓ | ✓ | |
Microsoft | ADFS on Windows Server 2016 | ✓ | ✓ | -- |
Microsoft | Azure Active Directory v2 | ✓ | ✓ | -- |
Salesforce | Summer 2015 Release | |||
Yahoo! Japan | Yahoo! ID Federation v2 | ✓ | ✓ | ✓ |
リストはこちら; OpenID Certification. Facebook がないのがつらい。引き続き独自の方法で対応が必要。
Salesforce は, 実際に試せてはいないが, この辺りの記事を見ると OP になれるようだ; シングルログアウト用の OpenID Connect 設定 (Salesforce が OpenID Connect プロバイダの場合) | シングルサインオン実装ガイド
(2017.9.23) このほか, gitlab.com も OpenID Provider のつもりだが, jwks_uri
で得られるRSA公開鍵が不味く, 適合していない。
(2017.8.20 追記)
上のリストで PayPal も OpenID Connect に対応していることになっているが、実装を確認する限り、OpenID Connect には適合していない。
amazon web services - Using Login with Paypal and using OpenID with AWS Cognito - Stack Overflow
oauth 2.0 - PayPal id_token verification - Stack Overflow
いろいろ試してみたが、access_token
と別に id_token
を取得することができなかった。
リポジトリをclone してください。
$ git clone https://github.com/netsphere-labs/omniauth-openid-connect.git
ビルド、インストール。
$ rake build # rake install:local
OpenID Provider (OP; IdP) ごとの設定例
A sample Rails + OmniAuth program: omniauth-oidc-rp-sample · main · netsphere / rails-examples · GitLab
(1) OpenID Connect Authorization Code Flow によるログイン, (2) 同 Implicit Flow によるログイン. (3) OpenID Connect RP-Initiated Logout 1.0 によるシングルログアウト (SLO).