联合身份令牌复制字符以关闭标签(cookie)(使用Thinktecture Identity Server)

时间:2014-11-10 05:10:19

标签: c# asp.net-mvc cookies thinktecture-ident-server ws-federation

使用正在设置的Cookie遇到一个奇怪的问题。在大多数情况下,一切都按预期工作,但有时我得到错误

System.FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. 
at System.Convert.FromBase64_Decode(Char* startInputPtr, Int32 inputLength, Byte* startDestPtr, Int32 destLength)
at System.Convert.FromBase64CharPtr(Char* inputPtr, Int32 inputLength)
at System.Convert.FromBase64String(String s)
at System.IdentityModel.Services.ChunkedCookieHandler.ReadInternal(String name, HttpCookieCollection requestCookies)
at System.IdentityModel.Services.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken)
at System.IdentityModel.Services.SessionAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs eventArgs)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

我可以一遍又一遍地执行相同的步骤,此错误将随机显示。也许在5日去,然后第10次去下一次。

当我在浏览器中查看cookie时,我可以看到发生错误时结束标记的最后几个字符是重复的。 Cookies如下(重要位),

FedAuth={base64string}
FedAuth1={base64string}cml0eUNvbnRleHRUb2tlbj4=
FedAuth2=b2tlbj4=

注意FedAuth1如何完成FedAuth2的角色。由于某种原因,不必要地创建了这个FedAuth2 cookie并导致字符串以

结束
</SecurityContextToken>oken>

(base64解密)。

我不知所措......

1 个答案:

答案 0 :(得分:0)

我仍然不确定为什么会这样,但我设法通过重命名我的一些角色来解决问题,因此Cookie永远不会超过2个FedAuth cookie。问题似乎在于创建了第三个cookie。