Является ли OpenID слишком сложным?
Я начинаю серьезно сомневаться в сообществе OpenID, несмотря на то, что он работает.
В настоящее время я оцениваю OpenID как службу проверки подлинности для сайта 'this', а promises отлично, я просто не могу заставить его работать. И я действительно потерялся.
Я прошу сообщество SO помочь мне здесь. Дайте мне ответы и покажите мне примеры, чтобы я мог использовать это так, как это должно было быть.
Мой сценарий очень типичен. Я хочу аутентифицировать пользователей через определенный домен Google Apps. Если у вас есть доступ к этому домену Google Apps, у вас есть доступ к моему веб-приложению.
Когда я теряюсь, все необходимые предпосылки и зависимости.
- Что такое XRD?
- Что такое Ядис?
- Зачем мне нужны XRD и Yadis?
- Что мне нужно сделать для развертывания проверки подлинности OpenID на моем веб-сайте?
Кроме того, это действительно важно для меня.
Когда я вхожу в систему SO, я использую свой аккаунт Google. Когда я нажимаю кнопку входа в систему, мне предоставляется эта страница подтверждения. Где я предоставляю SO право использовать учетные данные учетной записи Google.
Каким-то образом Google знает, что это "Stackoverflow.com", который спрашивает меня, нормально ли входить в систему. И я хочу знать, какой контроль над этим маленьким текстом. Я намерен развернуть OpenID на нескольких разных доменах, но я бы предпочел, чтобы все они работали без индивидуальной настройки со специальными параметрами, такими как секретные ключи API, а что нет. Однако я не знаю точно, является ли это предварительным условием OpenID, или API федеративного входа, который предоставляет Google.
Ответы
Ответ 1
Я действительно нашел решение своей проблемы, и, похоже, это было очень просто. Я до сих пор не понимаю XRDS и Yadis, но я использую это довольно легко.
Что вы хотите, и то, что вы ищете, это код для работы с ретрансляцией OpenID. Это "вы" как потребитель провайдеров OpenID. Вы вводите конечную точку OpenID и voila, у вас включен 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 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 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
Чтобы ответить на ваш вопрос (т.е. не принимать во внимание все аргументативные точки), я как-мы говорим, используя DotNetOpenAuth для реализации авторизации OpenID для одного из моих сайтов; и это было довольно тривиально.
Это просто элемент управления .NET, который вы его удаляете, настройте крошечное количество вещей, а затем дайте ссылку на аутентификацию форм. Очень приятно.
Ответ 3
Хорошо, у вас много вопросов под одним заголовком. Позвольте мне посмотреть, могу ли я сломать его.
XRD и Yadis:
"Ядис" - это имя для части обнаружения службы OpenID - бит, который доставит вас от "моего OpenID is example.com" к "авторитетному серверу для моего OpenID на openid.example.com/server и он поддерживает v2 с расширениями AX". XRDS - это XML-схема, содержащая эту информацию.
(Тот факт, что OpenID (стандарт, который мы разработали без какого-либо признанного стандарта), зависит от XRD (от другого стандарта незавершенного производства в полностью различные стандарты тела), возможно, прискорбно. Все, что я могу сказать, это то, что в то время это казалось хорошей идеей.)
"Что мне нужно сделать для развертывания?"
См. Joseph Smarr Рецепт для активации OpenID на вашем сайте. Святая корова, которая уже 2+ лет? Тем не менее он все еще имеет значение.
Как поставщик OpenID идентифицирует ваш сайт (полагающаяся сторона):
Этот маленький текст (например, "stackoverflow.com" ) является областью OpenID, которая является параметром, который вы передаете провайдеру, и является строгим подмножеством URL-адреса конечной точки, который используется для обработки их ответа. (Итак, если вы сообщите серверу отправить ответ OpenID серверу2.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.
Ответ 4
Похоже, вы действительно хотите исследовать RPX - это решение, которое облегчает использование разработчиками (и пользователями) их предпочтительные механизмы аутентификации, включая OpenID.
Работая в качестве прокси-сервера между сторонними поставщиками идентификационных данных и вашим сайтом, RPX помогает вам легко аутентифицировать пользователей с их существующей учетной записью на Facebook, Google, Yahoo!, Twitter, MySpace, AOL, Windows Live/MSN/Hotmail или любых других Поставщик OpenID.
Ответ 5
По моему опыту, да.
Я пытался использовать DotNetOpenAuth, в частности, в Mono, и не получил никуда быстро, и я попробовал много способов заставить его работать, и в конечном итоге очень расстроился.
Без альтернатив я использовал LoginRadius (уже использующий сайт WordPress, который у меня был), и нашел его намного проще, плюс он всплывает для всплывающего окна, чтобы выполнить аутентификацию, а именно, как я хотел бы получить ее с помощью DotNetOpenAuth.
В настоящий момент они выглядят свободными, но это говорит Бета. Поэтому они могут взимать плату за это в будущем...