私は2つのサーバAとBを持っているとしましょう。ユーザエージェントはAを認証して認証するためにA(そしてOpenIDプロバイダ)にしか接続しません。 Bを信頼し、HTTPS経由でのみBと話すAが、OpenIDプロバイダのトークンエンドポイントから受信した(暗号化されていない)IDトークンをBに渡すことはOKですか?暗号化されていないIDトークンを共有することはできますか?
これは、AがIDトークンで表されるように、認証されたユーザーに代わってBの操作を呼び出すことができるようにするためです。 Bは、ユーザーが実際にAで動作するように認証されたことを検証できなければなりません(IDトークンのaud
オーディエンス値とIDトークンの署名をチェックして、改ざんされていないことを確認します。 。
これは良い方法と考えられますか?それとも別のやり方でやっているのですか?
また、この場合、IDトークンを要求するときに、BのクライアントIDをaud
リストに追加する必要がありますか?私はその点を見ていませんが、実際にはOpenID認証エンドポイントはエンドユーザにエンドユーザへのオーディエンス(実際にはエンドユーザに何も意味しないクライアントIDではありません)を実際に表示します彼らの同意を得ますか?
アクセストークンは、UserInfoエンドポイントからユーザーデータを取得するためだけにBによって使用できます。私は、Bを信頼することなく、さらにOpenIDプロバイダとのやりとりなしに、AからBに送信されたデータを調べることによって、Bのユーザの身元を確認し、ユーザの同意を確認できるようにしたいと思います。ですから、認証と認証の詳細をAからBに送信し、その詳細をOpenID ProviderがBの署名で検証する必要があります。元の質問を書き直すことができるかどうかがわかります。 –
アクセストークンは、クライアントが追加のスコープを要求することによって、ユーザー情報エンドポイント以外のAPIを呼び出すために使用することができます –
私は、認証トークンがOpenIDで実際のデータと交換されるだけの不透明な識別子プロバイダーのUserInfoエンドポイントが、私の宿題を済ませて、認証トークンa)は同意したクレームを含み、b)OpenIDプロバイダーによって署名されています。それが私が必要なものすべてです!私はついにあなたの答えを理解します。 –