2010-11-26 4 views
1

Я использую DotnetOpenAuth, мне нужно передать некоторые данные с SetCallbackArgument, но проблема в том, что какой-то поставщик OpenId такие как http://pip.verisignlabs.com/ http://clickpass.com/public/username перенаправляет на мой сайт с строки запроса более чем 2048 характер и IIS не могут справиться с этим. Я получил 404 - Файл или каталог не найдены. ошибка приводит к тому, что перенаправление слишком велико. Что мне делать в этом случае?Ошибка длины запроса OpenId в DotNetOpenAuth?

ответ

0

В спецификации OpenID указано, что слишком большие ответы OpenID должны использовать форму POST вместо 301 перенаправления, что помогает избежать этой проблемы. Я не знаю, пренебрегает ли verisign или clickpass той частью спецификации или нет. Но в целом ваши аргументы обратного вызова должны быть сокращены, чтобы избежать такой проблемы. И, конечно, если ваш аргумент обратного вызова очень велик, его никогда нельзя было ожидать, поскольку аргументы обратного вызова всегда должны быть в строке запроса.

Обычно, если вы хотите получить большой бит данных при возврате пользователя, вы можете сохранить его в db, в сеансе пользователя или в cookie, и хранить только небольшую ссылку на эти данные в аргументе обратного вызова ,

Помните, что что-либо в аргументе обратного вызова подлежит проверке пользователем, любым третьим лицом, если HTTPS не используется для всего этого и даже возможное вмешательство. DNOA предоставляет дополнительную защиту от несанкционированного доступа для аргументов обратного вызова, но не является конфиденциальностью.

Смежные вопросы