我正在将网络表单中的表单身份验证迁移到Microsoft身份。
使用 ClaimsPrincipal cp
对象创建SessionSecurityToken
时,我有以下代码:
Dim token As New SessionSecurityToken(cp, TimeSpan.FromMinutes(30))
但是,在web.config中,我也看到这个:
<configSections>
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</configSections>
<system.identityModel>
<identityConfiguration>
<securityTokenHandlers>
<add type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">
<sessionTokenRequirement lifetime="00:30:00" /><!-- 30 minutes -->
</add>
</securityTokenHandlers>
</identityConfiguration>
</system.identityModel>
这些是一回事吗? 为了证明我RTFM,sessionTokenRequirement lifetime
定义为:
指定会话令牌的生存期。
SessionSecurityToken lifetime
定义为:
从令牌生效的当前时间开始的时间段。属性将设置为 UtcNow,属性将设置为 ValidFrom 加上此参数指定的时间段。
前者似乎很模糊,所以我不确定。
在应用程序联合身份验证或基于声明的身份验证中,有两个实体 - 信赖方 (RP) 和标识提供者 (IdP)
在Microsoft世界中,ADFS 通常是 IdP,而依赖 ADFS 进行身份验证的应用程序将是 RP。
在身份验证时,IdP 会生成由 IdP 证书签名的声明令牌。RP 接受此声明令牌 - 执行各种验证,包括使用 IdP 证书的数字签名验证。成功验证声明令牌后,RP 会以 Cookie 的形式颁发会话令牌。此 Cookie 的默认名称是 FedAuth。SessionTokenRequirement 生存期参数与 FedAuth 令牌的生存期相关联。
会话安全令牌生存期与 IdP 颁发的声明令牌的生存期相关联。
请参考:http://brockallen.com/2013/02/14/configuring-session-token-lifetime-in-wif-with-the-session-authentication-module-sam-and-thinktecture-identitymodel/
http://msdn.microsoft.com/en-us/library/hh568645(v=vs.110).aspx