Windows Foundity Foundation Security Token Service не может быть войти в систему
-
01-10-2019 - |
Вопрос
Я использую фундамент идентичности 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" />