SlideShare a Scribd company logo
OpenID Connect
これが最新のOpenID仕様だッ!
Ryo Ito (@ritou)
YAPC::Asia Tokyo 2013
自己紹介
● Ryo Ito (@ritou)
○ 株式会社ミクシィ 研究開発グループ
○ OpenID ファウンデーション・ジャパン エヴァンジェリスト
○ http://d.hatena.ne.jp/ritou/
○ @IT デジタル・アイデンティティ技術最新動向
「OpenID Connect」を理解する
http://www.atmarkit.co.
jp/ait/articles/1209/27/news138.html
1. OpenID Connectとは?
OpenIDとOAuthの違い
● OpenID : 異なるサービス間でユーザーの認証
情報をやりとりする仕様
● OAuth : 異なるサービス間でAPIアクセスを実
現するしくみ
アイデンティティ技術のトレンド
● Webアプリ間でアカウント連携
○ OpenID 2.0
○ 2008年頃から
● Webアプリ間のAPI連携
○ OAuth 1.0
○ 2009年頃から
● Webアプリ + ネイティブアプリ間のAPI連携
○ OAuth 2.0
○ 2010年頃から
OAuth認証とは
● OAuthはAPIアクセスのための仕様だが・・・
● プロフィールAPIでユーザー識別子を取得して
SSOに使っちゃおう!!!的な発想
OAuth認証とは
● OAuthはAPIアクセスのための仕様だが・・・
● プロフィールAPIでユーザー識別子を取得して
SSOに使っちゃおう!!!的な発想
○ 独自API
○ OAuth 2.0ではモバイルアプリに広く使われるフローで
セキュリティリスクが発生
OpenID Connectとは
● OAuth 2.0をベースに, アイデンティティ層を拡
張した仕様
○ 認証結果の受け渡し + APIアクセス認可を同時に行う
● OpenIDファウンデーションで仕様策定中
○ 現在Implementer's Draft
○ 日本人も関わっている
難しそう?
ミニマムな実装としては, 下記の2点だけ
● ID Tokenで認証/認可情報を受け渡し
● 標準的な属性情報提供API
Source : http://www.atmarkit.co.jp/ait/articles/1209/27/news138.html
OPにリダイレクトして同意
Source : http://www.atmarkit.co.jp/ait/articles/1209/27/news138.html
POST リクエストを送り、
アクセストークンと
ID Tokenを取得
Source : http://www.atmarkit.co.jp/ait/articles/1209/27/news138.html
メールアドレスなど
属性情報を取得
認証/認可の情報を含むID Token
● 認可情報
○ どこの : OP識別子
○ だれが : ユーザー識別子
○ いつ : タイムスタンプ
○ どこに : RP識別子
● 認証の情報
○ 認証時刻
○ 認証方式
トークン文字列はJSON Web Token形式
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
.
eyJpc3MiOiJodHRwczovL3NlcnZlci5leGFtcGxlLmNvbSIsIn
N1YiI6IjI0NDAwMzIwIiwiYXVkIjoiczZCaGRSa3F0MyIsIm5v
bmNlIjoibi0wUzZfV3pBMk1qIiwiZXhwIjoxMzExMjgxOTcwL
CJpYXQiOjEzMTEyODA5NzAsImF1dGhfdGltZSI6MTMxM
TI4MDk2OSwidHlwIjoiSldUIn0
.
LbJA_DmSR5R3Sa79xqtG9sU8uy1Sm8KG1V8VBJOby4E
トークン文字列はJSON Web Token形式
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
↑メタデータをBase64 URL エンコードしたもの
. ←ピリオドで連結
eyJpc3MiOiJodHRwczovL3NlcnZlci5leGFtcGxlLmNvbSIsIn
N1YiI6IjI0NDAwMzIwIiwiYXVkIjoiczZCaGRSa3F0MyIsIm5v
bmNlIjoibi0wUzZfV3pBMk1qIiwiZXhwIjoxMzExMjgxOTcwL
CJpYXQiOjEzMTEyODA5NzAsImF1dGhfdGltZSI6MTMxM
TI4MDk2OSwidHlwIjoiSldUIn0
↑送りたいデータをBase64 URL エンコードしたもの
.
LbJA_DmSR5R3Sa79xqtG9sU8uy1Sm8KG1V8VBJOby4E
↑署名をBase64 URLエンコードしたもの
ユーザーの属性情報を提供するAPI
scopeの値に関連付けられた属性情報を提供
● openid : ユーザー識別子
● profile : プロフィール情報
● email : メアド + 確認状態
● phone : 電話番号 + 確認状態
● address : 住所情報
その他
● 動的なRP登録, 探索
● ユーザー認証周りのリクエストパラメータ
● 署名つき/暗号化されたリクエスト
● 属性情報の集約/分散
モバイル端末とIdentity
モバイル端末自体の識別はけっこう難しい
● デバイス固有な識別子?
○ かんたんログインのセキュリティ/プライバシー問題
● ある程度セキュアな領域は提供されている
○ iOS KeyChain
○ Android KeyStore
Self-Issued OP : デバイス内OP
モバイル/WebアプリはカスタムURIスキームにて
リクエストを送信
● openid://
端末内でOPとして動作するアプリ or Native機能
がOPとなる
● デバイス内でユニークな鍵ペアを生成
● 公開鍵をPayloadに含む
● 秘密鍵で署名してID Tokenを作成
YAPC::Tokyo 2013 ritou OpenID Connect
YAPC::Tokyo 2013 ritou OpenID Connect
Self-Issued OP : デバイス内OP
利用するモバイル/Webアプリのメリット
● 公開鍵のハッシュ値から、どの端末を利用して
いるかを識別可能
● タイムスタンプ/署名により改ざんが難しい
● ユーザーの同意を得るしくみがある
Self-Issued OP : デバイス内OP
いくつか課題が残っている
● 信頼性(OS機能じゃないとNG?)
● 名寄せ防止のための複数の鍵ペア生成
ネイティブアプリを作っていてより厳密なデバイス
識別をやりたいところは使えると思う
2. OIDC::Lite
OIDC::Lite
● OAuth 2.0のServer/Client向けライブラリであ
るOAuth::Lite2を拡張
● https://metacpan.org/module/OIDC::Lite
● https://github.com/ritou/p5-oidc-lite
Source : http://www.atmarkit.co.jp/ait/articles/1209/27/news138.html
RP(Client)向け機能
● 認可要求のURL生成
● アクセストークン、IDトークンの要求
● レスポンスの検証
LWP使って手動でリクエストを書き, レスポンスを
JSONデコードするよりは楽
OP(Server)向け機能
● 各エンドポイント毎に”一連の手続き”を実装
● Authorization Endpoint
○ リクエストパラメータの検証
○ ユーザー同意/拒否後のレスポンス生成
○ 同意画面表示のあたりで上記メソッドを使う
● Token Endpoint
○ 各grant_type単位の処理を実装
○ psgiアプリケーション
● Protected Resource
○ Access Tokenを検証しユーザーIDなどをAPIに必要な
値を環境変数にセット
○ PlackのMiddleware
OP(Server)向け機能
利用者が行うこと
● Access Token(アクセストークン), AuthInfo(認
可情報)の保存部分などを実装
○ あらかじめ用意されているのはアクセサのみ
○ DBに入れたりキャッシュに保存したり
● DataHandlerに定義されている処理を実装
○ client_idなどの検証
○ 上記クラスの生成/更新処理
難しそう?
● サンプルOP/RP作りました
○ https://github.com/ritou/p5-oidc-lite-demo-server
○ https://github.com/ritou/p5-oidc-lite-demo-client
● デモ
○ http://demo-client.openidconnect.info/
○ http://demo-server.openidconnect.info/
● ブログエントリも書きました
○ http://d.hatena.ne.jp/ritou/
サンプルOP/RP
● 目的
○ ライブラリの使い勝手を確認
○ OP/RPの実装例を公開
○ 誰でもInterop!
● carton install + plackupで簡単に起動
サンプルOP :
Authorization Requestの表示
サンプルOP :
Authorization Responseの表示
サンプルRP :
Access Token Req/Resの表示
サンプルRP :
ID Tokenの内容/属性情報の表示
まとめ
● OpenID Connect
○ OAuth 2.0にIdentity層を追加する拡張
○ ミニマムな実装はID Tokenと属性提供API
○ Self-Issued OPでデバイス特定
● OIDC::Lite
○ OAuth::Lite2を拡張したOP/RP向けライブラリ
○ サンプルOP/RPもあります
終わり
OpenIDやOAuthについての質問や疑問がありま
したら @ritou までお気軽に声をかけてください!!!

