OpenID слишком сложен? - PullRequest
       8

OpenID слишком сложен?

14 голосов
/ 27 января 2010

Я начинаю серьезно сомневаться в сообществе OpenID, несмотря на тот факт, что оно работает.

В настоящее время я оцениваю OpenID как службу аутентификации для этого сайта, и хотя обещания хороши, я просто не могу заставить его работать. И я действительно потерян.

Я прошу SO-сообщество помочь мне здесь. Дайте мне ответы и покажите мне примеры, чтобы я мог использовать это так, как это должно было быть.

Мой сценарий очень типичный. Я хочу аутентифицировать пользователей через определенный домен Служб Google. Если у вас есть доступ к этому домену Служб Google, у вас есть доступ к моему веб-приложению.

Там, где я заблудился, есть все необходимые предпосылки и зависимости.

  1. Что такое XRD?
  2. Что такое Ядис?
  3. Зачем мне XRD и Yadis?
  4. Что мне нужно сделать, чтобы развернуть OpenID-аутентификацию на моем сайте?

Кроме того, это действительно важно для меня.

Когда я вхожу в SO, я использую свою учетную запись Google. Когда я нажимаю кнопку входа в систему, я получаю эту страницу подтверждения. Где я даю SO право использовать учетные данные моей учетной записи Google.

Почему-то Google знает, что это «Stackoverflow.com», который спрашивает меня, можно ли войти в систему. И я хочу знать, каким образом я контролирую этот маленький текст. Я намереваюсь развернуть OpenID в нескольких разных доменах, но я бы предпочел, чтобы все они работали без индивидуальной настройки со специальными параметрами, такими как секретные ключи API, а что нет. Однако я точно не знаю, является ли это обязательным условием для OpenID, для этого или для API федеративного входа, предоставляемого Google.

Ответы [ 5 ]

6 голосов
/ 27 января 2010

Чтобы действительно ответить на ваш вопрос (то есть, игнорируя все аргументативные моменты), я, как мы говорим, использую DotNetOpenAuth для реализации авторизации OpenID для одного из моих сайтов; и это было довольно тривиально.

Это просто элемент управления .NET, который вы отбрасываете, настраиваете крошечное количество вещей и затем разрешаете ему ссылаться на проверку подлинности с помощью форм. Довольно мило.

4 голосов
/ 27 января 2010

Хорошо, у вас есть много вопросов под одним заголовком. Дай мне посмотреть, смогу ли я это сломать.

XRD и Yadis:

«Yadis» - это имя для фрагмента обнаружения службы OpenID - бит, который переводит вас с «мой OpenID is example.com» на «авторитетный сервер для моего OpenID, находится на openid.example.com/server и он поддерживает v2 с расширениями AX. " XRDS - это схема XML, которая содержит эту информацию.

(Тот факт, что OpenID (стандарт, который мы разработали с помощью общепризнанного органа по стандартизации) зависит от XRD (от другого незавершенного стандарта в совершенно другом органе по стандартизации ), возможно, вызывает сожаление. Можно сказать, что в то время это казалось хорошей идеей.)

«Что мне нужно сделать, чтобы развернуть?»

См. Джозеф Смарр Рецепт для включения OpenID вашего сайта . Святая корова, ей уже 2 года? Это все еще актуально, однако.

Как поставщик OpenID идентифицирует ваш сайт (проверяющую сторону):

Этот небольшой текст (например, "stackoverflow.com") является "областью" OpenID, который является параметром, который вы передаете провайдеру, и является строгим подмножеством URL-адреса конечной точки, который вы используете для обработки их ответа. (Таким образом, если вы скажете серверу отправлять ответ OpenID на server2.example.com/foobar, вашей областью может быть example.com или server2.example.com или server2.example.com/foobar, но не server99.example .com.)

Секретные ключи API:

Как правило, нет никакого секретного ключа API, который можно получить. Для поставщиков OpenID общего назначения ключи просто выдаются с помощью стандартного механизма ассоциации OpenID.

Теперь вы столкнулись с некоторыми функциями, которые провайдер OpenID определенно может счесть полезными - например, «как я могу сообщить пользователю более удобный способ входа на какой сайт, чем показывать ему URL» выдержка "или" как я могу определить, что этот запрос действительно исходит от RP, с которой у меня есть какие-то договорные отношения ", но такие функции не соответствуют стандарту OpenID 2.0.

3 голосов
/ 28 января 2010

Я действительно нашел решение своей проблемы, и, как ни странно, это было очень просто. Я до сих пор не понимаю XRDS и Yadis, но использую их довольно легко, вот так.

То, что вы хотите, и то, что вы ищете, - это код для работы с OpenID "ретранслятором". Это «вы» как потребитель OpenID провайдеров. Вы вводите конечную точку OpenID и вуаля, вы активировали OpenID на вашем сайте, этот код иллюстрирует это на практике.

// using DotNetOpenAuth
var openid = new OpenIdRelyingParty();
var response = openid.GetResponse();
if (response == null)
{
    // Google account end point (works fine)
    var googleID = "https://www.google.com/accounts/o8/id";
    // Google hosted account end point
    //  https://www.google.com/accounts/o8/site-xrds?hd=mydomain.com
    // I was unable to test this, but I was running my RP (this code)
    // from localhost and it's quite possible that a hosted account RP
    // has to return to the same domain.
    // It went fine, but crashed with a "Unable to resolve mydomain.com" error
    // once I logged in.
    openid.CreateRequest(googleID).RedirectToProvider();
}
else
{
    switch (response.Status)
    {
        case AuthenticationStatus.Authenticated:
            // Success
            // to allow persistance across sessions
            // you'll have to track the "claimed identifier"
            // some OpenID providers allow you to get an email address through
            // extensions but this is not always possible.
            // the claimed identifier is typically your safest bet
            // and it's a big URL which uniquely identifies the guest
            // as a specific user, however, you know very little about this user
            // which is a good thing becuase you don't have to give out personal or
            // sensitive information to start using a service.
            break;

        default:
            // Something went wrong, check Status property
            break;
    }
}

Пока я выяснял это, у меня было впечатление от каждой спецификации. там, где я должен был разместить своего собственного «провайдера OpenID», который звучал так, будто я должен был обрабатывать учетные записи или какую-то часть процесса На самом деле все, что мне нужно было сделать, это.

Запросите этот URL или если вы получите запрос OpenID в ответ. Проверьте, содержит ли этот запрос действительные данные для входа.

2 голосов
/ 27 января 2010

Похоже, вы действительно хотите исследовать RPX - это решение, которое облегчает разработчикам (и пользователям) использование их предпочтительных механизмов аутентификации, включая OpenID.

Работая в качестве посредника между сторонними поставщиками удостоверений и вашим веб-сайтом, RPX помогает вам без труда аутентифицировать пользователей с помощью их существующей учетной записи в Facebook, Google, Yahoo !, Twitter, MySpace, AOL, Windows Live / MSN / Hotmail или любой другой. OpenID провайдер.

0 голосов
/ 19 апреля 2012

По моему опыту, да.

Я пытался использовать DotNetOpenAuth, в частности, для Mono, и быстро ни к чему не привел, и я попробовал множество способов заставить его работать, и в итоге очень расстроился.

Без альтернатив я использовал LoginRadius (уже использую с сайтом WordPress, который у меня был), и обнаружил, что это намного проще, плюс всплывающее окно для аутентификации, как у меня хотел это с DotNetOpenAuth.

Они выглядят свободными в данный момент, но там написано Бета. Таким образом, они могут взимать плату за это в будущем ...

...