W.I.F .: Установка IsSessionMode в значение true, похоже, этого не происходит.

У нас проблемы с Safari (и Opera), и, судя по тому, что я прочитал, куки FedAuth просто слишком большой.

Есть "хитрый трюк", чтобы исправить это: "WIF RTM добавил свойство IsSessionModule в SessionAuthenticationModule. Когда установлено значение true, IsSessionMode обеспечивает то, что SessionSecurityToken остается в кэше на протяжении всего сеанса, и генерирует cookie, который содержит только идентификатор сеанса, а не содержимое самого сеанса »

. этот код в global.asax:

void WSFederationAuthenticationModule_SessionSecurityTokenCreated(object sender, Microsoft.IdentityModel.Web.SessionSecurityTokenCreatedEventArgs e)
{
    FederatedAuthentication.SessionAuthenticationModule.IsSessionMode = true;
}

Проблема проста: "FederatedAuthentication.SessionAuthenticationModule.IsSessionMode = true" никогда не запускается, я не знаю почему. Вы ?? Или вы знаете, как использовать "PassiveSignInControl" ", чтобы установить IsSessionMode в значение true?

http://social.msdn.microsoft.com/Forums/en/Geneva/thread/ea00ec3f-ebdf-427c-929f-d4a196650552 http: / /blogs.msdn.com/b/vbertocci/archive/2010/05/26/your-fedauth-cookies-on-a-diet-issessionmode-true.aspx

Из книги «Программирование Windows® Identity Foundation»: "Интересным свойством SAM является IsSessionMode. Если установлено значение true, IsSessionMode сохраняет большую часть сеанса в серверном кеше токенов вместо записи всего в файл cookie.Сам файл cookie будет просто содержать небольшой идентификатор контекста, который будет использоваться для получения сеанса на сервере. К сожалению, в этой версии продукта 92 Part II Windows Identity Foundation для разработчиков идентификации нет способа установить IsSessionMode из файла конфигурации. Вы можете установить его через свойство PassiveSignInControl или в файле global.asax следующим образом (тот же код, что и выше): «

10
задан DoctorArnar 19 October 2011 в 18:02
поделиться

1 ответ

Одна важная вещь отметить состоит в том, как обработать SecurityTokenValidated и события SessionSecurityTokenCreated класс WSFederationAuthenticationModule .

Альтернатива 1 — автоматическое событие обеспечивают электричеством в global.asax (явные имена методов без проводного соединения руководства к событиям):

void WSFederationAuthenticationModule_SecurityTokenValidated(object sender, SecurityTokenValidatedEventArgs e)
{
    FederatedAuthentication.SessionAuthenticationModule.IsReferenceMode = true;
}

// or

void WSFederationAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e)
{
    e.SessionToken.IsReferenceMode = true;
}

Альтернатива 2 — проводное соединение ручного метода к событиям в global.asax. Дело в том, что это не должно быть в [1 110] Application_Start, но в переопределенном Init:

void Application_Start(object sender, EventArgs e)
{
    // Called only once on application start
    // This is not the right place to wire events for all HttpApplication instances
}

public override void Init()
{
    // Called for each HttpApplication instance
    FederatedAuthentication.WSFederationAuthenticationModule.SecurityTokenValidated += STV;
    FederatedAuthentication.WSFederationAuthenticationModule.SessionSecurityTokenCreated += SSTC;
}

void STV(object sender, SecurityTokenValidatedEventArgs e)
{
    FederatedAuthentication.SessionAuthenticationModule.IsReferenceMode = true;
}

// or

void SSTC(object sender, SessionSecurityTokenCreatedEventArgs e)
{
    e.SessionToken.IsReferenceMode = true;
}
0
ответ дан 4 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: