Я пытаюсь настроить аутентификацию OpenID на мобильной версии моего сайта (ASP.net MVC, dotnetopenid). Когда я тестировал ее ранее (используя WAP интернет, Sony Ericsson w200i), она перенаправляла на провайдера нормально, но сначала очень медленно, а затем полностью отказала из-за того, что, как я подозреваю, страница была слишком большой.
Кто-нибудь знает хороший способ реализации OpenID для пользователей WAP с медленным соединением? Предоставляют ли какие-либо провайдеры специализированные мобильные страницы?
Если OpenID сложно реализовать на телефоне, есть ли альтернативы, кроме имени пользователя и пароля?
Есть несколько проблем, которые могут возникнуть на мобильном телефоне:
Размер запроса: OpenID иногда может нести большую полезную нагрузку. Это может означать большой HTTP GET URL или POST. Помимо того, что это потенциально медленное перенаправление, если RP или OP плохо реализуют OpenID, это может привести к тому, что браузер фактически прервет запрос, что приведет к нарушению пользовательского опыта. (DotNetOpenId/DotNetOpenAuth внимательно относится к размерам запросов и переходит между GET и POST по мере необходимости). Чтобы уменьшить этот риск и ускорить работу, используйте только те расширения OpenID, которые вам нужны, и запрашивайте только те атрибуты, которые вам абсолютно необходимы.
Неполная поддержка Javascript: некоторые RP и OP полагаются на поддержку Javascript в браузере для помощи в перенаправлении (особенно когда используется POST). Некоторые телефоны не поддерживают (в достаточной степени) Javascript, и это опять же нарушает удобство работы пользователя. Большинство сайтов и библиотек (включая DotNetOpenAuth) снижают этот риск, отображая кнопку "Продолжить", которую пользователь может нажать, если Javascript не работает.
В остальном, в OpenID нет ничего особенного, что могло бы заставить OpenID на телефоне не работать. Однако следует иметь в виду, что из-за малого форм-фактора телефонов ввод ключа затруднен, и поэтому аутентификационные куки, вероятно, должны работать дольше, чтобы пользователям не приходилось входить в систему (будь то с помощью имени пользователя+пароля или OpenID) так часто. Кроме того, это их личный телефон, так что держать его залогиненным не так опасно для безопасности, как общий компьютер.
Я добился того, что он отлично работает на iPhone. Однако мне не хватает других платформ для тестирования.