Я рассматриваю образец ThinkTecture IdentityServer CodeFlowClient в решении OIDC. У меня проблемы с запуском. Он использует OpenIdConnectAuthenticationModule, определенный в проекте Thinktecture.IdentityModel.Oidc. В этом классе у меня проблемы с чтением файла cookie из файла cookie. См. Следующий код.Попытка получить образец Thinktecture IdentityServer CodeFlowClient для работы
// read and parse state cookie
var cookie = new ProtectedCookie(ProtectionMode.MachineKey);
var storedState = cookie.Read("oidcstate");
ProtectedCookie.Delete("oidcstate");
var separator = storedState.IndexOf('_');
Значение переменной storedState равно null. Я запутался в том, что oidcstate написан в OnEndRequest, который вызывается после AuthenticateAsync. AuthenticateAsync имеет код для чтения файлов cookie. См. Код в OnEndRequest ниже.
var cookie = new ProtectedCookie(ProtectionMode.MachineKey);
cookie.Write("oidcstate", state + "_" + returnUrl, DateTime.UtcNow.AddHours(1));
Нет там, где написано Oidcstate, поэтому я не знаю, что я сделал неправильно. Как записать файл Oidcstate до его чтения?
Также какое поле appRelativeCallbackUrl в конфигурации iodcClient? Он имеет значение по умолчанию «~/oidccallback». В AuthenticateAsync сравнивается с запросом AppRelativeCurrentExecutionFilePath. См. Код ниже.
var appRelativeCallbackUrl = config.AppRelativeCallbackUrl;
if (context.Request.AppRelativeCurrentExecutionFilePath.Equals(appRelativeCallbackUrl, StringComparison.OrdinalIgnoreCase))
{
Должно ли оно иметь значение «~/Главная»?
Любая помощь с этим было бы весьма признателен,
Привет Бен
Благодарим вас за ответ. Я потерялся, потому что просматривал другие страницы, а не Home/Claims, у которых был атрибут Authorize. – user3221987