2016-06-23 4 views
0

現在、バックエンドのASP.NETコアマイクロサービスのコレクションを構築しています。これらのサービスは、フロントエンドアプリケーションから直接アクセスされるのではなく、ASP.NET Core APIゲートウェイを通じてアクセスされます。私たちはOpenID ConnectサーバーにIdentityServer4を使用しています。私は、UseJwtBearerAuthenticationミドルウェアが、APIゲートウェイがIdentityServer4に対してJWTベアラトークン(access_token)を検証するように設定することができました。私は、APIゲートウェイが、エンドユーザを知る必要があるかもしれないバックエンドサービスに対する要求に、access_tokenに基づいてid_tokenを注入させたいと考えています。APIのaccess_tokenに基づいてid_tokenを取得します

検証時にid_tokenを取得するためにJWTミドルウェアを設定する方法はありますか?または、APIゲートウェイでOpenID Connectサーバーを手動で呼び出す必要がありますか?

+0

バックエンドサービスでid_tokenの代わりにaccess_tokenを使用してみませんか(私は不思議です)。 –

答えて

0

JWTミドルウェアはスタンドアロン検証を実行します.JWTミドルウェアは、何かを検証または取得するためにIDサーバーに接続しません。追加の電話をする必要があります。

+0

それは完全に真実かどうかわかりません。 1つは、JWTミドルウェアの設定は、私のケースではOpenID Connectサーバーの権限にsthe URLを取る。また、私はaccess_tokenでAPIを打つと、ログにヒットしているOpenID Connectサーバーが表示されます。だから、私はJWTがそれがまだ有効かどうかを見るために各リクエストのaccess_tokenを検証すると思います。 id_tokenを取得するために追加の呼び出しを行う必要があることは、まだ正しいかもしれません。 – johnmckinzie

+0

OpenID Connectサーバーを起動して、署名キーを取得するための設定を取得しているようです。 – johnmckinzie

+0

ああ、はい、起動時に1回のダウンロードですが、リクエスト/トークンごとではありません。スタートアップのダウンロードが不要になるように、ローカルで設定することもできます。 – Tratcher

1

APIではid_tokensを使用しません。これはクライアント用です。

特定のIDクレームにアクセスするには、リソーススコープにScopeClaimsを設定してアクセストークンに含めるか、アクセストークンを使用してuserinfoエンドポイントに連絡し、IDを返しますクレーム

関連する問題