Я интегрирую API .NET 9 с API идентификатора на основе OpenIDDICT для аутентификации JWT с использованием AddJwtBearer.IDX10500: Signature validation failed. No security keys were provided to validate the signature.
at Microsoft.IdentityModel.JsonWebTokens.JsonWebTokenHandler.ValidateSignature(JsonWebToken jwtToken, TokenValidationParameters validationParameters, BaseConfiguration configuration)
at Microsoft.IdentityModel.JsonWebTokens.JsonWebTokenHandler.ValidateSignatureAndIssuerSecurityKey(JsonWebToken jsonWebToken, TokenValidationParameters validationParameters, BaseConfiguration configuration)
at Microsoft.IdentityModel.JsonWebTokens.JsonWebTokenHandler.ValidateJWSAsync(JsonWebToken jsonWebToken, TokenValidationParameters validationParameters, BaseConfiguration configuration)
Что я заметил:
API идентификации возвращает следующее в /.well-known/openid-configuration:
{
"issuer": "https://mymicroservices-uat.online.com/IdentityService/",
"token_endpoint": "http://mymicroservices-uat.online.com/I ... nect/token",
"jwks_uri": "http://mymicroservices-uat.online.com/I ... known/jwks",
"grant_types_supported": [
"client_credentials",
"refresh_token",
"password"
],
"scopes_supported": [
"openid",
"offline_access"
],
"claims_supported": [
"aud",
"exp",
"iat",
"iss",
"sub"
],
"id_token_signing_alg_values_supported": [
"RS256"
],
"subject_types_supported": [
"public"
],
"prompt_values_supported": [
"consent",
"login",
"none",
"select_account"
],
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"private_key_jwt",
"client_secret_basic"
],
"require_pushed_authorization_requests": false,
"claims_parameter_supported": false,
"request_parameter_supported": false,
"request_uri_parameter_supported": false,
"tls_client_certificate_bound_access_tokens": false,
"authorization_response_iss_parameter_supported": true
}
Я заметил jwks_uri и token_endpoint Использовать http , в то время как мой сайт работает https . Это может быть причиной этого? Как я могу справиться с этим? В то время как я запускаю это в локальном, а также отладке на сервере, работая отлично.builder.Services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
builder.Services.AddOpenIddict()
.AddCore(opt =>
{
opt.UseEntityFrameworkCore()
.UseDbContext();
})
.AddServer(opt =>
{
opt.SetIssuer(new Uri("https://mymicroservices-uat.online.com/IdentityService/"));
opt.SetTokenEndpointUris("connect/token");
opt.SetConfigurationEndpointUris(".well-known/openid-configuration");
opt.AllowClientCredentialsFlow().AllowRefreshTokenFlow();
opt.AllowPasswordFlow().AllowRefreshTokenFlow();
opt.AcceptAnonymousClients();
if (builder.Environment.IsProduction())
{
var signingThumbprint = config["OpenIddict:Certificates:Signing:Thumbprint"];
var signingStoreLocation = config["OpenIddict:Certificates:Signing:StoreLocation"];
var encryptionThumbprint = config["OpenIddict:Certificates:Encryption:Thumbprint"];
var encryptionStoreLocation = config["OpenIddict:Certificates:Encryption:StoreLocation"];
if (!string.IsNullOrWhiteSpace(signingThumbprint))
opt.AddSigningCertificate(CertificateHelper.GetCertificateByThumbprint(signingThumbprint, signingStoreLocation!));
if (!string.IsNullOrWhiteSpace(encryptionThumbprint))
opt.AddEncryptionCertificate(CertificateHelper.GetCertificateByThumbprint(encryptionThumbprint, encryptionStoreLocation!));
}
else
{
opt.AddDevelopmentEncryptionCertificate()
.AddDevelopmentSigningCertificate();
}
opt.DisableAccessTokenEncryption();
opt.UseAspNetCore()
.EnableTokenEndpointPassthrough()
.EnableAuthorizationEndpointPassthrough();
if (builder.Environment.IsDevelopment())
{
opt.UseAspNetCore().DisableTransportSecurityRequirement();
}
});
builder.Services.AddAuthentication().AddCookie();
builder.Services.AddAuthorization();
builder.Services.AddControllers();
builder.Services.AddOpenApi();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
app.UseRouting();
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
app.UseSwagger();
app.UseSwaggerUI();
}
app.UsePathBase("/IdentityService");
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
< /code>
Также нет никаких проблем с пакетом. Все используют одинаковые версии и до даты < /p>
dotnet list package --include-transitive | sls "Microsoft.IdentityModel|System.IdentityModel"
> Microsoft.IdentityModel.JsonWebTokens 8.13.0 8.13.0
> Microsoft.IdentityModel.Logging 8.13.0 8.13.0
> Microsoft.IdentityModel.Protocols.OpenIdConnect 8.13.0 8.13.0
> Microsoft.IdentityModel.Abstractions 8.13.0
> Microsoft.IdentityModel.Protocols 8.13.0
> Microsoft.IdentityModel.Tokens 8.13.0
> System.IdentityModel.Tokens.Jwt 8.13.0
> Microsoft.IdentityModel.JsonWebTokens 8.13.0 8.13.0
> Microsoft.IdentityModel.Protocols.OpenIdConnect 8.13.0 8.13.0
> Microsoft.IdentityModel.Abstractions 8.13.0
> Microsoft.IdentityModel.Logging 8.13.0
> Microsoft.IdentityModel.Protocols 8.13.0
> Microsoft.IdentityModel.Tokens 8.13.0
> System.IdentityModel.Tokens.Jwt 8.13.0
> Microsoft.IdentityModel.JsonWebTokens 8.13.0 8.13.0
> Microsoft.IdentityModel.Protocols.OpenIdConnect 8.13.0 8.13.0
> Microsoft.IdentityModel.Abstractions 8.13.0
> Microsoft.IdentityModel.Logging 8.13.0
> Microsoft.IdentityModel.Protocols 8.13.0
> Microsoft.IdentityModel.Tokens 8.13.0
> System.IdentityModel.Tokens.Jwt 8.13.0
Подробнее здесь: https://stackoverflow.com/questions/797 ... d-openiddi
IDX10500: Проверка подписи не удалась. Ключи безопасности не было предоставлено - OpenIddict Identity API Интеграция API ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение