Authentication = 「認証」(本人確認), Authorization = 「認可」(リソースへのアクセス許可). Authorization Endpoint は「認可エンドポイント」. Authentication Request は「認証要求」.
Webサービスその他での伝統的なユーザID + パスワードによる認証では、当然にそのサービスの認可を兼ねることが通常なので、用語が混乱しやすい。Open ID Connect などの技術は、本人確認だけを別サーバに分離する。
認証関係: サンプルプログラム OpenID Connect OP (IdP) 実装サンプル, 2FA sample.
OpenID Connect 'response_type' and flows Authorization Request (認証要求) に含まれる response_type
で、フローが決定される。有効な組み合わせについて。
Ruby on Rails の認証フレームワーク Sorcery がシンプルでよさそう。
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
を取得することができなかった。
CA階層, 2/3 tierと基礎 CA.plスクリプトの解説はこちら。
プライベート認証局でSSLサーバ証明書, nginxでの TLS設定
S/MIME @todo
コード署名 (Code signing) Windows環境 (UWP) では, バイナリに署名しないと実行できなくなっている.