OpenID TechNight Vol.13 - ID連携入門
https://openid.doorkeeper.jp/events/29487
ID連携概要 by @nov
- Authentication: ブラウザの前にいる Entity が、サービス側が認識するどの Identity と紐付いているかの確証を得ること。
- Authorization: リソースにアクセスするための条件を定めること。
- Audit
- Identity Proofing: Identity(属性の集合)の確からしさを測ること。
- それ確認したの、何年前?
- 無料じゃない。継続的にコストがかかるものもある。どの属性を proof するかに依存。
- Disqus に FB でログインするとき。
- Entity - Facebook Identity - Disqus Identity の紐付けを確認。
- FBの言うことは信用する。FB が言っているかどうかの確認はする。
- 理想と現実
- 属性連携は最初だけ? コンシューマー領域では問題にならないことが多い。エンタープライズでは、例えば部署異動が反映されずに、アクセス制御が期待通りに動かないことが問題視されることがある。
- OAuth 1.0 / OAuth 2.0 / OpenID Connect で、IdP がユーザーを認証した証拠の表現形式、検証方法が異なる。OAuth 1.0 / 2.0 なら IdP ごとにも異なる。Server-side app / Native app / Native app backend / JS app なのかでも検証方法がことなる。
ID連携のあるとき~,ないとき~ #エンプラ編 by @paoneJP
- ID管理システムによる ID の一元管理
- 独自プロトコル or LDAP or CSV
- SAML による認証連携の実装が進んだ - 認証連携
- エンプラIDとITの特製
- 異動により Identity が変化
- グループウェア、コラボレーションアプリなど、全ユーザの Identity が必要なアプリも多い
- フェデレーション(オンライン)とプロビジョニング(バッチ)が必要。
- 目指す方向:OpenID Connect、SCIM へ対応していく必要がある
コンシューマ領域におけるID連携のユースケースとライブラリ紹介(OAuth編) by @ritou
- エンタープライズとの違い
- 属性情報を同期し続けるケースはあまりない
- 初期値を使ってすぐに登録完了 or フォームにプリセットして入力補助
- 認証のレベル:IdP側の認証強度を意識していないケースが多い
- 実装方法
-
- 各IdPが提供するライブラリをそれぞれ導入
- 提供していないIdPもある
- IdPが想定しているユースケース、言語に限定
- 複数IdPサポート時に混乱が生じる可能性
- 各IdPが提供するライブラリをそれぞれ導入
-
- ソーシャルログイン as a service (RP と IdP の間に入るサービス)- janrain など。
- ID連携以外にいろいろしたい場合に難しい場合がある。API を使うために OAuthトークン欲しいとかいうと有料プランだったり。
- ソーシャルログイン as a service (RP と IdP の間に入るサービス)- janrain など。
-
- 複数IdPをサポートするライブラリ - OmniAuthなど
-
- プロトコルをサポートするライブラリ
- OAuth 2.0用ライブラリ等を用いて実装
- 元気があればなんでもできる
- 各IdPのこまかい癖に悩まされる可能性 - RFC、RFCドラフト、RFCドラフト改(ほとんど独自)
- プロトコルをサポートするライブラリ
-
- OAuth 2.0 で ID連携?
- OAuth はリソースアクセスのしくみ
- ID連携のために、APIアクセスにより必要な情報を取得 - 識別子、プロフィール情報
- 3つのフェーズ:2.AccessTokenの取得, 3.属性情報の取得
- 課題
- 各IdPの差異
- OAuth2.0ベースといいつつ…
- 認証強度の違い
- 各IdPの差異
OpenID Connect 入門 〜コンシューマー領域におけるID連携のトレンド〜 by @kura_lab
- RPはつらいよ
- 数年おきに違う認証、認可の方式が出てくる。
- OpenID Connect は実装が簡単。ウェブ、ネイティブなどいろいろなものに対応。
- 実装方法、検証方法は違うので、複数のクライアントに対応するのはつらい。
- IdPはもっとつらい:何世代も前のプロトコルもまだまだ現役
- IdPに比べたらRPはそこまでつらくない
- OpenID Connect
- 2014/2/27 launch
- OAuth 2.0 を拡張。Open ID 2.0 とは違う。
- OpenID は認証、OAuth は認可、OpenID Connect は認証も認可も。さらに属性取得も。
- OpenID Connect: 認証 + 認可 + 属性取得
- 認証フロー
- Authorization Code Flow - server side - 基本のフロー
- Implicit Flow - client side
- Hybrid Flow
- UserInfo(属性情報、Claim)
- メアド、メアドが疎通確認済みであるかどうか、電話番号、電話番号が疎通確認済みであるかどうか、氏名、住所などが定義されている。どのIdPでも同じやり方で取得できる。
- UserInfo を取得して、新規登録フォームにプリセット。