web-dev-qa-db-ja.com

client_idとclient_secretについて

OAUTHの初心者で、何かを正しく理解しているかどうかを確認したいと思っていました。OWINとC#を使用しており、次のシナリオを設定しました。

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

  2. ユーザーはJWTを取得し、クライアントはすべてのリクエストでそのトークンを使用します

  3. 承認を必要とするリクエストはすべて、トークンのクレームを使用して、ユーザーがこのリクエストを行えるようにします。

では、client_idとclient_secretはどこに入るのでしょうか。これは、「トークンを取得する前に、私に渡す必要があるanother資格情報のセット(id/secret)であり、-those =有効であり、提供されたユーザー名/パスワードに加えて、JWTを取り戻すことができますか?

2人の関係を理解し​​たい-ありがとうございました。

16
NullHypothesis

Client_idとclient_secretの両方は、パスワードフローでは使用されません。ただし、おそらくご存知のとおり、OAuth2には他のシナリオに適した他のフローがあります。

つまり:

  • ユーザーをサーバー側で認証するWebアプリで使用される承認コードフロー。 client_idは最初のリダイレクトで使用され、client_secretはアプリがトークンとワンタイムコードを交換する最後のステップで使用されます。

  • 個々のユーザーではなくアプリケーションの認証に使用されるclient credentialsフロー

さまざまなフローすべての簡潔なリファレンス: https://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified

4
Wiktor Zychla

認証が必要なのは、アプリケーションとユーザーの2つの当事者です。

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

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

1
Patrick Hofman