2017-02-01 17 views
1

モバイルクライアント(アプリケーション)を使用して、ユーザーがGoogleで認証できるようにしました。だから、クライアントはアクセストークンといくつかの情報(名前、電子メールなど)をGoogleから受信します。正常に動作します!ASP.NET Web APIでアクセストークンを検証する

また、モバイルアプリとのコミュニケーションが必要なASP.NET Web APIも作成しました。クライアント側では、トークンをHttpClientに追加します。 client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer"、 "pretty_long_access_token_separated_by_two_dots");

質問1:https://jwt.io/ ヘッダーとペイロードは大丈夫ですが、それは「無効だように思える:私はこのサイトにアクセストークンを「解読」しようとしています(作成してくださいそれは大丈夫です)署名 "(下部に記載)。私はこれについて心配すべきですか?サーバー側では


、私はスタートアップクラスの設定方法にこれを追加しました:

app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions 
{ 
    AuthenticationMode = AuthenticationMode.Active, 
    AllowedAudiences = new List<string> {"my_client_id"}, 
    IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
    { 
     new SymmetricKeyIssuerSecurityTokenProvider(@"https://accounts.google.com/", "my_client_secret") 
    }, 
}); 

私は、私のサーバー側で、トークンを使用してやりたい唯一のことは、作っています私のアプリの検証済みのユーザーだけが自分のAPIコントローラにアクセスできるようにする必要があります。

質問2:UseJwtBearerAuthenticationは正しいですか、間違った方向に向いていますか?

私の問題は、私のWEB APIコントローラにアクセスしようとすると、私は絶えず401を無許可で取得します。

私は正しい軌道に乗っていた場合、私は、サーバー側の設定についての詳細を説明しようとすることができます...

どれheltは非常に高く評価されるだろう!

+0

明確にするために、JWTまたはGoogleを発行していますか? – Ben

答えて

0

あなたはJWTのトークンを使用している場合は、あなたの代わりにBearer

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("JWT", "pretty_long_access_token_separated_by_two_dots"); 

JWTが必要になります署名は本物ため、唯一の認証サーバが必要とするトークンを検証するために使用されます。 Googleがあなたの認証サーバーである場合、トークンが有効であることを確認するためにサーバーから呼び出すことができるAPIエンドポイントが必要です。

サーバーは、JWTのトークンを発行している場合、あなたが最初の場所でそれを作成するために使用された秘密を使用して署名を復号することによってトークンが有効であることを確認する必要があります

Googleが発行された場合JWTを使用してサーバーで自己検証できるようにするには、RS256などの別の暗号化タイプを使用する必要があります。これにより、Googleが発行した公開鍵を使用して署名を検証できます)

https://jwt.io/は、秘密のコードを使用して署名されているため、署名を検証できません。このシークレットコードをお持ちの場合は、右下のテキストボックスに貼り付けることができます。シークレットが正しい場合、トークンが期限切れになっていない場合は、有効なJWTトークンとして表示されます。

+0

ありがとうございました! はい、Googleは認証サーバーです。私は自分自身を実行しません。 私のサーバー側(スタートアップ>設定)で、 app.UseJwtBearerAuthentication(...)を使用しないでください。または? サーバー側で、Google-APIの検証呼び出しを実行する必要がありますか。 よろしくお願いします。Andreas – Brosten

+0

カスタム認証と認証属性を使用していますか? – Brosten

+1

@Brosten - 私はあなたが使用しているGoogleの認証に慣れていない、おそらくあなたはAPIや何かにリンクすることができますか? – Ben

関連する問題