Создание поставщика OpenID с SSL - PullRequest
2 голосов
/ 21 декабря 2009

так что я сейчас пытаюсь сделать провайдера OpenID. Я попытался использовать два пакета сервера OpenID на основе Java - Crowd Atlassian и WSO2 Identity Server. Теперь, в моей реализации, безопасность является обязательным условием, что означает использование SSL и наличие OpenID на основе HTTPS. Теперь и для WSO2, и для Crowd большое количество сайтов просто не работают с предоставленными OpenID. Из 20 протестированных сайтов 8 потерпели неудачу с толпой, а 10 - с WSO2. Такая высокая частота отказов не совсем приемлема. Практически каждый сайт, имеющий проблему, утверждает, что он не может найти конечную точку OpenID.

Когда я использовал OpenID без SSL (то есть с использованием OpenID на основе HTTP), сайты неожиданно стали более совместимыми, и только два из них перестали работать. Я использую сертификат от AusCERT, поэтому проблема не должна быть связана с самозаверяющими сертификатами.

Сначала я подумал, что это просто вопрос большого количества RP, которые просто не принимают OpenID на основе HTTPS. Я попытался войти на те же сайты, на которых мне не удавалось, с использованием OpenID на основе HTTPS от Verisign, и это сработало. Рассматривая как WSO2, так и Crowd, я обнаружил, что ни один из них не полностью соответствует спецификации OpenID 2.0, в частности, ни один из них не предоставляет ссылку в заголовке на документ XRDS для обнаружения yadis. Учитывая, что моя проблема заключается в том, что сайты не могут обнаружить конечную точку OpenID по URL-адресу, который я предоставляю, это представляется уместным, за исключением того, что когда я не использую SSL, достаточно обнаружения на основе HTML.

Кто-нибудь знает, где моя проблема на самом деле? Отсутствующий документ XRDS, похоже, должен быть актуальным, но это может быть просто красная сельдь. Исходя из этого, если кто-то знает хорошую альтернативу Crowd или WSO2, которая хорошо документирована, хорошо работает в спецификации и (относительно) проста в настройке, было бы неплохо знать!

1 Ответ

3 голосов
/ 22 декабря 2009

Следует обратить внимание на то, что SSL-сертификаты некоторых провайдеров не подписаны корневыми правами, которые считаются доверенными для некоторых RP. Удостоверьтесь, что вы получаете сертификат от того, которому доверяют все RP.

Если .NET является опцией для вашего провайдера, ознакомьтесь с бесплатной библиотекой DotNetOpenAuth с открытым исходным кодом, которую вы можете разместить самостоятельно и которая используется некоторыми основными OP, такими как MySpace и netidme.com и другие . Его реализация OpenID 2.0 завершена, он поддерживает профиль ICAM OpenID 2.0 правительства США и использовался для многих тестов на функциональную совместимость, безопасность и соответствие требованиям, и он работает как с RP OpenID 1.1, так и с RP 2.0, поэтому вы, скорее всего, получите хорошая совместимость со многими / всеми RP. Он имеет набор дополнительных функций безопасности , которые вы можете просто включить (например, требуется HTTPS, как вы сказали, это требование).

(Полное раскрытие: я написал DotNetOpenAuth.)

...