2017-07-10 2 views
0

私はclient_credentialsの認可を身元の点で理解できません。私は、認証コードフローを使用してOpenId ConnectでWebアプリケーションを保護しています。これは期待どおりに機能し、適切なアクセスとIDトークンが認証サーバーから返されます。ここまでは順調ですね。OpenIdの理解connect_credentialsのIDの付与について

私はいくつかのパブリックAPIを持っています。私は顧客にアクセス権を与えたいと思います。このAPIへのアクセスは、私たちが提供するさまざまなクライアントライブラリを介して行われます。多くの例で

はそこclient_credentials流れはそれがCLIENT_IDとアクセストークンを取得するCLIENT_SECRETを提供するために使用されます。仕様によれば、このフローはエンドユーザを必要とせず、識別トークンが返されない。

私は通話者の身元を知らないので、私は困っています。私が言うことができる唯一のことは、アクセストークンは有効ですが、これは実際にどのように行われていますか?

このフローを使用しているときに、どのユーザーがサービスを呼び出したかをどのように知っていますか? user_accountからclient_id/client secretへのマッピングを保存し、apiエンドポイントでそのユーザーを取得する必要がありますか?私は、サービスを呼び出した人の身元に基づいて、いくつかのアクセスを断る必要があります。

もし私がそのフローでIDトークンを取得できない場合、OpendId Connectが私にそのようなメリットをもたらすのは本当ですか?単純なOauth2のclient_credentialsフローでこれを行うと、同じ結果になります。

誰かに私にティップを教えてもらえますか?

答えて

3

client_credentialsフローは、エンドユーザーを識別するシナリオでは使用されません。実際には、client_credentialsグラントタイプはOpenID Connectで定義されていません。あなたは、あなたが示唆するように、認可コード付与に頼るべきです。

+0

これは、顧客が以前にユーザーエージェントとやりとりしなくても私のAPIに決してアクセスすることができないということですか? – Jay

+0

@あなたはクライアントとAPIのやりとりのためにOpenID Connectは必要ありません。この場合、OAuth2で十分です。 –

+0

そしてWHOが私のAPIを呼んでいることをどのように知っていますか?たとえば、どの顧客にID情報がないのですか? – Jay

関連する問題