Upload
takashi-yahata
View
246
Download
7
Embed Size (px)
Citation preview
© 2015 Takashi Yahata (@paoneJP)
OAuth & OpenID Connect
入門のための入門
Takashi Yahata - @paoneJP
2015/7/31
2015/7/31 1
© 2015 Takashi Yahata (@paoneJP) 2015/7/31 2
OAuth って何?
© 2015 Takashi Yahata (@paoneJP) 2015/7/31 3
OpenID Connect って何?
© 2015 Takashi Yahata (@paoneJP)
トラディッショナルなアプリ連携
2015/7/31 4
ファイアウォールの中で組織内の人が
組織内のPCで組織内のアプリ同士が連携して
© 2015 Takashi Yahata (@paoneJP) 2015/7/31 5
イマドキなアプリ連携
インターネットのあらゆるところから
正規のユーザーも、そうでない人も
いろんなデバイスを使って
3rd party のアプリと連携して
© 2015 Takashi Yahata (@paoneJP)
3rd party アプリにあなたの認証情報を渡してアプリを利用
3rd party アプリは 「あなたの権限」 で 「すべての機能」 を実行可能
3rd party アプリの利用停止はパスワードの変更で
もちろんパスワードを設定した全アプリの変更対応が必要
OAuthがないとき
2015/7/31 6
© 2015 Takashi Yahata (@paoneJP)
3rd party アプリがあなたに成り代わって機能を使うとき
あなたに 「必要な権限」 の同意を取って
機能にアクセスするためのトークンを受け取って
必要な機能を利用する
3rd party アプリの利用停止は、トークンを失効することで、アプリごとに停止ができる
OAuthがあるとき
2015/7/31 7
© 2015 Takashi Yahata (@paoneJP)
OAuth では、ほとんどの実装で Bearer Token (無記名トークン) を使用。
OAuth で認証、という実装は、Bearer Token でユーザー情報が取れるAPIにアクセスして、情報が取れれば認証OKとするもの。
トークンの盗用、トークンの再利用を防げなければ、安全には使えない。
OAuthで認証する?え?
2015/7/31 8
© 2015 Takashi Yahata (@paoneJP)
OAuth2.0 のフローを使って
認証結果に関する情報を含む
発行者の検証ができる
IDトークンを取得して
認証連携を実現する
OAuth2.0 + Identity Layer = OpenID Connect
2015/7/31 9
{"kid": "1e9gdk7","alg": "RS256"}{"iss": "http://server.example.com","sub": "248289761001","aud": "s6BhdRkqt3","nonce": "n-0S6_WzA2Mj","exp": 1311281970,"iat": 1311280970,"at_hash": "77QmUPtjPfzWtF2AnpK9RQ"}[signature]
eyJraWQiOiIxZTlnZGs3IiwiYWxnIjoiUlMyNTYifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzAsCiAiYXRfaGFzaCI6ICI3N1FtVVB0alBmeld0RjJBbnBLOVJRIgp9.F9gRev0Dt2tKcrBkHy72cmRqnLdzw9FLCCSebV7mWs7o_sv2O5s6zMky2kmhHTVx9HmdvNnx9GaZ8XMYRFeYk8L5NZ7aYlA5W56nsG1iWOou_-gji0ibWIuuf4Owaho3YSoi7EvsTuLFz6tq-dLyz0dKABMDsiCmJ5wqkPUDTE3QTXjzbUmOzUDli-gCh5QPuZAq0cNW3pf_2n4zpvTYtbmj12cVcxGIMZby7TMWESRjQ9_o3jvhVNcCGcE0KAQXejhA1ocJhNEvQNqMFGlBb6_0RxxKjDZ-Oa329eGDidOvvp0h5hoES4a8IuGKS7NOcpp-aFwp0qVMDLI-Xnm-Pg
© 2015 Takashi Yahata (@paoneJP)
http://datatracker.ietf.org/wg/oauth/documents/
RFC6749 The OAuth 2.0 Authorization Framework
RFC6750 The OAuth 2.0 Authorization Framework: Bearer Token Usage
OAuthを学ぶ
2015/7/31 10
© 2015 Takashi Yahata (@paoneJP)
http://openid.net/developers/specs/
OpenID Connect Core 1.0
http://datatracker.ietf.org/wg/oauth/documents/
RFC7519 JSON Web Token (JWT)
http://datatracker.ietf.org/wg/jose/documents/
Cryptography
PublicKey, Hash, …
OpenID Connectを学ぶ
2015/7/31 11
© 2015 Takashi Yahata (@paoneJP)
続く …
2015/7/31 12