[解決済み] OAuth Authorization CodeとImplicitワークフローの違いは何ですか?それぞれを使用するタイミングは?
質問
OAuth 2.0には複数のワークフローがあります。この2つに関して、いくつか質問があります。
- 認証コードの流れ - ユーザーがクライアントアプリからログインすると、認証サーバーからアプリに認証コードが返されます。アプリは認証コードをアクセストークンに交換します。
- 暗黙のグラントフロー - ユーザーがクライアントアプリからログインすると、認可サーバーがクライアントアプリにアクセストークンを直接発行します。
この2つのアプローチは、セキュリティの面でどのような違いがあるのでしょうか?また、どちらがより安全なのでしょうか?
サーバーが直接アクセストークンを発行できるのに、1つのワークフローで余分なステップ(認証コードとトークンの交換)が追加される理由がわからないのですが。
異なるウェブサイトによると、認証コードフローは、クライアントアプリが認証情報を安全に保つことができる場合に使用されるそうです。なぜですか?
解決方法は?
その
access_token
は、保護されたリソース(API)を呼び出すために必要なものです。Authorization Codeのフローでは、これを取得するために2つのステップがあります。
-
ユーザーが認証し
code
をAPIコンシューマ("Client"と呼びます)に送信します。 -
API のクライアント(通常はウェブサーバー)は、この API を使用するために
code
で取得したデータをaccess_token
で自分自身を認証する。client_id
とclient_secret
-
そして、APIを呼び出すには
access_token
.
つまり、APIを通じて表面化したリソースを所有するユーザーと、APIを利用するクライアント(Webアプリなど)の二重チェックがあるわけだ。どちらもアクセスが許可されるために検証されます。ここでOAuthのquot;authorization"の性質に注目してください:ユーザは自分のリソースへのアクセスを(APIの
code
認証後に返される)アプリに、アプリは
access_token
というように、ユーザーの代わりに呼び出す。
暗黙のフローでは、ステップ2が省略される。そのため、ユーザー認証の後に
access_token
が直接返され、それを使ってリソースにアクセスすることができます。APIは誰がそのAPIを呼び出しているのか知らない。誰でも
access_token
ができますが、前の例ではウェブアプリだけがアクセスできます(内部には通常誰もアクセスできません)。
暗黙のフローは、通常、以下のようなシナリオで使用されます。
client id
と
client secret
は推奨されません(例えばデバイス、いずれにせよ多くの人がそうしていますが)。これが免責事項の意味するところです。クライアントコードにアクセスできる人がいるため、認証情報を取得してリソースクライアントのふりをすることができます。暗黙のフローでは、すべてのデータは揮発性であり、アプリには何も保存されません。
関連
-
[解決済み] OAuth 2.0のBearer Tokenとは具体的に何ですか?
-
[解決済み] JWTとBearer Tokenの違いは何ですか?
-
[解決済み] OpenIDとOAuthの違いは何ですか?
-
[解決済み] JWT認証とOAuth認証の主な違いは何ですか?
-
[解決済み】OAuth2の「暗黙の」フローはとてもうまく機能しているのに、なぜ「認証コード」フローがあるのですか?
-
[解決済み】OAuth2.メリットとユースケース - なぜ?
-
[解決済み】OAuth 2の暗黙のグラント承認タイプの目的は何ですか?
-
[解決済み】アクセストークンが失効するのはなぜですか?
-
[解決済み】OAuth 2は、Security Tokenを使用したリプレイ攻撃などからどのように保護するのでしょうか?
-
[解決済み] リソースサーバーのOAuth 2.0アクセストークンを検証する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] OAuth 2.0のBearer Tokenとは具体的に何ですか?
-
[解決済み] JWTとBearer Tokenの違いは何ですか?
-
[解決済み】OAuth2の「暗黙の」フローはとてもうまく機能しているのに、なぜ「認証コード」フローがあるのですか?
-
[解決済み】OAuth 2の暗黙のグラント承認タイプの目的は何ですか?
-
[解決済み】OAuth 2.0 Bearer Tokenとは、具体的にどのようなものですか?
-
[解決済み】OAuth: ローカルのURLでテストする方法は?
-
[解決済み] OAuth Authorization CodeとImplicitワークフローの違いは何ですか?それぞれを使用するタイミングは?
-
[解決済み] OAuthでREST APIを保護しつつ、サードパーティのOAuthプロバイダによる認証を許可する(DotNetOpenAuthを使用する)
-
[解決済み] JWT (Json Web Token) Audience "aud" vs Client_Id - 違いは何ですか?