Это действительный подход к использованию GUID в качестве значения свойства ProtocolMessage.State .
После установки ProtocolMessage.State в событии OnRedirectToIdentityProvider
context.ProtocolMessage.State = myGuid;
Из исходного кода выяснилось, что данные десериализуются с помощью метода StateDataFormat.Unprotect (). Я использовал это для отладки
context.Options.StateDataFormat.Unprotect("CfDJ8...yr7Rpx3DyQMwPw")
' состояние ' в запросе на самом деле является сериализованным классом AuthenticationProperties.
Класс AuthenticationProperties создается промежуточным программным обеспечением, а значение ProtocolMessage.State фактически сохраняется как AuthenticationProperties.Items ["OpenIdConnect.Userstate"] в ответе.
Как упомянуто в комментарии, промежуточное ПО обрабатывает проверку состояния.