6

mvc3 Azure Webロールを参照すると、base64エンコーディングエラーがランダムに発生します。ADFSサーバーに対して認証するためにパッシブ認証でWIFを使用しています。私はこれがどこから来ているのかを特定することはできませんが、私はアイデアを持っており、いくつかのフィードバック/助けを望んでいます。

コールスタックからは、不正なCookieから来ているように見えます。wif / adfsの「FedAuth」Cookieは、ChromeデベロッパーコンソールからCookieを確認したときに表示される唯一のものです。ですから、どういうわけか、これらの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

私は自分のCookieに対してさらにいくつかのテストを行ってきましたが、リクエストごとに、fedauthCookieがどんどん大きくなっていることがわかります。これは問題の一部またはすべてである可能性があります。最終的に、そしてランダムに何かがいくつかの悪い文字を追加しています。トークンはこれらの終了タグ""で終わります。セキュリティコンテキストトークンの終了タグの後にいくつかの余分な文字が表示されると、失敗することがわかります。エラーが発生するたびに、余分な文字は異なります。

4

2 に答える 2

3

理解した。おっと...プログラマエラー...

ユーザーが最初にアプリケーションにログインすると、データベースからいくつかのロール情報を取得し、それらのクレームを作成します。私は毎回これらのクレームを追加し直していたので、私のセッショントークンは成長していました...そして成長しています...最終的にこれにより、トークンが2、3、4、5、6のCookieに分割され、最終的に何かが窒息していました.これ。毎回クレームを追加することはもうありません。この問題はもう見られません。

ご助力いただきありがとうございます。

于 2012-10-05T20:58:17.597 に答える
1

base64 を使用してクエリ文字列のパラメーターをエンコードする同様のエラー メッセージが表示されました。クエリ文字列で正常に表示された %3d がありましたが、コードで取得したときに asp.net がそれを = 記号に変換していました。base64 を復号化する前に Server.UrlEncode() を呼び出して解決しました。Cookie の base64 値が復号化される前に復号化されている可能性があります。

于 2012-10-05T19:03:25.423 に答える