سلام.
پروژه اعتبارسنجی jwt را مطابق همین پست انجام دادم و روی لوکال روی پورت 4983 اجرا شده است. پروژه فرانت انگولار روی لوکال پورت 4200 در حال اجراست. و برای لاگین مستقیما به 4983 ریکوئست میفرستد و توکن دریافت میکند. سورس اصلی بکند روی پروژه دیگری روی لوکال پورت 7744 در حال اجراست. فرانت بعد از لاگین دیگر ارتباطی با 4983 ندارد و از این به بعد همه ریکوئستها را به پورت 7744 ارسال میکند. در واقع 4983 فقط پروژه jwt به تنهایی است. فرانت وقتی ریکوئستی را به 7744 میفرستد نیاز به ولید شدن توکن دارد و باید توکن را برای بررسی به 4983 ارسال کند. و در startup 7744 این کد نوشته شده است:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
{
options.Authority = "http://localhost:4983/";
options.Audience = "Any";
options.RequireHttpsMetadata = false;
options.Events = new JwtBearerEvents();
options.Configuration = new OpenIdConnectConfiguration();
options.Events.OnTokenValidated = async context =>
{
IEnumerable<Claim> userClaims = await ReadClaimsFromCacheAsync(context);
if (ThereIsNoCache(userClaims))
{
userClaims = await GetUserInfoAsync(context, authority);
await StoreInCacheAsync(userClaims, context);
}
context.Principal = new ClaimsPrincipal(new ClaimsIdentity(userClaims, "jwt", JwtClaimTypes.Subject, "roles"));
};
options.Events.OnAuthenticationFailed = async context =>
{
await TestInvalid(context);
};
});
که خطای زیر را دریافت میکنم:
IDX10500: Signature validation failed. No security keys were provided to validate the signature.
ممنون میشم راهنمایی بفرمایید. (نکته: یک کنترلر تستی روی 4983 نوشته ام که بعد از لاگین مستقیم از فرانت کال کردم و بدون مشکل توکن ولید شد و به کنترلر و اکشن موردنظر دسترسی پیدا کرد. ولی وقتی اعتبارسنجی از طریق 7744 صورت میگیرد خطا میدهد.)