2016-11-15 6 views
3

内部APIへのアクセス用にIdentity Serverが設定されています。 Googleでは、1つのリクエストで内部APIのIDとアクセストークンを取得する新しいJavaScriptクライアントと、外部IDプロバイダ(この場合はGoogle)から直接APIを呼び出すためのアクセストークンを取得します。私はそれを得ることが可能だったなら私はid_tokenでクレームとして返すことができると思っていた。IdentityServer3の外部プロバイダのAPIのアクセストークンの取得

これはサポートされていますか?アイデンティティプロバイダの応答タイプを「id_token token」に設定すると、アクセストークンがIdentity Serverに返されていることがわかりますが、ユーザサービスメソッドのコンテキストでは表示されません。

+0

「外部IDプロバイダから直接APIを呼び出す」と言うときは、独自のAPIを呼び出すことを意味しますが、Googleとの認証で得られたトークンを使用していることを意味しますか?私はいくつかのサンプルを見て、これを設定しようとしていたときに私を助けてくれました。https://github.com/IdentityServer/IdentityServer3.Samples – Remotec

+0

この特定のクライアントは両方のAPIを呼び出す必要があります(Googleのアクセストークンを使用)とGoogle API(Googleアクセストークンを使用)を使用します。 IDPとしてGoogleを使用して常に認証されます。私はこのシナリオをカバーするためのサンプルで何も見ていませんでした(これは可能でない/推奨されていないという指標かもしれません) – lgaud

答えて

1

と外部のアイデンティティプロバイダから直接APIを呼び出すためのアクセストークン(この場合は、Googleの)

通常IdentityServerの使用は抽象的に意味し、知っていることから、あなたのアプリをシールドされていますユーザが使用した上流のアイデンティティプロバイダ。しかし、これを言っていると、IdenittyServerのサインイン時にGoogleアクセストークンを取得できます。 1つのアイデアは、データベースに入れてから、ユーザーサービスのGetProfileData APIで発行されたクレームにアプリに戻します。

+0

私はパイプラインのどこでGoogleからのアクセストークンを傍受することができるのだろうか?たとえば、AuthenticateExternalAsyncに転送します。 – lgaud

+0

ミドルウェアでは、彼らは発砲するイベントを持っています –

+0

@IgaudこれはOwinミドルウェアにあります。これのソースコードはこちらhttp://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Security.Google/GoogleOAuth2AuthenticationHandler.cs Brock Allen - トークンはどのようにキャプチャされますか? IdentityServerではどこでこの値を取得できますか? GoogleOAuth2AuthenticationHandlerのサブクラスを作成しないと痛いでしょう!ありがとう! –

関連する問題