Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CA API Academy - OAuth 2.0 ブートキャンプ基礎編

956 views

Published on

OAuth 2の必要性、基本的な考え方を理解し、4つのGrant Typeについて理解する資料です。

Published in: Mobile
  • Get access to 16,000 woodworking plans, Download 50 FREE Plans... ◆◆◆ http://t.cn/A6hKwZfW
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • (Unlimited)....ACCESS WEBSITE Over for All Ebooks ................ accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... (Unlimited)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THI5 BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

CA API Academy - OAuth 2.0 ブートキャンプ基礎編

  1. 1. API Academy OAuth2.0 Boot Camp基礎編1 ~ OAuthとは? ~ <OAuthの仕組みとGrant Typeを理解する> CA technologies APIM pre-sales team Tomohiro Kada Rev07.2
  2. 2. 2 アジェンダ Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. • OAuthとは? • OAuth2.0の仕組み • Authorization Code Grant • Implicit Grant • Resource Owner Password Credentials Grant • Client Credentials Grant • 各Grant Typeのまとめ
  3. 3. OAuthとは?
  4. 4. 4 OAuthとは? これまで利用されてきたWebの認証: Cookieベース Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. ブラウザ Web Server Application Server DB リクエスト - Credentials (ID/Password) - Cookie Database Basic認証 Form認証 Webアプリケーション(サービス) 全て同一組織・グループ・ドメインから提供され管理される • SSLの証明書やリクエストURLから認証先 が本当に接続したいサイトであることを確 認してIDとPasswordを送信できる。 • Cookieはドメインにセットされているため 関係のないドメインへは送信しない。 ユーザ 操作 ユーザーの情報が保存 される Credential入力 Domain Identity Store
  5. 5. 5 OAuthとは? Webで利用される認証はAPIでは利用しにくい Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. API ユーザ 操作 API Client モバイルネイティ ブアプリ アプリケーションサー バ(Web用) Credential入力 API • APIアクセスのためにサードベンダのアプリにそもそも自分のパスワード を渡してしまってよいものか? • パスワードをわたしてしまうと可能な全てのユーザーの情報にアクセスで きてしまう(写真データのみとか限定できない)。 Domain A Domain B API API Domain C • APIでは特定の”ドメイン”のみの利用を前提としておらず Cookieは使いづらい(クロスドメインができない)。 • トークンとしてのCookieは認証の結果として生成されたも の(ユーザCredentialの代替)であるため一度、盗まれてしま えばユーザに成り代わって不正アクセスが可能。 DB ユーザ データ Cookie?
  6. 6. 6 OAuthとは? APIの認証に必要なもの Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. 1 • クロスドメインで利用できる 2 • 権限を絞って一時的にアクセス権を渡すことができる 3 • XMLではなくJSONを利用する
  7. 7. 7 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. Web サードベンダアプリ モバイルネイティブ アプリ アプリケーションサーバ (Web用) ユーザ データ Web Scraping Web Scraping User Credentials Webしか提供のないサービスからユーザに成り代わりユー ザのデータを取得する。 ユーザ ユーザのデータに代理でア クセスするのでIDと Password(クレデンシャル) を登録してほしい。 • Web API化されていないサービスに接続してHTTP/HTMLでデータを取得して必要なデータのみを抽出する方法。 • サービス提供側が認証を必要としている場合はユーザがクライアント(アプリ)にクレデンシャルを登録する。 User Credentials IDとPasswordの登録 HTTP/HTML User Data OAuthとは?
  8. 8. 8 銀行の口座にあるあなたのお金 お店が支払いであなたのお金の一 部を引き出したい。 あなたはお店に銀行口座にあるあなた のお金の一部だけ引き出すことを許可 する。 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. 小切手の場合 OAuthとは?
  9. 9. 9 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. サーバにあるあなたの情報やリソース アプリケーションがあなたの情報やリ ソースにアクセスしたい あなたはサーバにあるあなたの情報やリソースの 一部にアクセスすることを許可する。 OAuth2の場合 OAuthとは?
  10. 10. 10 ユーザー データ ユーザー データ 1. APIのコールをしてきているサードベンダアプリ(API Client)の認証 2. ユーザーのデータにアクセスするためのアクセス権の付与(認可) APIをコールするアプリケーションの認証とユーザーのデータにアクセスするための認可を分けて 考える必要がある。 アプリケーション これまでのWebの場合 サードベンダアプリ API Server Web APIの場合 • ユーザーの認証のみ行えればよい “ユーザー”と”サービス提供者(アプリ)”の二者しか介在しない。 “ユーザー”と”サードベンダ(アプリ)”と”サービス提供者(API)”の三者が介在する。 API Clientの認証を実施し適切にAPI Clientにアクセス権限を付与する仕組みが必要 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. OAuthとは?
  11. 11. OAuth2.0の仕組み
  12. 12. 12 APIの認証で利用されるOAuth2.0 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. OAuthとはアクセス権を付与するためのフレームワーク ユーザー APIサーバー (ユーザーのデータ)アプリケーション ①APIへアクセスしてデー タを取得したいのでアクセ ス権をください。 ②アプリケーションがアク セスしたいようなのでアク セス権を渡してあげてくだ さい。 ③ユーザーの認証 ④認証済みの証拠 を渡します 「ユーザー」「アプリケーション」「APIサーバ」の関係 ⑤これが認証済みの 証拠です。 Code Code Token ⑧トークンはこれなのでデータをください。 ⑨データです Json/XML Code ⑥これが認証済みの証拠です。 Token ⑦トークンを渡すのでこれでアクセスしてください ※“OAuth - Authorization Code Grant”のケース
  13. 13. 13 OAuthのバージョン • OAuth 1.0 • OAuth 1.0a • OAuth 2.0 ※このドキュメントでは”OAuth 2.0”のみを取り扱います。OAuthと記述されているものは全て“OAuth 2.0”を前提としています。 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies.
  14. 14. 14 OAuth 2.0で使用される役割 • Resource Owner ✓ 情報の所有者。保護される所有者の情報へアクセスするための権限を付与することができる。 • Resource Server ✓ “Resource Owner”の保護された情報をホスティングしているサーバー。トークン/Scopeを 利用してアクセス許可、拒否の判断を行う。 • Client(OAuth Client) ✓ “Resource Owner”が付与してくれたアクセス権を利用して”Resource Owner”の情報へ代理 でアクセスするクライアント。Web ApplicationやNativeのスマートフォンアプリケーション、 Java Scriptなどが”Client”にあたる。 • Authorization Server ✓ “Resource Owner”の認証後や”Resource Owner”の認可を取得後にアクセストークンを生成 するサーバー。 詳細は下記URLをご参照ください。 https://tools.ietf.org/html/rfc6749#section-1.1 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies.
  15. 15. 15 Client IDとClient Secret 1. Client IDはOAuthのクライアントを識別するためのユニークなID。 2. Client IDは基本的にパブリックな情報として認識されます。 3. Client SecretはClient IDに対するパスワード 4. もしアプリケーションがClient Secretをセキュアに保護できない場合、Client Secretは通常は利用さ れません。 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies.
  16. 16. 16 OAuth 2.0で定義されるClientの種類 詳細は下記URLをご参照ください。 https://tools.ietf.org/html/rfc6749#section-2.1 Client Secretをセキュアに保持できるかどうかによって2つのタイプのClientが定義されています。 ◼ Confidential (Client) • Client Secretをセキュアに保護することのできるClient • Web ApplicationにあるClient Secretのようにセキュアに保護できる環境 ◼ Public (Client) • Client Secretをセキュアに保護することのできないClient • ブラウザ上のJava ScriptのようにClient Secretをセキュアに保護できない環境 • スマートフォンネイティブアプリケーション。ソースコードにClient Secret保持してしまう とリバースエンジニアリングでClient IDが取得できるためPublic Clientになる。 • Client Secretが保護できない環境のためClient Secret自体を認証として利用すべきではない Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies.
  17. 17. 17 OAuth 2.0で定義される認可サーバのエンドポイント 詳細は下記URLをご参照ください。 https://tools.ietf.org/html/rfc6749#section-3 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. 認可サーバは次の二つのエンドポイントから構成されます。 Authorization Server Authorization Endpoint Token Endpoint user-agent(ブラウザ)を利用してResource Ownerからリ ソースへアクセスするための認可を取得するためのエンド ポイント。例) /authorize 認可からAccess Tokenに変換するためのエンドポイント。 通常はOAuth Clientの認証を必要とする。 例) /token
  18. 18. 18 Redirect URL Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. • 認可されたことを示す認可コード(code)やAccess TokenをAuthorization EndpointからOAuth Clientへ返すためのOAuth Clientのエンドポイント。 • Clientを発行する際に事前にRedirect URLもClientに紐づけて登録しておく必要があります。 Code Redirect URL Authorization Server (Authorization Endpoint) Client Access Token HTTP/1.1 302 Found Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz レスポンスサンプル HTTP/1.1 302 Found Location: http://example.com/cb#access_token=16f9dd0c-1d59-4c78-9259- 6a2080b46707&expires_in=3600&token_type=Bearer&scope=XXXXX レスポンスサンプル
  19. 19. 19 Scopeを利用したアクセス制御 • Authorization ServerでResource Ownerに許可されたscopeと呼ばれるアクセス権限をAccess Tokenに対して付与します。 • Access Tokenを使ってResource Serverで保護されているAPIをリクエストする際はResource ServerでそのAPIリクエスト で必要なscopeがAccess Tokenに付与されてるかどうかをチェックすることでアクセス制御を行います。 OAuth Client Access Token Request scope=email Access Token Response Access Token Authorize Access Token scope=e-mail 発行したAccess Tokenにアクセス権”email”を付与 Access Token API Request 送信されたAccess Tokenにe-mailというscope が付与されているか? API Response チェック Resource Server Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies.
  20. 20. 20 OAuth 2.0で定義されるGrant Type (アクセス権限をClientへ付与する方法) 詳細は下記URLをご参照ください。 https://tools.ietf.org/html/rfc6749#section-1.3 1. Authorization Code Grant 2. Implicit Grant 3. Resource Owner Password Credentials Grant 4. Client Credentials Grant Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies.
  21. 21. Authorization Code Grant
  22. 22. 22 Authorization Code Grant フローの詳細(1) Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. ③アプリケーションにユーザー情報 を渡すことを同意しますか? Authorization Server (Authorization Endpoint) Client Resource Owner ②Authorization Serverへ リダイレクトされResource Ownerが認証される。 • Client ID/Secretは事前に Authorization Serverに発 行してもらう。 • 発行されたClient IDに Redirect URLを登録して もらう。 • Client Secretがセキュア に保持されている。 Clientがブラウザ経由でClient ID + Redirect URL + Scopeを付与してAuthorization Serverへリクエストを送 信する。 セキュリティー確保のため送信さ れたRedirect URLは事前にClient IDに登録済みのものかどうかを チェックする必要があります。 Client ID scope Redirect URL Client ID Secret ①ClientがResource Ownerの リソースにアクセスしたい。
  23. 23. 23 Authorization Code Grant フローの詳細(2) Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. Code Redirect URL ①ユーザの同意後、codeを発行して ブラウザ経由でアプリケーションの Redirect URLへcodeを渡す。 Authorization Server (Authorization Endpoint) Client Resource Owner 認証成功後にはcodeがブラウザ経由 でリダイレクトされClientへ転送され る。Access Tokenは渡らないため途 中経路やブラウザ上からはAccess Tokenは漏えいしない。
  24. 24. 24 ①Codeを渡しますのでAccess Tokenを ください。 ④Access Tokenを渡します。 Access Token Authorization Code Grant フローの詳細(3) Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. Authorization Server (Token Endpoint) Client Code Clientが直接、Code + Client ID/ Secret + Redirect URLを送信してAccess Tokenを取得する。 ②codeをバリデーションする (初回の利用であるかどうか?有効 期限は?そのClient IDに発行した Codeかどうか?) Client ID Redirect URLSecret ③API ClientからClient ID/Secretが送信 されClientの認証ができる。
  25. 25. 25 Access Token {“sub”:”user”, “email”:’’user001@gmail.com” ….} Authorization Code Grant フローの詳細(4) Resource Server Client Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. ①Access TokenをHTTPのヘッダに挿入して 目的のAPIをコールする。 ②Access Tokenをバリデーションする (発行済みのトークン? 有効期限は?許 可されたリソースへのアクセス?) ③レスポンスが返る Authorization: bearer <Access Token>
  26. 26. 27 Web Application ブラウザ ユーザー本人 保護されている情報 (A)Authorization Request (C)Authorization Response (D)Access Token Request (E)Access Token Response &Client ID/Secret 詳細は下記URLをご参照ください。 https://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.1 GET /authorize?response_type=code&client_id=s6BhdRkqt3&state=xyz&redirect_uri=http s%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&scope=xxxxx HTTP/1.1 Host: server.example.com POST /token HTTP/1.1 Host: server.example.com Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fc b リクエストサンプル リクエストサンプル Client ID / Secret HTTP/1.1 302 Found Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA&state=xyz レスポンスサンプル HTTP/1.1 200 OK { “access_token”:“2YotnFZFEjr1zCsicMWpAA”, “token_type”:“example”, “expires_in”:3600, “refresh_token”:“tGzv3JOkF0XG5Qx2TlKWIA” } レスポンスサンプル Authorization Code Grant Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. response_type=code grant_type=authorization_code
  27. 27. 28 API Call to protected Resource OAuth Client (Web Application) Resource Server GET /resource HTTP/1.1 Host: example.com Authorization: Bearer <Access Token> リクエストサンプル API Request API Response Authorization Code Grant Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies.
  28. 28. 29 Authorization Code Grant CA API Gatewayの利用 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. Authorization Server ①Authorization Endpoint ②Token Endpoint ③Resource Server API Client Authorization Request Authorization Response Access Token Request Access Token Response Code Access Token ID Token API request Access Token User info API response Authentication CA API Gateway API Server API request API response OpenID Connectの場合 Client ID Secret Code Client ID credentials redirect_uri redirect_uri scope
  29. 29. Implicit Grant
  30. 30. 31 Implicit Grant フローの詳細(1) Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. ③アプリケーションにユーザー情報 を渡すことを同意しますか? Authorization Server (Authorization Endpoint) Client Resource Owner ②Authorization Serverへ リダイレクトされResource Ownerが認証される。 ①ClientがResource Ownerの リソースにアクセスしたい。 Clientがブラウザ経由でClient ID + Redirect URL + Scopeを付与してAuthorization Serverへリクエストを送 信する。 セキュリティー確保のため送信さ れたRedirect URLは事前にClient IDに登録済みのものかどうかを チェックする必要があります。 • Client IDは事前に Authorization Serverに発 行してもらう。 • 発行されたClient IDに Redirect URLを登録して もらう。 • Client Secretがセキュア に保持できない。 Client ID scope Redirect URL Client ID
  31. 31. 32 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. Redirect URL ①ユーザの同意後、Access Tokenを 発行してブラウザ経由でアプリケー ションのRedirect URLへAccess Tokenを渡す。 Authorization Server (Authorization Endpoint) Client Resource Owner 認証成功後にはAccess Tokenがブラ ウザ経由でリダイレクトされClientへ 転送される。Access Tokenはブラウ ザを利用してResource Ownerを経 由するためAccess Tokenの漏洩リス クはある。 Implicit Grant フローの詳細(2) Access Token ClientとしてPublicを想定している ためClient Secretは利用しない。 Client Secretをセキュアに保存できないClient のタイプを想定しているため、Client Secret を利用したAPI Clientの認証は行わない。
  32. 32. 33 Access Token {“sub”:”user”, “email”:’’user001@gmail.com” ….} Resource Server Client Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. ②Access Tokenをバリデーションする (発行済みのトークン? 有効期限は?許 可されたリソースへのアクセス?) ③レスポンスが返る Implicit Grant フローの詳細(3) ①Access TokenをHTTPのヘッダに挿入して 目的のAPIをコールする。 Authorization: bearer <Access Token>
  33. 33. 35 Java Script ブラウザ ユーザー本人 保護されている情報 GET /authorize?response_type=token&client_id=s6BhdRkqt3&state=xyz &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&scope=xxxxx HTTP/1.1 Host: server.example.com リクエストサンプル Client ID HTTP/1.1 302 Found Location: http://example.com/cb#access_token=16f9dd0c-1d59-4c78-9259- 6a2080b46707&expires_in=3600&token_type=Bearer&scope=XXXXX レスポンスサンプル Implicit grant (A) Authorization Request (C) Access Token Response Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. https://tools.ietf.org/html/rfc6749#section-4.2 response_type=token
  34. 34. 36 Implicit Grant CA API Gatewayの利用 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. Authorization Server ①Authorization Endpoint ②Resource Server API Client Authorization Request Access Token Response Access Token ID Token API request Access Token User info API response Authentication CA API Gateway API Server API request API response OpenID Connectの場合 Client ID credentials redirect_uri scope
  35. 35. Resource Owner Password Credentials Grant
  36. 36. 38 Resource Owner Password Credentials Grant Client App(Client) Resource Owner Authorization Server Resource Server Resource Owner’s ID and Password Resource Owner’s ID and Password + Client ID /Client Secret Authenticate OAuth Client Authenticate Resource Owner Access Token Request resource with Access Token Response Resource OwnerのIDとパスワー ドがClientにわたってしまうので注 意が必要。信頼できるClientでの みこのGrant typeが成立する。 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies.
  37. 37. 39 Resource Owner Password Credentials grant • Resource OwnerがClientに直接IDとパスワードを渡してClientがそのIDとパスワードをAuthorization Serverへ送信し Access Tokenを取得します。つまり、ブラウザを利用したAuthorization Serverへのリダイレクトは発生しません。 • Resource Ownerのパスワードが直接Clientに渡るため、Clientが信頼できるもの、つまり、Client自体とResource Serverで保護されているバックエンドのAPIの両方が同一の組織から提供されている環境である必要があります(Clientが 信頼できなければパスワードがClientから漏えいしてしまう)。 • Authorization ServerのToken Endpointへ直接、Resource OwnerのIDとPasswordを送信するためIDとPasswordの施 行テスト(ブルートフォースアタック)を検知できる仕組みが必要(Rate Limitingなど) Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies.
  38. 38. 40 Smart phone Native App ユーザー本人 保護されている情報 Web Application Resource Ownerの入力したパスワー ドがClient経由で直接送信され Access Tokenが生成される。 POST /token HTTP/1.1 Host: server.example.com Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW Content-Type: application/x-www-form-urlencoded grant_type=password&username=johndoe&password=A3ddj3&scope=xxxxx リクエストサンプル 詳細は下記URLをご参照ください。 https://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.3 Client ID/Secret Resource Owner Password Credentials Grant Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. grant_type=password
  39. 39. 41 Resource Owner Password Credentials Grant CA API Gatewayの利用 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. Authorization Server ②Token Endpoint ③Resource Server API Client Access Token Request Access Token Response Client_id & client secret Access Token API request Access Token User info API response CA API Gateway API request API response Basic認証で送付さ れる credentials API Server scope
  40. 40. Client Credentials Grant
  41. 41. 43 Client Credentials Grant Authorization Server Resource Server Client ID /Client Secret Authenticate OAuth Client Access Token Request resource with Access Token Response ClientのClient IDとSecretの認証の みでAccess Tokenが発行される。 Client App(Client) Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies.
  42. 42. 44 • ClientのClient IDとClient SecretをAuthorization Serverで認証を行いAccess Tokenを発行する方法。 • Client(アプリケーション)の認証のみでResource Ownerの認証は発生しませんのでResource Ownerの認証が必要で ない環境に利用が想定されます。 ✓ ユーザーの同意が必要でない情報へのアクセス • Client Secretが盗まれてしまうとAccess Tokenが取得できてしまうため注意が必要です。 Client Credentials Grant Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies.
  43. 43. 45 Client SecretのみでAccess Tokenが生 成される。Resource Ownerの認証はな し。 POST /token HTTP/1.1 Host: server.example.com Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW Content-Type: application/x-www-form-urlencoded grant_type=client_credentials&scope=xxxxx Client ID / Secret リクエストサンプル Client Credentials Grant Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. grant_type=client_credentials
  44. 44. 46 Client Credentials Grant CA API Gatewayの利用 Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. Authorization Server ②Token Endpoint ③Resource Server API Client Access Token Request Access Token Response Client_id & client secret Access Token API request Access Token User info API response CA API Gateway API Server API request API response Basic認証で送付される scope
  45. 45. 各Grant Typeのまとめ
  46. 46. 48 Authorization Code Grant Implicit Grant Resource Owner Password Credentials grant Client Credentials grant 利用を想定しているClientのタイプ Confidential public Client自体がAPI提供者と同一 Confidential Client Secretを認証として利用す るかどうか? 利用する 利用しない 利用する(ClientがConfidentialもし くはClient Secretが発行されている 場合) 利用する Resource Ownerの認証が必要 必要 必要 必要 必要なし Clientの認証で利用する要素 ✓ Client Secret ✓ Code ✓ Redirect URL ✓ Redirect URL(Client Secretの代替) ✓ Client Secret(Clientが ConfidentialもしくはClient Secretが発行されている場合) ✓ Client Secret 具体的なClientの種類 - Web Application Server - Native Mobile App ※1,2,3 - Native Mobile Appでの利 用は推奨されない。※4 ✓ Access Tokenが直接返さ れるためRedirect URLから 不正に取得される可能性が ある。 - Web Application Server - Native Mobile App (Appと API Server側に強い信頼関係が 必要) - 各Grantタイプのまとめ Copyright © 2018 CA. All rights reserved. All trademarks, trade names, service marks and logos referenced herein belong to their respective companies. ※4 Custom URL schemeを悪用し て別のAppがAccess Tokenを不正取 得できる可能性が否定できない。 ※1 Dynamic Client Registration(RFC7591)によりClient ID/SecretをNative Mobile Appのソー スコードに組み込まなくてよくなる。 ※2 PKCE(RFC7636)により認可コー ド(Code)が不正取得され利用されるこ とを防ぐことが可能。 ※3 Mobile AppとAPIの間にSecretを セキュアに保護するAPIサーバを用意 するアーキテクチャも考えられる。

×