Свойство ProviderEndpoint.PendingAuthenticationRequest
доступно только для вашего удобства, в первую очередь для простых сценариев. Если это не работает для вас, во что бы то ни стало сохраните это другим способом и полностью игнорируйте это свойство. Там нет никакого вреда.
В конечном итоге сеанс отслеживается с помощью cookie-файла HTTP, поэтому вы, безусловно, можете сохранять состояние запроса авторизации целиком в cookie-файле, если хотите, чтобы он работал в среде веб-фермы. Другой подход заключается в том, чтобы не требовать от клиента (или сервера) отслеживания состояния, либо обрабатывая все (включая проверку подлинности) непосредственно по URL-адресу конечной точки OP, либо перенаправляя пользователя с URL-адреса конечной точки OP со строкой запроса, включающей все государственную информацию вы должны отслеживать. Будьте осторожны с последним подходом, так как вы будете предоставлять свои данные о состоянии пользователю, чтобы они могли его увидеть и, возможно, подделать.
Короче говоря, вы можете или не можете хранить пользовательские сессии в хранилище SQL. Это должно быть хорошо. Проблема, с которой, я думаю, вы столкнулись (которую мы обсуждали по электронной почте), заключалась в том, что вам нужно было реализовать свой собственный IProviderApplicationStore
, который будет хранить одноразовые номера и ассоциации в базе данных, которая является общей для всех ваших веб-серверов. Это необходимо сделать и ортогонально состоянию сеанса пользователя, поскольку оно сохраняется на уровне приложения.