Неверный эмитент Blazor OpenIDDictC#

Место общения программистов C#
Ответить
Anonymous
 Неверный эмитент Blazor OpenIDDict

Сообщение Anonymous »

У меня периодически возникает проблема, из-за которой пользователи иногда не могут войти на мой сайт. При входе в систему они сталкиваются с приведенной ниже ошибкой при перенаправлении с сервера OpenIDDict.
error:invalid_token
error_description:The issuer associated to the specified token is not valid.
error_uri:https://documentation.openiddict.com/errors/ID2088

Я считаю, что обычно можно обновить страницу, и ошибка исчезнет, ​​но я не ожидаю, что обычный пользователь сделает это. Я последовал примеру веб-сборки Дантуина из OpenIDDict. Странность этой проблемы заключается в том, что она возникает только в рабочей среде при развертывании в моей Службе приложений Azure.
Конфигурация клиента:
#region OpedIdDict

builder.Services.AddDbContext(options =>
{
options.UseSqlite(...);
options.UseOpenIddict();
});

builder.Services.AddAntiforgery(options =>
{
options.HeaderName = ...;
options.Cookie.Name = ...;
options.Cookie.SameSite = SameSiteMode.Strict;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
});

builder.Services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.LoginPath = ...;
options.LogoutPath = ...;
options.ExpireTimeSpan = ...;
options.SlidingExpiration = false;
options.ClaimsIssuer = ...;
});

builder.Services.AddQuartz(options =>
{
options.UseMicrosoftDependencyInjectionJobFactory();
options.UseSimpleTypeLoader();
options.UseInMemoryStore();
});

builder.Services.AddQuartzHostedService(options => options.WaitForJobsToComplete = true);

builder.Services.AddOpenIddict()

.AddCore(options =>
{
options.UseEntityFrameworkCore().UseDbContext();
options.UseQuartz();
})

.AddClient(options =>
{
options.AllowAuthorizationCodeFlow();

var certificate = ...;
options.AddSigningCertificate(certificate);
options.AddEncryptionCertificate(certificate);

options.UseAspNetCore()
.EnableStatusCodePagesIntegration()
.EnableRedirectionEndpointPassthrough()
.EnablePostLogoutRedirectionEndpointPassthrough();

options.UseSystemNetHttp()
.SetProductInformation(typeof(Program).Assembly);

options.AddRegistration(new OpenIddictClientRegistration
{
Issuer = ...,
ClientId = ...,
ClientSecret = ...,
Scopes = { Scopes.Profile, Scopes.Email, Scopes.Phone },
RedirectUri = new Uri(...),
PostLogoutRedirectUri = new Uri(...)
});
});

builder.Services.AddAuthorization(options =>
{
options.AddPolicy("CookieAuthenticationPolicy", builder =>
{
builder.AddAuthenticationSchemes(CookieAuthenticationDefaults.AuthenticationScheme);
builder.RequireAuthenticatedUser();
});
});

builder.Services.AddReverseProxy()
.LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"))
.AddTransforms(builder => builder.AddRequestTransform(async context =>
{
var token = await context.HttpContext.GetTokenAsync(
scheme: CookieAuthenticationDefaults.AuthenticationScheme,
tokenName: Tokens.BackchannelAccessToken);

context.ProxyRequest.Headers.Authorization = new AuthenticationHeaderValue(Schemes.Bearer, token);
}));

builder.Services.AddHostedService();

#endregion


Подробнее здесь: https://stackoverflow.com/questions/790 ... lid-issuer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»