More Related Content
Similar to Authentication, Authorization, OAuth, OpenID Connect and Pyramid
Similar to Authentication, Authorization, OAuth, OpenID Connect and Pyramid (20)
More from Moriyoshi Koizumi
More from Moriyoshi Koizumi (15)
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
- 2. 認証とは
• 認証因子 (authentication factors) からシス
テムの利用者を識別して、システムにと
って利用者が何者であるかを決定するこ
と
• 利用者が何者であるかが分かった所で、
システムの機能を使えるかどうかは別問
題
• (→認可) 認証因子
決定
決定
0182
0021
- 9. Webアプリケーションの認証
Login
page
https://example.com/s
ecretpage
302
HTTP/1.1 302 Moved Temporarily
Location: /login
✔️https://example.com/a
notherpage
識別のための情報が
クッキーとして
ブラウザーに記憶される
200
GET /secretpage HTTP/1.1
https://example.com/
login
GET /login HTTP/1.1
認証情報の入力
Login
page
HTTP/1.1 200 OK
HTTP/1.1 302 Moved Temporarily
Location: /secretpage
Set-Cookie: xxx=yyy; path=/POST /login HTTP/1.1
user=aaa&passwd=bbb
GET /anotherpage HTTP/1.1
Cookie: xxx=yyy
HTTP/1.1 200 OK
- 11. ここ (2-3の間) で
provider側の認証が利
用者に対して行われた
りする。
OAuthのフロー
1. ブラウザをproviderの認可エンドポイントにリダイレクト
2. 認可エンドポイントにブラウザがGETリクエスト
3. ブラウザをconsumerのコールバックURLにリダイレクト
4. コールバックURLにブラウザがGETリクエスト
code
code
code
5. Consumerがproviderのアクセストークン取得APIにPOSTリクエスト
client_id redirect_uri
client_id client_secret
6. Providerがconsumerにアクセストークンや補助的な情報を返
却
access_token
7. Consumerは与えられたアクセストークンを伴ってProviderの各種APIにアクセス
Consumer
(認可を受ける側)
Provider
(認可を与える側)
User agent
(ブラウザ)
- 12. OpenID Connect
• OpenID 2.0の後継として生まれた規格
• OAuth 2.0ベース
• アクセストークンと一緒にOpenID認証情
報をJWT (JSON Web Token) として
consumerに渡す
- 13. ここ (2-3の間) で
provider側の認証が利
用者に対して行われた
りする。
OpenID Connectのフロー
1. ブラウザをproviderの認可エンドポイントにリダイレクト
2. 認可エンドポイントにブラウザがGETリクエスト
3. ブラウザをconsumerのコールバックURLにリダイレクト
4. コールバックURLにブラウザがGETリクエスト
code
code
code
5. Consumerがproviderのアクセストークン取得APIにPOSTリクエスト
client_id redirect_uri
client_id client_secret
6. ProviderがconsumerにアクセストークンやIDトークンを返却
access_token
7. Consumerは与えられたアクセストークンを伴ってProviderの各種APIにアクセス
Consumer
(認可を受ける側)
Provider
(認可を与える側)
User agent
(ブラウザ)
id_token
nonce max_age