Итак, я, наконец, установил OpenID на место, и он работает довольно хорошо.Я полагаю, я подробно опишу некоторые ошибки, с которыми я столкнулся.
- Процесс входа в OpenID включает более трех состояний / шагов. Это сбивает с толку, потому чтодокументация и пример кода приведут вас к мысли, что их три.Есть, в некоторых случаях, до семи.Посмотрите журналы вашего сервера и посмотрите, сколько раз SERVER и USER (те, кто запрашивает аутентификацию) попадают в PROVIDER (что вы, вероятно, настраиваете). Трудно что-то отладить, когда вы просматриваете только половину взаимодействий
- Многие провайдеры используют незавершенную спецификацию OpenID 2.0. (Это немного лучше.) Спецификация 2.0 работает иначе, чем спецификация 1.0;СЕРВЕР (их) устанавливает доверие с ПРОВАЙДЕРОМ (вами).Net :: OpenID :: Server обрабатывает это изящно, но не говорит вам, какую спецификацию он использует.Спецификация 2.0 добавляет шаг к процессу установления связи.
- Настройте свой собственный OpenID SERVER для простого тестирования. Я использовал простой сервер Rails с гемом ruby-openid.Потребовалось около 10 минут, чтобы настроить поведение реального сервера в дикой природе.
- Это должно быть само собой разумеющимся, но убедитесь, что ваш процесс входа в систему без сохранения состояния.глобальная переменная, которая обрабатывает, как пользователь был проверен.Поскольку использование этой переменной делало определенные допущения, несовместимые с процессом входа в систему OpenID, пользователям было бы разрешено входить в учетные записи, отличные от их собственных.Это явно плохо.Несколько замыканий, и у нас есть код без сохранения состояния и более безопасный.
В общем и целом, OpenID - это круто, как только он заработает.