More Related Content

PDF
Azure ADとIdentity管理
PDF
池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014
PDF
なぜOpenID Connectが必要となったのか、その歴史的背景
PDF
安全なID連携のハウツー
PDF
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
PDF
Azure Monitor Logで実現するモダンな管理手法
PDF
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
PDF
これからのネイティブアプリにおけるOpenID Connectの活用
Azure ADとIdentity管理
池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014
なぜOpenID Connectが必要となったのか、その歴史的背景
安全なID連携のハウツー
パスワード氾濫時代のID管理とは? ~最新のOpenIDが目指すユーザー認証の効率的な強化~
Azure Monitor Logで実現するモダンな管理手法
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
これからのネイティブアプリにおけるOpenID Connectの活用

What's hot (20)

PDF
ゼロから学ぶIoT
PDF
Keycloak拡張入門
PDF
Form認証で学ぶSpring Security入門
PDF
俺が考えた最強のID連携デザインパターン
PDF
認証の課題とID連携の実装 〜ハンズオン〜
PPTX
詳説!Azure AD 条件付きアクセス - 動作の仕組みを理解する編
PDF
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
PPTX
やってはいけない空振りDelete
PPTX
Keycloakの実際・翻訳プロジェクト紹介
PDF
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
PDF
実装して理解するLINE LoginとOpenID Connect入門
PDF
エンタープライズITでのOpenID Connect利用ガイドライン
PPTX
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
PDF
マルチテナントのアプリケーション実装〜実践編〜
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
PPTX
DeNA の AWS アカウント管理とセキュリティ監査自動化
PDF
OpenID ConnectとAndroidアプリのログインサイクル
PDF
Kongの概要と導入事例
PDF
OpenID Connect のビジネスチャンス
PDF
Active Directory のおさらいをしましょう!~グループポリシー編~
ゼロから学ぶIoT
Keycloak拡張入門
Form認証で学ぶSpring Security入門
俺が考えた最強のID連携デザインパターン
認証の課題とID連携の実装 〜ハンズオン〜
詳説!Azure AD 条件付きアクセス - 動作の仕組みを理解する編
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
やってはいけない空振りDelete
Keycloakの実際・翻訳プロジェクト紹介
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
実装して理解するLINE LoginとOpenID Connect入門
エンタープライズITでのOpenID Connect利用ガイドライン
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
マルチテナントのアプリケーション実装〜実践編〜
Javaはどのように動くのか~スライドでわかるJVMの仕組み
DeNA の AWS アカウント管理とセキュリティ監査自動化
OpenID ConnectとAndroidアプリのログインサイクル
Kongの概要と導入事例
OpenID Connect のビジネスチャンス
Active Directory のおさらいをしましょう!~グループポリシー編~
Ad

