OpenIddict V6: тип гранта должен быть указан при выборе требований аутентификации от конечных точек, которые не управляюC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 OpenIddict V6: тип гранта должен быть указан при выборе требований аутентификации от конечных точек, которые не управляю

Сообщение Anonymous »

Похоже, я получаю эту странную ошибку на моем лучшем положении (бэкэнд для Frontend), когда я пытаюсь запустить поток авторизации. Я получаю сообщение: «Тип гранта должен быть указан при запуска требований аутентификации от конечных точек, которые не управляются клиентским стеком OpenIddict». Вот полное исключение: < /p>
System.InvalidOperationException: A grant type must be specified when triggering authentication demands from endpoints that are not managed by the OpenIddict client stack. This error may also indicate that the redirection endpoint was not correctly enabled in the OpenIddict client options.
at OpenIddict.Client.OpenIddictClientHandlers+ValidateAuthenticationDemand.HandleAsync(ProcessAuthenticationContext context)
at OpenIddict.Client.OpenIddictClientDispatcher+d__4.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at OpenIddict.Client.OpenIddictClientDispatcher+d__4.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task, ConfigureAwaitOptions options)
at OpenIddict.Client.AspNetCore.OpenIddictClientAspNetCoreHandler+d__4.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task, ConfigureAwaitOptions options)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at Microsoft.AspNetCore.Authentication.AuthenticationHandler+d__54.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task, ConfigureAwaitOptions options)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at Microsoft.AspNetCore.Authentication.AuthenticationService+d__14.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task, ConfigureAwaitOptions options)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at ResearchGuru.BackendForFrontend.Controllers.AccountController+d__12.MoveNext() in /root/actions-runner/_work/ResearchGuru.Backend/ResearchGuru.Backend/ResearchGuru.BackendForFrontend/Controllers/AccountController.cs:line 103
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task, ConfigureAwaitOptions options)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor+d__0.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task, ConfigureAwaitOptions options)
at System.Runtime.CompilerServices.ValueTaskAwaiter.GetResult()
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker+d.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task, ConfigureAwaitOptions options)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker+d.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task, ConfigureAwaitOptions options)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+d.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task, ConfigureAwaitOptions options)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+d.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+d.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task, ConfigureAwaitOptions options)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware+d__11.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task, ConfigureAwaitOptions options)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl+d.MoveNext()
< /code>
Я в настоящее время использую OpenIddict V6 (6.0.0) и .net 9. Когда я запускаю свое приложение на своей машине в разработке, поток авторизации работает, как и ожидалось. Однако, когда я запускаю это приложение в своей производственной среде, я получаю это сообщение об ошибке. Я запускаю свой сервер авторизации и BFF на Linux Ubuntu 24.04 Vm. < /P>
Я добавил метод расширения, который регистрирует клиент: < /p>
public static void ConfigureOpenIddictClient(this IServiceCollection serviceCollection,
IConfiguration configuration, bool isDevelopment)
{
var appConfiguration = configuration.GetSection(nameof(ResearchGuruAppConfiguration))
.Get();

serviceCollection.AddOpenIddict()
.AddCore(config =>
{
config.UseEntityFrameworkCore(cfgg =>
{
cfgg.UseDbContext();
cfgg.ReplaceDefaultEntities();
});
})
.AddClient(config =>
{
config.AllowPasswordFlow();
config.AllowAuthorizationCodeFlow();
config.AllowRefreshTokenFlow();
config.AllowClientCredentialsFlow();

if (!isDevelopment)
{
config.AddEncryptionCertificate(SecurityCertificateHelper.GetEncryptionCertificate())
.AddSigningCertificate(SecurityCertificateHelper.GetSigningCertificate())
.AddSigningKey(new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(ConstantValues.EncryptionConstants
.TokenSigningKey)));
}
else
{
config.AddDevelopmentEncryptionCertificate()
.AddDevelopmentSigningCertificate()
.AddSigningKey(new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(ConstantValues.EncryptionConstants
.TokenSigningKey)));
}

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

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

config.AddRegistration(new OpenIddictClientRegistration
{
ClientId = isDevelopment
? DevClientConstants.ResearchGuruBFFClientId
: ProdClientConstants.ResearchGuruBFFProdClientId,
ClientSecret = isDevelopment
? DevClientConstants.ResearchGuruBFFClientSecret
: ProdClientConstants.ResearchGuruBFFProdClientSecret,
ProviderName = isDevelopment ? "Local" : null,
Issuer = new Uri($"{appConfiguration!.AuthorizationServerBaseUrl}"),
Scopes =
{
OpenIddictConstants.Scopes.Email,
OpenIddictConstants.Scopes.Profile,
OpenIddictConstants.Scopes.Roles,
OpenIddictConstants.Scopes.OfflineAccess,
OpenIddictConstants.Scopes.OpenId,
},
RedirectUri = new Uri($"{appConfiguration!.BaseUrl}/Account/LoginCallback"),
PostLogoutRedirectUri = new Uri($"{appConfiguration!.BaseUrl}/Account/LogoutCallback"),
});
});
}
< /code>
В BFF, когда я запускаю поток кода авторизации, у меня есть конечная точка loginredirect, которая запускает поток авторизации: < /p>
[HttpGet]
public async Task LoginRedirect()
{
var parameters = new Dictionary
(StringComparer.Ordinal)
{
{ OpenIddictConstants.Parameters.ResponseType, "code" },
};

var items = new Dictionary
(StringComparer.Ordinal)
{
[OpenIddictClientAspNetCoreConstants.Properties.ProviderName] = "Local"
}!;

var isDevelopment = Environment.GetEnvironmentVariable(SettingNames.AspNetCoreEnvironment)!.Equals(ConstantValues.Development);
var properties = new AuthenticationProperties(isDevelopment ? items! : null, parameters!);

return Challenge(properties, OpenIddictClientAspNetCoreDefaults.AuthenticationScheme);
}
< /code>
Я проверил на своем DB, чтобы убедиться, что URI перенаправляют, и соответствует ожиданиям. Я не уверен, может ли эта проблема как -то связана с тем, что я запускаю это приложение за обратным прокси. Не уверен, что еще я мог попробовать. < /P>
Любые предложения будут оценены! Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/796 ... cation-dem
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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