2016-01-04 14 views
6

初心者からOAUTHまでのビットで、何かを正しく理解しているかどうか尋ねたいと思っていました。私は、次のシナリオOWINとC#と私のセットアップを使用しています:client_idとclient_secretを理解する

  1. ユーザーがパスワードのgrant_typeとユーザー名/パスワードを渡し、私のトークンエンドポイントに要求を行います。資格情報が有効な場合は、JWTを作成します。

  2. ユーザーは、JWTを取り戻すし、クライアントはすべての要求

  3. 私はこの要求を行うことを許可されたユーザを確実にするためにトークンの主張を使用する許可を必要とするすべての要求のために、今後、そのトークンを使用しています。

だから、どこにclient_idとclient_secretが入りますか?これはちょうどあなたがトークンを得ることができる前にセキュリティの余分な層ですか?私は別のの資格(ID /秘密)のセットを渡す必要があります。それらのが有効である場合にのみ、あなたのユーザー名/提供されたパスワードは、あなたが戻ってJWTを得ることができます

は、2つの関係者に理解したいと思います - 本当にありがとうございました

+0

これらは両方確認するために、トークンの検証に使用されています両側が一致します。あなたがGoogleマップのAPIキーを使用するときのような種類。 1つは登録時に自分の側で作成され、各リクエストで渡すのと同じキーを取得します。 –

答えて

3

client_idとclient_secretの両方がパスワードフローで使用されていません。ただし、OAuth2には他のシナリオに適したフローがあります。

すなわち:ユーザーのサーバー側の認証をWebアプリケーションで使用される

  • 認証コード流れ。 client_idは最初のリダイレクトで使用され、client_secretは最後のステップで使用され、そこでアプリケーションはトークンの1つのタイムコードを交換します。

  • クライアントの資格情報アプリケーションを認証するために使用されるフローではなく、個々のユーザー

すべての様々なフローの簡潔な参照:https://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified

+0

私はちょうどユーザーがシステムにログインできるようにするとき、私はclient_idまたはclient_secretを必要としないように思えますか?そうであれば、なぜユーザーにトークンを返すためのユーザー名/パスワードでログインさせることができないのですか? – NullHypothesis

+0

@ user3379785:なぜですか?ユーザー名/パスワードを覚えるので、あなたのアプリは両方を要求する必要があります。誰もが、未知のページにGoogle/facebookの資格情報を提供することによって、彼らのGoogle/facebookの資格情報を提供するリスクを負うことはありません。認可コードフロー**はブラウザをプロバイダページにリダイレクトして、ページに資格情報が提供され、不要なリークの余地がなくなります。 –

+0

私のフロントエンドはバックエンドAPIと同じドメインにあります。私のアプリだけが、ユーザーのユーザー名/パスワードでJWTを取得するための呼び出しを行うアプリケーションです。だから、私の場合、client_idまたは秘密の必要はありませんか?私は実際に秘密がどのように使用されているのかわかりません。なぜなら、JSが私のAPIに直接呼び出され、バックエンドのAPIが資格のチェックとJWTの発行を処理しているからです。 – NullHypothesis

0

認証される必要がある2つの政党があります?!アプリケーションとユーザーが

アプリケーションはIDとシークレットで認証され、コールバックURLによってバックアップされる可能性があります。これにより、recトークンのipientは正しいものです。

ユーザーは、OAuthプロバイダを通じて認証されます。それにはユーザ名/パスワード、またはOAuthプロバイダが必要と考えるものを使用できます。このトークンは、アプリケーションがユーザー名とパスワードを知らなくてもユーザーデータを取得できるようにするために使用されます。

+0

これは、許可されていないアプリケーションが自分のAPIを呼び出すのを防ぐためです。呼び出しが自分のAPIで匿名のアクションになっても、クライアントだけがアクセスできるように使用を制限できますか?大丈夫です。だから一般的に、あなたはいつもAPIキー/シークレットとトークンを各リクエストに渡したいのですか? – NullHypothesis

+0

はい、基本認証メカニズムです。 –

関連する問題