2017-04-14 21 views
4

私はB2Cを使用してAsp.NetコアのWebApiを保護しています。私のコードは以下の通りです。私はトークンを検証する必要がありますか、それとも私のためにそれをやっているミドルウェアですか?誰もがこれをやらなければならないと思うと、サンプルコードを見つけるのが簡単になるだろうが、実際の方向性を得ることはできない。Asp.NetコアWeb APIでB2C JWTトークンを検証する

ただし、このB2C documentationは、私のAPIが検証を行うことを示しています。

私はsampleを見つけましたが、コア用ではなくCertificateValidator = X509CertificateValidator.Noneを使用しています。目的を破るものではないのですか?そして、別のsample hereとなっています。

私はB2Cとそのすべての署名鍵を持っている必要はありませんか?

私はそれらの解決法を組み合わせることができますが、私は実際にこれを行う必要がありますか?

ありがとうございます。

 app.UseJwtBearerAuthentication(new JwtBearerOptions() 
     { 
      AuthenticationScheme = Constants.B2CAuthenticationSchemeName, 
      AutomaticAuthenticate = false, 
      MetadataAddress = string.Format(
       _identityConfig.B2CInfo.AadInstance, 
       _identityConfig.B2CInfo.Tenant, 
       _identityConfig.B2CInfo.Policies 
        .Where(p => p.IsDefaultSignUpSignInPolicy == true) 
        .First() 
        .Name), 
      Audience = _identityConfig.B2CInfo.ClientId, 
      TokenValidationParameters = new TokenValidationParameters 
      { 
       ValidateLifetime = true, 
       RequireExpirationTime = true, 
       RequireSignedTokens = true, 
      }, 
      Events = new JwtBearerEvents 
      { 
       OnAuthenticationFailed = B2CAuthenticationFailed 
      } 
     }); 
+0

私は今日同じ質問をしています。そして私はAPIコールで検証しようとしています。私はまだこれをやらなければならないと思っています。 – Mukus

答えて

4

私はトークンを検証する必要があるか、ミドルウェアが私のためにそれをやっていますか?

JWTベアラーミドルウェアはあなたのためにそれをしない(明示的trueRequireSignedTokensを設定する必要はありませんので、デフォルトでは、それは自動的に、符号なしまたは偽造のトークンを拒否します)。

目的を破ることはできませんか?

証明書に埋め込まれた公開非対称キー(RSAまたはECDSAなど)を使用して署名を検証し、証明書自体(特にそのチェーン)を検証することには違いがあります。署名の検証はASP.NETコアで完全にサポートされていますが、証明書の検証はまだサポートされていません。

私はB2Cとそのすべての署名鍵を持っている必要はありませんか?

JWTベアラミドルウェアは、B2Cのディスカバリエンドポイントから自動的に取得するため、手動で行う必要はありません。詳細については、OIDCディスカバリ仕様をお読みください。https://openid.net/specs/openid-connect-discovery-1_0.html

+0

私は残りのドキュメントがあなたの説明ほど明確であることを望みます。どうもありがとうございます!迅速な対応に感謝します。 – nhwilly

+0

@nhwilly私の喜び(私が助けることができてうれしい!) – Pinpoint

関連する問題