Вопрос

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

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

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

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

Я теряюсь во всех необходимых предпосылках и зависимостях.

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

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

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

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

Это было полезно?

Решение 3

Я действительно нашел решение своей проблемы, и, как ни странно, оно оказалось очень простым.Я до сих пор не понимаю 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.Проверьте, содержит ли этот запрос действительные данные для входа.

Другие советы

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

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

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

XRD и Ядис:

«Ядис» был названием для Discovery Discovery Cunk of OpenID - бит, который выводит вас из «my openid is example.com» к «авторитетному серверу для моего OpenID на openid.example.com/server и поддерживает v2 с расширениями топора ". 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.

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top