Несколько дней оно работало нормально, затем я столкнулся с проблемой, когда «имя_конфигурации» становится пустым для нескольких запросов.
Это происходит с перерывами. После перезапуска пула приложений в IIS он снова начал работать нормально. Проблема повторилась через несколько дней снова.
Вот код ниже:
Значение параметра «ConfigurationName» отображается как пустое, поэтому мы получаем запись вручную, зарегистрированную в нашей базе данных.
«Неверная конфигурация».
Код: Выделить всё
public override Task GetLocalServiceProviderConfigurationAsync(string configurationName)
{
if(int.TryParse(configurationName, out int clientID))
{
var samlConfig = _securityService.GetSAMLConfiguration(clientID);
/* rest of code */
}
else {
throw new InvalidOperationException($“Invalid configuration ‘{configurationName}’.”); }
}
Код для инициации единого входа:
Код: Выделить всё
private ActionResult SsoRedirect(IClient client){
string redirectUrl;
if(client.SsoProvider == SsoProvider.ComponentSpace)
{
_samlServiceProvider.SetConfigurationNameAsync(client.ID.ToString()).GetAwaiter().GetResult();
var relayState = System.Text.Json.JsonSerializer.Serialize(new SsoRelayState
{ReturnUrl = authConfig.AssertionConsumerServiceUrl});
relayState = Convert.ToBase64String(Encoding.UTF8.GetBytes(relayState));
\_samlServiceProvider.InitiateSsoAsync(relayState: relayState).GetAwaiter().GetResult();
redirectUrl = string.Empty;
return new EmptyResult();
}
}
- Client.ID всегда имеет ненулевое значение, во время отладки я видел, как значение заполняется, это первичный ключ в нашей базе данных.
- Однако это происходит не каждый раз. После обновления/перезапуска пула приложений в IIS проблема исчезает.
- Предполагал зарегистрировать поставщика услуг ISamlService в TransientScope, но внутренняя реализация AddSaml() уже позаботилась об этом.
- SSOConfigurationResolver — реализация AbstractSamlConfigurationResolver регистрируется как AddScoped(), как раз перед этим AddSaml()
Это следует использовать с await вместо GetAwaiter()
Мы не можем воспроизвести проблему в более низких средах.
Пожалуйста, помогите, спасибо
Подробнее здесь: https://stackoverflow.com/questions/798 ... getlocalsp
Мобильная версия