私は、更新されたAzure Mobile Apps
と、Google、Microsoft、Twitter、Facebookなどの認証プロバイダを使用して、ユーザーを自分のウェブサイトに認証しています。これらはすべてうまくいき、Azure Mobile App
インスタンスで認証すると、認証されたユーザーを表す有効なJWT
トークンが返されます。このトークンは別のASP.NET Core
APIサービスへのリクエストを認証するために、サーバにAuthentication Bearer
トークンとして送信して送信しています。これらはすべてうまくいきます。Azure Mobile Apps認証に適切なsigningKeyを取得して使用する方法は?
問題は、正しいsigning key
値を使用してサーバー上でJWT
の検証が行われていることです。テストのために - https://jwt.io/とに私のJWT
トークンを持っていればAzure
から正しいアルゴリズムHS256
を使って私の秘密鍵を貼り付けても、 "無効な署名"のエラーを逃すことはできません。私が設定さMicrosoft.AspNetCore.Authentication.JwtBearer
からapp.UseJwtBearerAuthentication
を持っている私のASP.NET Core API
サービスを呼び出す場合、同じエリアでは、私は戻って次のことを述べて、エンドポイントから同じ401エラーを取得:
401権限:ベアラエラーは=「invalid_token」、しましたerror_description = " 署名はAzure Mobile Apps offline WEBSITE_AUTH_SIGNING_KEYと私は、私は値を得て、サーバー上だけに
IssuerSigningKey
として日曜日からそれを10個の方法を使用しようとしましたhttps://[Azure-Mobile-Site-Here].scm.azurewebsites.net/Env.cshtmlからWEBSITE_AUTH_SIGNING_KEY
使用するようになってるいくつかの他のサイトによると、「無効です
失敗。私はいつも同じエラーを受けます。
これは、サーバー上の構成です。私はコードを逆コンパイルして検証するために最小限のフラグをオンにするだけで、可能な限り絞り込むことを試みました。私は何かを得ることができません。上記の注意点としては
private void ConfigureAuth(IApplicationBuilder app)
{
//Didn't work attempt #1
//byte[] keyBytes = Encoding.UTF8.GetBytes("975BE84E150ABlahBlahBlahA2527E1AAC80606");
//if (keyBytes.Length < 64)
//{
// Array.Resize(ref keyBytes, 64);
//}
//Didn't work attempt #2
//byte[] keyBytes = _UTF8Encoder.GetBytes("975BE84E150ABlahBlahBlahA2527E1AAC80606");
//Didn't work attempt #3
//var keyAsBytes = Convert.FromBase64String("975BE84E150ABlahBlahBlahA2527E1AAC80606");
//Didn't work attempt #4
//var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("975BE84E150ABlahBlahBlahA2527E1AAC80606"));
var signingKey = new SymmetricSecurityKey(keyBytes);
var tokenValidationParameters = new TokenValidationParameters
{
RequireExpirationTime = false,
RequireSignedTokens = false,
SaveSigninToken = false,
ValidateActor = false,
ValidateAudience = false,
ValidateIssuer = false,
ValidateLifetime = false,
//The signing key must match!
ValidateIssuerSigningKey = true,
IssuerSigningKey = signingKey,
};
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
TokenValidationParameters = tokenValidationParameters
});
}
、私はすでにこのすべてと、それは動作しませんでしたが試してみて、バイパスするValidateIssuerSigningKey = false
を作ってみました。私はまだ同じエラーが発生します。それはビットが結果に影響を与えなかったようです。
WEBSITE_AUTH_SIGNING_KEY
が正しいと確信していないので、私はこの時点で迷っていると思います。signingKey
です。それがなければ、私は何のためにも私の車輪を回転させません。
Azure Mobile App
インスタンスに対してJWT
トークンを生成するのに適切なものは何ですか。また、トークンを検証するためにサーバ上のミドルウェア構成で正しくエンコードするにはどうすればよいですか?
ありがとうございます!私はそれがどのようにコード化されたのか、それで推測するのか分からなかった。助けてくれてありがとう。 C#のコードサンプルは、ここから動作します:http://stackoverflow.com/a/724905/410937 – atconway