1

Я рассматриваю образец 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)) 
{ 

Должно ли оно иметь значение «~/Главная»?

Любая помощь с этим было бы весьма признателен,

Привет Бен

ответ

1

EndRequest называется первым - он инициирует туда и обратно поставщику РСИН - при этом, что она сохраняет состояние куки.

Поставщик OIDC должен быть настроен на обратный вызов URL-адреса обратного вызова (по умолчанию/oidccallback относительно корня приложения).

Затем вызывается AuthenticateRequest и файл cookie считывается обратно.

+0

Благодарим вас за ответ. Я потерялся, потому что просматривал другие страницы, а не Home/Claims, у которых был атрибут Authorize. – user3221987

Смежные вопросы