Similar to YAPC::Tokyo 2013 ritou OpenID Connect (20)

PDF
OpenID-TechNight-11-LT-mixi
PDF
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
PDF
認証技術、デジタルアイデンティティ技術の最新動向
PPTX
20140307 tech nightvol11_lt_v1.0_public
PDF
Web3時代のデジタルアイデンティティ (高橋健太 |株式会社日立製作所 研究開発グループ)
PDF
IoT案件を70件やってみて分かった事
PDF
新しい認証技術FIDOの最新動向
PPTX
OpenID ConnectとSCIMのエンタープライズ利用ガイドライン
PDF
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
PPTX
Android IoTとプログラミング教育
PPT
[Tech night]rakuten
PDF
OpenID Connect Client Initiated Backchannel Authentication Flow (CIBA)のご紹介 ~ ...
PDF
安全な"○○でログイン"の作り方 @ NDS in Niigata #1
PDF
IoTビジネス共創ラボ 第15回勉強会 オープニング
PDF
Azureクラウドのネイティブアプリ、IoTとエッジAIの管理ソリューション
PPTX
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
PPTX
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
PDF
IoT ビジネス共創ラボの趣旨説明、地方共創ラボ紹介_IoTビジネス共創ラボ 第10回 勉強会
PPTX
Io tのお困りごとを解決「ニフティiotデザインセンター」_iotの実現をサポートするニフティの取り組み
PDF
農業とIoT
OpenID-TechNight-11-LT-mixi
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
認証技術、デジタルアイデンティティ技術の最新動向
20140307 tech nightvol11_lt_v1.0_public
Web3時代のデジタルアイデンティティ (高橋健太 |株式会社日立製作所 研究開発グループ)
IoT案件を70件やってみて分かった事
新しい認証技術FIDOの最新動向
OpenID ConnectとSCIMのエンタープライズ利用ガイドライン
OpenIDファウンデーション・ジャパンKYC WGの活動報告 - OpenID Summit 2020
Android IoTとプログラミング教育
[Tech night]rakuten
OpenID Connect Client Initiated Backchannel Authentication Flow (CIBA)のご紹介 ~ ...
安全な"○○でログイン"の作り方 @ NDS in Niigata #1
IoTビジネス共創ラボ 第15回勉強会 オープニング
Azureクラウドのネイティブアプリ、IoTとエッジAIの管理ソリューション
『OpenID ConnectとSCIMのエンタープライズ実装ガイドライン』解説
既存RailsアプリをSSO化して、本番環境で活用した話【WESEEK Tech Conf #12】
IoT ビジネス共創ラボの趣旨説明、地方共創ラボ紹介_IoTビジネス共創ラボ 第10回 勉強会
Io tのお困りごとを解決「ニフティiotデザインセンター」_iotの実現をサポートするニフティの取り組み
農業とIoT
Ad

