OAuth2.0
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*OAuth2.0 とは [#lff59d63]
-[[IETF]] OAuth WG
-RFC 6749
-RFC 6750
*OAuth2.0 の仕様 [#r360be34]
**ロール [#e09c95d3]
-リソースオーナー
--リソースの所有者。クライアントのユーザでもある。
-クライアント
--リソースサーバを利用するアプリケーション。
--事前に認可サーバに登録する必要がある。
-認可サーバ
--アクセストークンを発行する。
-リソースサーバ
**クライアントタイプ [#p8a61742]
-コンフィデンシャルクライアント
--クライアントID・クライアントシークレットを安全に扱うこ...
--サーバサイドのWebアプリ
-パブリッククライアント
--クライアントID・クライアントシークレットを安全に扱うこ...
--ブラウザ向けのWebアプリ(JavaScript)、ネイティブアプリ
**スコープ [#bec90672]
-リソースサーバ上のリソースに対するアクセス権を制御する仕...
-スコープはアクセストークンに紐付ける。
**トークン [#lc7258e4]
-アクセストークン
--認可サーバがクライアントに対して発行する
--スコープ
---アクセス権の詳細を制御するための仕組み
--有効期限(expires_in)
---攻撃者に盗まれても短時間で接続できなくなるように、有効...
--以下の2種類のトークンのどちらかを選択できる。
--[[ベアラートークン]]
---トークンを持っている人を信用する
--利用者制限トークン(Sender Constrained Token)
---トークンと利用者が結びついている必要がある
---HoK(Holder of Key) Token
-[[リフレッシュトークン]]
--アクセストークンの更新に使うトークン
--アクセスを長期間維持することを実現する為のもの
--認可サーバに対してのみ使われるため、攻撃者に盗まれるリ...
--有効期限
---一般的にアクセストークンよりも長く設定される。
-認可コード
--認可コードグラントにおいて、認可サーバがクライアントに...
--クライアントIDに紐づけられている
**エンドポイント [#l8763acc]
-認可エンドポイント
--認可サーバが提供するURI
--クライアントからの認可リクエストのアクセス先
--クライアントに認可コードを発行する
-トークンエンドポイント
--認可サーバが提供するURI
--クライアントからのトークンリクエストのアクセス先(認可...
--クライアントから認可コードを受けてアクセストークンを発...
-リダイレクトエンドポイント
--リダイレクトURI
--クライアントが提供するURI
--認可サーバが発行する認可コードやアクセストークンの受け...
--事前に認可サーバに登録する必要がある
--リダイレクト(ステータスコード302)を使って認可サーバから...
**グラントタイプ [#ld0e66ee]
-認可コードグラント (Authorization Code Grant)
--認可コードを発行した後に、認可コードと交換する形でアク...
--コンフィデンシャルクライアント向け
--[[PKCE]]を使うことでパブリッククライアント向けの利用も...
-インプリシットグラント (Implicit Grant)
--アクセストークンを直接発行する
--パブリッククライアント向け
--リフレッシュトークンの発行が禁止されている
--非推奨 ※アクセストークン漏洩のリスクがある
-クライアントクレデンシャルグラント (Client Credentials G...
--サーバ間で使われる方式
-リソースオーナーパスワードクレデンシャルグラント (Resour...
--ユーザIDとパスワードの受け渡しが必須
*OAuth Dance [#i45ebef8]
-OAuth のシーケンス
*セキュリティ上の脅威 [#ne2e18f7]
**CSRF [#h6dd095d]
-攻撃者のアカウントを使った[[CSRF]] による不正操作
***対策 [#w3d8684b]
-stateを使う
--stateはランダムな文字列
--クライアントが生成し、セッションと紐づけて管理する
***フロー [#o4138676]
+クライアント(スマホアプリ等)が認可サーバに送る認可リク...
+認可サーバはstateを保存する
+認可サーバがクライアントに送る認可レスポンスにstate を追...
+クライアントは受信したstate を検証する
++受信したstate と保存していたstate が一致しているか確認...
**認可コード横取り攻撃 [#ya9cbc2e]
-「[[PKCE]]」参照
**Mix-Up攻撃 [#d2873269]
-複数の認可サーバとやりとりをしているクライアントから認可...
***対策 [#u79a5b54]
-iss を使う
*OAuth2.0を実装しているWebサービス [#z2d45862]
-Facebook
-Google Apps
-Windows Live
*関連サイト [#lb26238a]
**ドキュメント [#a4526a77]
-OAuth 2.0 - OpenIDファウンデーション・ジャパン~
http://www.openid.or.jp/document/index.html#op-doc-oauth2
-The OAuth 2.0 Authorization Framework(日本語)~
https://openid-foundation-japan.github.io/rfc6749.ja.html
-OAuth 2.0 for Native Apps(BCP212 )(RFC8252)~
https://www.rfc-editor.org/info/rfc8252
-OAuth 2.0 Security Best Current Practice~
https://datatracker.ietf.org/doc/html/draft-ietf-oauth-se...
**解説 [#df6d5596]
-「OAuth 2.0」の基本動作を知る(2017.09.01)~
http://www.atmarkit.co.jp/ait/articles/1708/31/news124.html
-OAuth 2.0 の勉強のために認可サーバーを自作する(2019.10.1...
https://qiita.com/TakahikoKawasaki/items/e508a14ed960347c...
-IETF OAuth WGの仕様全部見る(2019.10)~
https://qiita.com/ritou/items/bbf7ffd001f30ec6facc
*関連用語 [#q43c0fc3]
-[[認可]]
-プロテクティッドリソース
-[[CSRF]]
-[[Financial API]]
-[[OpenID Connect]]
-[[OAuth]]
-[[TLS]]
終了行:
*OAuth2.0 とは [#lff59d63]
-[[IETF]] OAuth WG
-RFC 6749
-RFC 6750
*OAuth2.0 の仕様 [#r360be34]
**ロール [#e09c95d3]
-リソースオーナー
--リソースの所有者。クライアントのユーザでもある。
-クライアント
--リソースサーバを利用するアプリケーション。
--事前に認可サーバに登録する必要がある。
-認可サーバ
--アクセストークンを発行する。
-リソースサーバ
**クライアントタイプ [#p8a61742]
-コンフィデンシャルクライアント
--クライアントID・クライアントシークレットを安全に扱うこ...
--サーバサイドのWebアプリ
-パブリッククライアント
--クライアントID・クライアントシークレットを安全に扱うこ...
--ブラウザ向けのWebアプリ(JavaScript)、ネイティブアプリ
**スコープ [#bec90672]
-リソースサーバ上のリソースに対するアクセス権を制御する仕...
-スコープはアクセストークンに紐付ける。
**トークン [#lc7258e4]
-アクセストークン
--認可サーバがクライアントに対して発行する
--スコープ
---アクセス権の詳細を制御するための仕組み
--有効期限(expires_in)
---攻撃者に盗まれても短時間で接続できなくなるように、有効...
--以下の2種類のトークンのどちらかを選択できる。
--[[ベアラートークン]]
---トークンを持っている人を信用する
--利用者制限トークン(Sender Constrained Token)
---トークンと利用者が結びついている必要がある
---HoK(Holder of Key) Token
-[[リフレッシュトークン]]
--アクセストークンの更新に使うトークン
--アクセスを長期間維持することを実現する為のもの
--認可サーバに対してのみ使われるため、攻撃者に盗まれるリ...
--有効期限
---一般的にアクセストークンよりも長く設定される。
-認可コード
--認可コードグラントにおいて、認可サーバがクライアントに...
--クライアントIDに紐づけられている
**エンドポイント [#l8763acc]
-認可エンドポイント
--認可サーバが提供するURI
--クライアントからの認可リクエストのアクセス先
--クライアントに認可コードを発行する
-トークンエンドポイント
--認可サーバが提供するURI
--クライアントからのトークンリクエストのアクセス先(認可...
--クライアントから認可コードを受けてアクセストークンを発...
-リダイレクトエンドポイント
--リダイレクトURI
--クライアントが提供するURI
--認可サーバが発行する認可コードやアクセストークンの受け...
--事前に認可サーバに登録する必要がある
--リダイレクト(ステータスコード302)を使って認可サーバから...
**グラントタイプ [#ld0e66ee]
-認可コードグラント (Authorization Code Grant)
--認可コードを発行した後に、認可コードと交換する形でアク...
--コンフィデンシャルクライアント向け
--[[PKCE]]を使うことでパブリッククライアント向けの利用も...
-インプリシットグラント (Implicit Grant)
--アクセストークンを直接発行する
--パブリッククライアント向け
--リフレッシュトークンの発行が禁止されている
--非推奨 ※アクセストークン漏洩のリスクがある
-クライアントクレデンシャルグラント (Client Credentials G...
--サーバ間で使われる方式
-リソースオーナーパスワードクレデンシャルグラント (Resour...
--ユーザIDとパスワードの受け渡しが必須
*OAuth Dance [#i45ebef8]
-OAuth のシーケンス
*セキュリティ上の脅威 [#ne2e18f7]
**CSRF [#h6dd095d]
-攻撃者のアカウントを使った[[CSRF]] による不正操作
***対策 [#w3d8684b]
-stateを使う
--stateはランダムな文字列
--クライアントが生成し、セッションと紐づけて管理する
***フロー [#o4138676]
+クライアント(スマホアプリ等)が認可サーバに送る認可リク...
+認可サーバはstateを保存する
+認可サーバがクライアントに送る認可レスポンスにstate を追...
+クライアントは受信したstate を検証する
++受信したstate と保存していたstate が一致しているか確認...
**認可コード横取り攻撃 [#ya9cbc2e]
-「[[PKCE]]」参照
**Mix-Up攻撃 [#d2873269]
-複数の認可サーバとやりとりをしているクライアントから認可...
***対策 [#u79a5b54]
-iss を使う
*OAuth2.0を実装しているWebサービス [#z2d45862]
-Facebook
-Google Apps
-Windows Live
*関連サイト [#lb26238a]
**ドキュメント [#a4526a77]
-OAuth 2.0 - OpenIDファウンデーション・ジャパン~
http://www.openid.or.jp/document/index.html#op-doc-oauth2
-The OAuth 2.0 Authorization Framework(日本語)~
https://openid-foundation-japan.github.io/rfc6749.ja.html
-OAuth 2.0 for Native Apps(BCP212 )(RFC8252)~
https://www.rfc-editor.org/info/rfc8252
-OAuth 2.0 Security Best Current Practice~
https://datatracker.ietf.org/doc/html/draft-ietf-oauth-se...
**解説 [#df6d5596]
-「OAuth 2.0」の基本動作を知る(2017.09.01)~
http://www.atmarkit.co.jp/ait/articles/1708/31/news124.html
-OAuth 2.0 の勉強のために認可サーバーを自作する(2019.10.1...
https://qiita.com/TakahikoKawasaki/items/e508a14ed960347c...
-IETF OAuth WGの仕様全部見る(2019.10)~
https://qiita.com/ritou/items/bbf7ffd001f30ec6facc
*関連用語 [#q43c0fc3]
-[[認可]]
-プロテクティッドリソース
-[[CSRF]]
-[[Financial API]]
-[[OpenID Connect]]
-[[OAuth]]
-[[TLS]]
ページ名: