Windows Foundity Foundation Security Token Service не может быть войти в систему

StackOverflow https://stackoverflow.com/questions/3585856

Вопрос

Я использую фундамент идентичности Windows (Wif) Сервис безопасности TOKEN (STS) Чтобы обработать аутентификацию для моего приложения, который работает все хорошо и хорошо. Однако я не могу получить длинный вход в систему с STS.

Из моего понимания мне не стоит заботиться о токенах клиента на уровне приложений, поскольку они могут истекать все, что они хотят, и он должен перенаправить меня на STS и до тех пор, пока они все еще вошли в STS, оно должно обновить свое приложение токен. Тем не менее, похоже, не хочет держать их подписать.

Вот что происходит в моем логине.aspx на STS

var cookie = FormsAuthentication.GetAuthCookie(userName, persistTicket);

if (persistTicket)
    cookie.Expires = DateTime.Now.AddDays(14);

Response.Cookies.Add(cookie);

var returnUrl = Request.QueryString["ReturnUrl"];
Response.Redirect(returnUrl ?? "default.aspx");

Который был взят почти непосредственно из существующего применения, используя нормальные формы Auth.

Из моей web.config.

<authentication mode="Forms">
      <forms loginUrl="Login.aspx" protection="All" timeout="2880" 
      name=".STS" path="/" requireSSL="false" slidingExpiration="true" 
      defaultUrl="default.aspx" cookieless="UseDeviceProfile" 
      enableCrossAppRedirects="false" />
</authentication>

Глядя на печенье после того, как я вошел в систему, я вижу время истечения срока действия на печенье на 14 дней в будущем и что файл cookie НЕТ сеанс cookie.

Когда я должен вернуться в STS, я вижу, что мое оригинальное cookie все еще там.

Есть ли какие-то функциональные возможности с интервалом времени, что STS встраивает в печенье, которое недействительна моего файла cookie, хотя, насколько я знаю, это все равно должно быть действительным?

Это было полезно?

Решение

Прочитав предложение от @uosel это приводит меня к пути выполнения более независимого анализа на то, что именно здесь происходит. Принимая во внимание, что моя цель состоит в том, чтобы создать постоянное печенье только для самого STS, а не для сайтов, потребляющих STS. Таким образом, я всегда могу подтвердить пользователь на уровне STS на любом истечении расходоменного сайта STS.

С большим количеством локомоции в этом поезде на мысль осенило, что сайт стартера STS использует формы Auth, чтобы обеспечить фактическое авторизация WiF, которое происходит в Index.aspx. Что проблема была у меня не было логики, которая будет использовать существующие формы Auth Tire Tire для обработки переноса на страницу защищенного auth authform.

Это приведет меня к решению, похожему на

if(User.Identity.IsAuthenticated)
{    
    if(IsValidUserCredentials())
    {
       var returnUrl = Request.QueryString["ReturnUrl"];
       Response.Redirect(returnUrl ?? "default.aspx");
    }    
}
else
{
    DisplayLoginForm()
}

Другие советы

Если вы используете пассивные перенаправления, у вас есть ПерсистентныеКоучиеноспределительные действия установить правду?

<wsFederation passiveRedirectEnabled="true"
    persistentCookiesOnPassiveRedirects="true" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top