More from Ryo Ito (20)

PDF
idcon mini vol3 CovertRedirect
PDF
Idcon 17th ritou OAuth 2.0 CSRF Protection
PDF
なんとなくOAuth怖いって思ってるやつちょっと来い
PDF
#idcon 15th ritou 2factor auth
PDF
Open id connect claims idcon mini vol1
PDF
OID to OIDC idcon mini vol1
PDF
Account Chooser idcon mini Vol.1
PDF
BackplaneProtocol超入門
PDF
UserManagedAccess_idcon13
PDF
WebIntents × SNS
PDF
Idcon11 implicit demo
PDF
OpenID_Connect_Spec_Demo
PDF
The Latest Specs of OpenID Connect at #idcon 9
PDF
OAuth 2.0 MAC Authentication
PDF
OAuth 2.0 Dance School #swj
PDF
Ritou idcon7
PDF
Summary of OAuth 2.0 draft 8 memo
PDF
Introduction of OAuth 2.0 vol.1
PDF
0905xx Hybrid Memo
PDF
Anonymous OAuth Test
idcon mini vol3 CovertRedirect
Idcon 17th ritou OAuth 2.0 CSRF Protection
なんとなくOAuth怖いって思ってるやつちょっと来い
#idcon 15th ritou 2factor auth
Open id connect claims idcon mini vol1
OID to OIDC idcon mini vol1
Account Chooser idcon mini Vol.1
BackplaneProtocol超入門
UserManagedAccess_idcon13
WebIntents × SNS
Idcon11 implicit demo
OpenID_Connect_Spec_Demo
The Latest Specs of OpenID Connect at #idcon 9
OAuth 2.0 MAC Authentication
OAuth 2.0 Dance School #swj
Ritou idcon7
Summary of OAuth 2.0 draft 8 memo
Introduction of OAuth 2.0 vol.1
0905xx Hybrid Memo
Anonymous OAuth Test

YAPC::Tokyo 2013 ritou OpenID Connect