获得“不是一个有效的Base-64字符串”关于联合身份令牌(Getting “not a valid

2019-08-01 04:53发布

浏览我的蔚蓝MVC3 Web角色时,我随机得到一个基地64编码错误。 我使用WIF与被动认证反对我的ADFS服务器进行身份验证。 我还没有能够隔离在那里,这是从哪里来的,但我有一个想法,我希望一些反馈/帮助。

从调用栈,它看起来像它从一个坏的cookie来了。 从WIF的“FedAuth”曲奇/ ADFS是显示当我看到从Chrome开发者控制台我的饼干的唯一的事情。 所以我想,不知怎的,这些Cookie越来越损坏或在他们无效字符。 我正在验证此,但由于错误发生随机它采取了一些时间。 任何人都经历类似的话或有任何倾向,以什么可能会造成这个? 任何帮助表示赞赏!

这里是例外:

The input is not a valid Base-64 string as it contains a non-base 64 character, more      than two padding characters, or a non-white space character among the padding characters.
[FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. ]
   System.Convert.FromBase64String(String s) +0
   Microsoft.IdentityModel.Web.ChunkedCookieHandler.ReadInternal(String name, HttpCookieCollection requestCookies) +613
   Microsoft.IdentityModel.Web.ChunkedCookieHandler.ReadCore(String name, HttpContext context) +174
   Microsoft.IdentityModel.Web.CookieHandler.Read(String name, HttpContext context) +133
   Microsoft.IdentityModel.Web.CookieHandler.Read(HttpContext context) +59
   Microsoft.IdentityModel.Web.CookieHandler.Read() +65
   Microsoft.IdentityModel.Web.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken) +84
   Microsoft.IdentityModel.Web.SessionAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs eventArgs) +119
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +270

我一直在做我的饼干一些更多的测试,我可以看到与每一位我fedauth饼干变得越来越大的要求。 这可能是部分或全部问题。 最终,随机东西追加一些坏人的角色。 令牌与这些closeing标签“”结束。 我可以看到它时,一些额外的字符安全上下文令牌关闭标签后出现失败。 每个错误发生时,多余的字符是不同的。

Answer 1:

弄清楚了。 糟糕...编程错误...

当用户第一次登录到我的应用程序拉从我的数据库中的一些角色信息,并为他们创造索赔。 我重新添加这些说法每一次,所以我的会话令牌的成长......和成长......这最终导致了该令牌拆分为2,3,4,5,6块饼干和最终的东西只是窒息这个。 我不再增加每次索赔。 不再遇到这个问题。

感谢你的帮助。



Answer 2:

我不得不使用Base64到在查询字符串参数编码类似的错误消息,我有一个%3D其显示在查询字符串很好,但asp.net被其转换为=登录,当我在代码retreived它。 我通过调用Server.UrlEncode()解密的base64前解决它。 这可能是在cookie中的Base64值正在被解密之前解码。



文章来源: Getting “not a valid Base-64 string” on federated identity token