JWTベアラトークンを発行して認証するようにASP.Netコアアプリケーションを設定しました。クライアントは、サイトがKestrelでホストされている場合、ベアラトークンを正常に取得してトークンで認証できます。OpenId Connectと連携するためにASP.Net TestHostをどのように設定しますか?
また、Microsoft.AspNetCore.TestHost.TestServerを使用する一連の統合テストもあります。認証を追加する前に、テストはアプリケーションに対して正常に要求を行うことができました。認証を追加した後、オープンID設定へのアクセスに関連してエラーが発生しました。私が見ている特定の例外はこれです:私の研究に基づいて
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 GET http://
fail: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerMiddleware[3]
Exception occurred while processing message.
System.InvalidOperationException: IDX10803: Unable to obtain configuration from: 'http://localhost/.well-known/openid-configuration'. ---> System.IO.IOException: IDX10804: Unable to retrieve document from: 'http://localhost/.well-known/openid-configuration'. ---> System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found).
、これは当局がホストするサーバーとは別のホストに設定されているときに時々トリガーです。たとえば、Kestrelはデフォルトでhttp://localhost:5000で実行されますが、これは私の当局が最初に設定したものですが、TestServerがエミュレートしているものに設定すると(http://localhost)、それでも同じエラーが発生します。ここに私の認証設定は次のとおりです。
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
RequireHttpsMetadata = false,
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = signingKey,
ValidateAudience = true
},
Audience = "Anything",
Authority = "http://localhost"
});
奇数は何統合テストから直接URLをヒットしようとすると、正常に動作することをされています
それでは、どのようにASP.Net TESTSERVERを設定しますOpenId Connectインフラストラクチャは連携して動作しますか?この上でビットを反映して
=== EDIT ====
が、問題はJWT認可内部がhttp://localhostポート80への要求をしようとしていることであることを私に起こったが、それはにISN TestServerを使用してリクエストを作成しようとしているため、実際のサーバーを探しています。 1つではないので、決して認証するつもりはありません。次のステップは、権限チェックを無効にする方法や、TestServerをホストとして使用できるようにインフラストラクチャーを何らかの方法で拡張する方法があるかどうかを確認することです。
あなたの編集は正しいです。権限を設定していない設定をテストで提供しようとしましたか?技術的には、JWT認証をまったく使用しなくても、すべてのテストに必要なのは、認証されたユーザー(即興/模擬できる)です。 – Brad
私は当局を設定しようとしなかったと信じていますが、私はそれがエラーを投げかけていることを思い起こさせるようです。私は解決策を見つけることに終わり、答えを掲示します。 –