2010-01-27 3 views
14

Я начинаю серьезно сомневаться в сообществе OpenID, несмотря на то, что он работает.Является ли OpenID слишком сложным?

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

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

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

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

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

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

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

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

+0

У меня тоже была эта проблема. Библиотека OpenID PHP хочет использовать пустую страницу с формой, которая автоматически отправляется с использованием JavaScript, но я решил вместо этого использовать перенаправление заголовка HTTP, но OpenID Google не вернет никаких полезных данных. – amphetamachine

+1

Не знаю, относится ли это к вашему вопросу, но я не уверен, что вы можете использовать учетную запись домена Google Apps с OpenID. У меня есть учетные записи Google Apps и «простая» учетная запись Google, и только последняя работает для проверки подлинности OpenID. Если кто-либо знает, как успешно использовать учетную запись Apps for domains в качестве OpenID, скажите, пожалуйста. :) –

+1

@calmh - я нашел довольно убедительную документацию, в которой вы можете использовать OpenID или OAuth для аутентификации в домене Google Apps, если вы платите за премиальный сервис. Но удивительно, поэтому я не нашел образцы о том, как это сделать. –

ответ

3

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

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

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

+3

Даже подумал, что RPX может быть очень полезным, я бы предпочел, если бы стороны, кроме меня и Google, не участвовали в аутентификации. Это может быть хорошо, но я не хочу зависимостей сторонних разработчиков. –

6

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

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

+1

Я знаком с библиотекой, я сам ее использовал, и это денди. Однако вы пробовали OAuth с помощью Google Apps для единого входа (Single Sign-On)? –

4

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

ДРЛ и Yadis:

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

(Тот факт, что OpenID (стандарт, который мы разработали без признанных стандартов), зависит от XRD (от другого стандарта незавершенного производства в an entirely different standards body), возможно, прискорбно. Все, что я могу сказать, это то, идея в то время.)

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

См.Joseph Smarr's. Святая корова, это уже 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 excerpt "или" как я могу идентифицировать этот запрос, действительно происходит из RP, у меня есть какие-то договорные отношения с ", но такие функции не являются чем-то, что есть в стандарте OpenID 2.0.

+0

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

+0

Вы смущены тем, что я специально написал выше? Что касается терминологии, прочитал ли вы раздел терминологии http://openid.net/specs/openid-authentication-2_0.html#terminology? – keturn

+0

Я признаю, что я не читал спецификацию. Часть терминологии полезна, но выбор слов? У меня проблемы с терминологией. Просто мне не нужно было переходить к спецификации, чтобы понять, как OpenID можно разобраться, а не то, что я имею в виду техническую часть, но что это незнакомо и несколько странно в бумаге. Должен стремиться к тому, как он работает на каком-то уровне абстракции, но не упоминает, как это работает на практике. Что-то я сейчас начинаю выяснять. Я все же предлагаю всю помощь, надеюсь, это само собой разумеется. –

-1

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

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

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

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

Смежные вопросы