私が製作したminimal verifiable sampleのASP.NET Core 1.0(rtm)を使用して、私が作ったJSON Webトークンが.NETのコアのJSONウェブトークンミドルウェア請求チャレンジを渡すと、このエラーで失敗している:私はASP.NETコアRC1でうまく働いた最小限のサンプルを、生産しているUseJwtBearerAuthenticationがIDX10504で失敗しました:署名を検証できませんでした。トークンに署名がありません
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException:
IDX10504: Unable to validate signature, token does not have a signature:
'... ... token value here...'
が、RTMでは動作しません。私はテストするためにRC2に移植しませんでしたが、私はそのようなテストは無意味だと信じています。あなたは、提供されたテストスクリプトでデモを行使することができます
python tests\testloginapi.py
GET OK: 200 http://localhost:54993/authorize/login?username=TEST&pas...
POST OK: 200 http://localhost:54993/authorize/login?username=TEST&pas...
authorization token received... eyJhbGciOi...
expected status 200 but got 401 for GET http://localhost:54993/authorizetest/test
私の最小限の例の
要点は以下のとおりです。
Startup.cs方法の設定はあります
app.UseJwtBearerAuthentication(_keyArtifacts.getJwtBearerOptions());
ベアラ・オプションは、このようなものです:
public static JwtBearerOptions CreateJwtBearerOption(RsaSecurityKey key, string tokenIssuer, string tokenAudience)
{
var jwtBearerOptions = new JwtBearerOptions();
jwtBearerOptions.AutomaticAuthenticate = true;
jwtBearerOptions.AutomaticChallenge = true;
jwtBearerOptions.TokenValidationParameters.ValidateIssuerSigningKey = true;
jwtBearerOptions.TokenValidationParameters.IssuerSigningKey = key;
jwtBearerOptions.TokenValidationParameters.ValidIssuer = tokenIssuer;
jwtBearerOptions.TokenValidationParameters.ValidateIssuer = true;
jwtBearerOptions.TokenValidationParameters.ValidateLifetime = true;
jwtBearerOptions.TokenValidationParameters.ClockSkew = TimeSpan.Zero;
jwtBearerOptions.TokenValidationParameters.ValidAudience = tokenAudience;
return jwtBearerOptions;
}
この質問は実際には次のようになります。
Asp.net core 1.0 rtmでは、ミドルウェアチャレンジに合格するトークンを作成するための最小限の手順は何ですか?
「署名する」作業を含むこのデモの作業を行う簡単なステップ(多分1行にすぎないコード)がありますか?
demoが依然として恐ろしいコードであり、誰もそれを本番で使用するべきではない(私はすでにそれを恥じているので)。私の希望は、この問題が依然として少なくともデモスケールで
UseJwtBearerAuthentication
システムが実際に動作します。
有用な情報:https://stormpath.com/blog/token-authentication-asp-net-core –