Какая библиотека openid / oauth для подключения проекта django к аккаунтам Служб Google?

Старая школа на месте copy / stomp:

  private static string RemoveDirtyCharsFromString(string in_string)
     {
        int index = 0;
        int removed = 0;

        byte[] in_array = Encoding.UTF8.GetBytes(in_string);

        foreach (byte element in in_array)
        {
           if ((element == ' ') ||
               (element == '-') ||
               (element == ':'))
           {
              removed++;
           }
           else
           {
              in_array[index] = element;
              index++;
           }
        }

        Array.Resize<byte>(ref in_array, (in_array.Length - removed));
        return(System.Text.Encoding.UTF8.GetString(in_array, 0, in_array.Length));
     }

Не уверен в эффективности w.r.t. другие методы (т. е. накладные расходы всех вызовов функций и экземпляров, которые происходят как побочный эффект при выполнении C #).

30
задан DS. 6 December 2014 в 18:48
поделиться

4 ответа

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

django-openid-auth на самом деле довольно прост в настройке и использовании. Файл README очень понятен. Если вы просто хотите использовать стандартные учетные записи Google (например, адреса @ gmail.com), вы настраиваете их в settings.py с помощью:

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id'

Но если вы хотите использовать учетную запись «google apps», то есть размещать Gmail в вашей собственной компании домен, то все сложнее. Я получил свои данные из этого вопроса . Чтобы использовать свои учетные записи приложений Google, настройте свой settings.py на:

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=example.com'
# replace example.com with your hosted google apps domain

В будущем это может работать, но сегодня, вероятно, не будет. Проблема в python-openid, на который полагается django-openid-auth. Стандартная сборка python-openid не понимает некоторые расширения протокола, которые использует Google. (Зачем Google нужно расширять протокол? Покопайтесь в http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains и отчет. Удачи.) Поэтому вам нужно вместо этого использовать прощальный патч для python-openid, который доступен здесь: http://github.com/adieu/python-openid

Установите его поверх существующего python-openid. Теперь должно работать.

Будьте осторожны с настройкой OPENID_USE_AS_ADMIN_LOGIN , так как требует, чтобы у вас была учетная запись пользователя openid, которая является «штатным» или «суперпользователем», чтобы использовать администратора, чего не происходит по умолчанию. .Таким образом, вам нужно будет выполнить двухэтапный процесс включения openid, входа в систему с помощью openid, чтобы создать учетную запись в django, затем использовать свою старую учетную запись администратора, чтобы пометить свою собственную учетную запись openid как суперпользователя, а затем отключить не-openid admin доступ.

Еще одна вещь: администратору вашего домена, возможно, потребуется включить вход openid для вашего домена, прежде чем это сработает. Элемент управления находится по адресу http://www.google.com/a/cpanel/example.com/SetupIdp

17
ответ дан 28 November 2019 в 00:26
поделиться

Я использовал django-openid-auth . Работает нормально, можно создать учетную запись пользователя при первом подписании. Вы также можете связать вход openid с учетной записью пользователя в панели администратора django.

3
ответ дан 28 November 2019 в 00:26
поделиться

Мне понравилось, что Социальная регистрация Django позволила мне довольно легко подключать учетные записи Google, Facebook, Yahoo и любой другой сайт OpenID. Вам просто нужно указать поставщика в виде ссылки, например:

0
ответ дан 28 November 2019 в 00:26
поделиться

Все они практически идентичны. Мне нравится django-authopenid . Он имеет отличную документацию и чрезвычайно прост в использовании. Он будет делать именно то, что вы хотите, и делать это лучше, чем django-openid (это единственный вариант, который я пробовал).

HTH

0
ответ дан 28 November 2019 в 00:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: