welcome: please sign in

The following 822 words could not be found in the dictionary of 0 words and are highlighted below:
account   action   Active   allow   and   Apache   apply   apps   auth   Auth   authorities   authority   authorized   autocreate   Basic   basic   be   blanks   Bot   botbouncer   Bouncer   Call   cannot   Cert   certificate   changed   claimed   Client   codes   coding   com   config   Contents   contrib   cookie   Cookie   cp1251   Digest   Directory   discovery   egw   email   en   Endpoint   env   example   External   externalcookie   False   Feature   ffffcc   forced   from   fs   get   Get   given   Given   Groupware   homewiki   http   id   identifier   if   import   in   init   interwiki   is   joe   key   Latin   ldap   ldapsearch   lifetime   Linux   List   localhost   Log   log   Login   login   maildomain   mc   Moin   more   Mount   mount   Multi   my   myopenid   name   net   none   None   not   Of   of   on   one   Open   openid   openidrp   openidserver   org   password   path   php   prefix   Proxy   py   Python   python   remove   Requests   result   rowbgcolor   samples   select   Server   server   service   Service   sess   Session   session   set   sign   single   smb   snippet   specs   sslclientcert   status   strip   Table   Text   the   titlecase   tld   tmp   to   token   Token   True   type   uris   url   use   user   var   wiki   wikiconfig   wikipedia   wikiurl   windomain   Windows   www   xmlrpc2   xmlrpclib   Автоматически   автоматически   авторизации   авторизация   Авторизация   авторизованное   администратором   адрес   адресами   адресном   александр   Александр   аналогичной   аналогичную   анонимных   Аргумент   аргумент   аргумента   аргументам   аргументе   аргументов   аргументы   архиве   ассоциировать   атрибутами   аутентификации   Аутентификации   аутентификационную   аутентификацию   аутентификация   Аутентификация   аутентифицироваться   аутентифицируется   базы   большее   будет   будут   быть   валидность   валидны   вариантов   ввода   вводит   веб   Веб   верификации   Верификация   верна   вещей   взаимодействие   видов   вики   включения   включены   Включить   включить   включённая   вместо   внешней   внешними   Во   во   Возможно   возможности   возможность   вопросов   воспользовавшись   воспользоваться   времени   время   вручную   всеми   всех   встроенные   встроенных   втором   вывод   выглядит   вызова   вызываемые   выключены   выполнен   выполнена   выполнить   выполняется   выполнять   выше   далее   данного   данной   данную   данные   данный   данными   два   двух   действие   декодирована   декодировать   Делает   диалоговое   дистрибутива   Для   для   до   добавить   добавление   добавления   документацию   документация   должен   должна   должно   должных   домен   домена   домене   Дополнительная   дополнительной   допуска   допустимых   достаточно   достигнуть   доступ   доступные   другая   других   другую   его   единой   единую   ему   если   Если   ею   её   же   жизни   жёстко   заведении   завершается   завершение   завершении   завершения   зависимостями   заглавным   задаванием   задана   задания   заданным   задать   задачу   закомментированную   занимаются   записей   записи   Записывает   запись   записью   Запрещать   запрещён   запрос   запроса   запросе   запросов   запросом   зачастую   значение   Значение   значения   значениями   из   известный   извлекающих   Или   или   им   имеет   имен   имена   имени   имеют   Имя   имя   интеграцию   интерфейс   иную   информации   информацию   использование   Использование   использованием   использовании   использования   использовать   Использовать   использоваться   используемой   используемую   используемых   использует   используется   используют   используя   Исходное   их   каждого   каждом   Как   как   какую   каталог   каталоге   каталоги   качестве   Класс   класс   класса   клиента   клиентских   кликает   ключ   кнопке   когда   кода   кодировка   Кодировка   кодировке   кодировку   кодом   конкретных   Конструктор   конструктора   конструкторе   конструктору   конструкцию   контекстом   контроллерах   конфигурации   конфигурационного   конфигурацию   конфигурация   Конфигурация   конфигурирование   корректной   которую   которые   который   Кроме   куки   ли   лог   логина   Любая   Любой   любых   меется   менее   могли   могут   модуле   модулей   модулем   Модули   модули   Модуль   модуль   модулю   модуля   модулями   может   Можно   можно   Мойн   момент   Монтирует   на   На   набора   навыков   Название   называется   наличии   Написание   Например   например   настраиваемые   настраивать   Настраивать   настроен   настройка   находится   находящийся   Начальное   не   небольшого   невалидны   неверным   недокументирована   некоего   некоей   некорректна   некорректным   некоторых   необходим   необходимо   Необходимо   необходимости   необходимую   нескольких   нет   неудачно   нибудь   Ниже   ник   никакой   но   новой   новый   нуля   обеспечивает   обмена   обновлена   обновление   обновляет   Обновлять   обозревателя   образом   Обращайтесь   объединения   объект   объекты   обычно   одна   окно   окружения   Он   он   она   они   описание   Описание   определённого   определённым   оставляя   от   отключает   отладк   отладочной   отладочный   отличных   отмене   относительно   отправки   отсутствия   ошибки   Пара   параметр   Параметр   параметра   параметров   параметру   пароль   паролю   пароля   паролями   пары   патчем   первый   перед   передавать   переданное   переданы   передаёт   Переменная   переменной   переменную   переменных   печати   По   по   поведение   повторно   подбора   поддерживает   поддерживается   поддерживают   поддерживаются   Поддержка   поддержка   поддержки   поддержку   подключаемых   подписанных   подходит   подходящей   позволяет   позволять   поиска   поиске   пользователей   пользователем   пользователи   пользователь   Пользователь   пользовательский   пользователя   пользователям   пользователями   помощи   Помощь   попытка   порядке   посещении   После   после   последующее   посмотреть   Посоветуйтесь   посредством   Посредством   поставляемые   потом   почтовой   почтовый   почтовыми   поэтому   Предварительно   предоставляемая   Предоставляемая   предоставляемые   предположении   представлен   Преобразование   преобразований   преобразования   Преобразования   Преобразованное   префикс   при   При   Привалов   привалов   приведён   привести   приводит   придерживаться   приложений   приложениями   применяются   пример   примера   примеров   пробельные   проблем   Проблемы   провайдера   проверенных   Проверить   проверки   проверяемому   проверяет   проекта   произойти   Просматривать   просмотреть   просто   пространстве   просьба   процесс   Процесс   процесса   прочитать   псевдоаутентификации   путь   путём   пытается   пытаться   работы   равно   различные   различных   разрешённых   реализации   реализовано   реализует   результатам   реквизита   реквизиты   рекомендуется   ресурса   решить   ряд   Самим   сделана   сделано   сеанса   Сеансам   сервер   сервера   серверах   сервером   серверы   сервис   сервисом   сертификата   сертификатам   сертификате   сертификатов   сертификату   сертификаты   сессии   сессий   сессия   символ   символов   символы   системами   системах   следствие   следующая   следующее   следующему   следующие   следующим   следующих   следующую   слова   случае   случаях   См   см   сменить   со   собственного   событиях   совместно   Совместное   содержать   содержащееся   содержащийся   содержит   создавать   Создавать   создаваться   создана   создание   создать   Создать   создаёт   соответствующие   соответствующий   соответствующим   составе   состоянии   сохраняется   списка   списке   список   Список   Способ   способа   способов   способы   стандартное   стандартную   стандартных   стоит   сторонних   строк   строки   строку   Существует   существующей   существующие   существующими   Схема   таблице   так   также   Также   таким   таковое   те   Тем   Тестовый   то   того   только   том   требует   требуется   требующего   тщательной   увенчалось   увидит   удалось   Удаляет   Удалёет   удалённой   уже   указав   указанная   указанное   указанном   указанные   указанный   указанных   указать   Указать   Указывает   умолчанию   управление   успезом   успешно   устанавливающий   установить   утилитой   утилиты   учётная   учётной   учётную   учётные   учётных   файл   Файл   файла   файлам   файлов   файлы   фиксированное   фиксированные   фиксировано   флагов   форме   форму   формы   функции   функциональности   хранить   целей   часть   чего   через   читает   что   чтобы   чтоит   шагов   экземпляр   экспериментальном   элемент   эта   этапах   этих   это   этого   этом   Юникод   являться   являются   явно  

Clear message
location: ПомощьПоАутентификации

Схема работы аутентификации в МойнМойн

МойнМойн поддерживает различные настраиваемые модули аутентификации для поддержки различных способов аутентификации, как встроенных, так и сторонних.

Параметр конфигурации auth используется для задания списка модулей аутентификации, используемых в указанном в списке порядке.

При использовании внешней базы пользователей нет необходимости в заведении всех учётных записей МойнМойн вручную. Для этих целей те модули аутентификации, которые поддерживают создание/обновление учётной записи, поддерживают параметр autocreate. Если задать ему значение «True», учётная запись будет создана/обновлена когда (новый) пользователь успешно аутентифицируется.

На данный момент поддерживаются следующие модули аутентификации:

Конфигурация сервера

Способ аутентификации

Название класса модуля аутентификации в МойнМойн

Любая

Самим МойнМойн по имени учётной записи и паролю

MoinMoin.auth.MoinAuth

По PHP-сессии

MoinMoin.auth.php_session.PHPSessionAuth

Самим МойнМойн с использованием внешней куки

см. contrib/auth_externalcookie/ и ПомощьПоАутентификации/ExternalCookie

По OpenID

MoinMoin.auth.openidrp.OpenIDAuth

Верификация OpenID при помощи http://botbouncer.com/

MoinMoin.auth.botbouncer.BotBouncer

МойнМойн через LDAP

MoinMoin.auth.ldap_login.LDAPAuth

МойнМойн посредством удалённой вики

MoinMoin.auth.interwikiнаходится в экспериментальном состоянии

По конфигурации МойнМойн, фиксированные имена учётных записей

MoinMoin.auth.GivenAuth

Любой веб-сервер, устанавливающий переменную REMOTE_USER

Например, HTTP Basic, HTTP Digest, SSPI (также известный как NTLM) или аутентификация по LDAP

MoinMoin.auth.GivenAuth

Apache+SSL

Посредством Apache с использованием SSL-сертификата клиента

MoinMoin.auth.sslclientcert.SSLClientCertAuth

Модули псевдоаутентификацииданные модули не являются модулями аутентификации, так как не занимаются ею, но используют аутентификационную информацию для различных целей.

Имя класса

Описание

MoinMoin.auth.log.AuthLog

Записывает информацию о различных событиях (аутентификация, завершение сессии, запрос) в лог.

MoinMoin.auth.smb_mount.SMBMount

Монтирует с использованием логина/пароля, указанных во время аутентификации, доступные по SMB каталоги и отключает их при завершении сессии.

Модули в составе дистрибутива

MoinAuth (модуль по умолчанию)

Ниже представлен список модулей аутентификации по умолчанию (как следствие, если он подходит, нет необходимости настраивать его).

   1     from MoinMoin.auth import MoinAuth
   2     auth = [MoinAuth(), ]

Предоставляемая аутентификация

Аутентификация, предоставляемая переменной окружения REMOTE_USER

Веб-серверы (например, Apache) зачастую поддерживают различные способы аутентификации, встроенные или посредством подключаемых модулей (например, HTTP basic auth). Если сервер настроен на использование аутентификации, то она выполняется до вызова МойнМойн. При посещении ресурса ,требующего аутентификацию, пользователь увидит диалоговое окно обозревателя с запросом имени учётной записи и пароля. После отправки формы аутентификации, может произойти одна из двух вещей:

Модуль аутентификации GivenAuth по умолчанию пытается выполнить аутентификацию в МойнМойн, используя имя пользователя, указанное в переменной окружения REMOTE_USER.

Для использования аутентификации посредством переменной окружения REMOTE_USER необходимо добавить следующие строки в wikiconfig.py:

   1     from MoinMoin.auth import GivenAuth
   2     auth = [GivenAuth(autocreate=True), ]

Использование других переменных окружения

Можно использовать какую-нибудь другую переменную окружения вместо REMOTE_USER для аутентификации, указав его в аргументе env_var конструктора класса модуля аутентификации:

   1     from MoinMoin.auth import GivenAuth
   2     auth = [GivenAuth(env_var='ЧТО_УГОДНО', autocreate=True), ]

Кодировка имени учётной записи

Переменная окружения REMOTE_USER (или другая, указанная в аргументе env_var) содержит строку в некоей кодировке и, как следствие, должна быть декодирована в строку Юникод. Если кодировка не задана, будет сделана попытка декодировать её как строку в UTF-8, потом как строку в Latin-1 (в указанном порядке). Для символов, отличных от набора ASCII, это может привести к некорректным результатам в случае, если веб-сервер использует иную кодировку.

В случае, если поведение по умолчанию приводит к неверным результатам, необходимо явно указать используемую кодировку:

   1     auth = [GivenAuth(env_var='ЧТО_УГОДНО', autocreate=True, coding='cp1251'), ]

Преобразование имени учётной записи

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

Модуль аутентификации GivenAuth имеет ряд флагов для поддержки некоторых стандартных видов преобразований, которые можно при необходимости включить путём задания значения True соответствующим аргументам (по умолчанию они выключены и соответствующие аргументы имеют значение False):

Аргумент

Исходное значение

Преобразованное значение

Описание

strip_maildomain

joe@example.org

joe

Удаляет почтовый домен из аргумента, оставляя только имя пользователя

strip_windomain

ДОМЕН\имя

имя

Удаляет домен Windows из аргумента, оставляя только имя пользователя

titlecase

александр привалов

Александр Привалов

Делает первый символ каждого слова аргумента заглавным

remove_blanks

Александр Привалов

АлександрПривалов

Удалёет пробельные символы из аргумента

(!) Преобразования применяются (если они включены) в указанном в таблице выше порядке.

Например, для вики в Windows-домене может использоваться следующая конфигурация:

   1     auth = [GivenAuth(autocreate=True, strip_windomain=True, titlecase=True, remove_blanks=True), ]

Аутентификация как фиксировано заданным в конфигурации пользователем

Также можно жёстко задать в конфигурации фиксированное имя учётной записи:

   1     from MoinMoin.auth import GivenAuth
   2     auth = [GivenAuth(user_name=u'Александр Привалов', autocreate=True), ]

Любой запрос к вики будет являться запросом от данного пользователя автоматически.

Аутентификация по SSL-сертификату клиента

Для включения аутентификации посредством клиентских сертификатов SSL необходимо добавить в wikiconfig.py следующее:

   1     from MoinMoin.auth.sslclientcert import SSLClientCertAuth
   2     auth = [SSLClientCertAuth(), ]

Аутентификация по SSL-сертификатам клиента должна использоваться совместно с веб-сервером, который реализует её (например, Apache) и передаёт МойнМойн только ряд переменных окружения.

Модуль аутентификации SSLClientCertAuth имеет ряд параметров, которые могут быть переданы в качестве аргументов конструктору класса (пример приведён далее):

Параметр

Значение по умолчанию

Описание

authorities

None

Список допустимых authority, или None для допуска любых authority.

email_key

True

Указывает, должен ли использоваться содержащийся в сертификате почтовый адрес для поиска учётной записи МойнМойн.

name_key

True

Указывает, должно ли использоваться содержащееся в сертификате имя для поиска учётной записи МойнМойн.

use_email

False

Если значение параметра равно True, будет использоваться почтовой адрес, указанный в сертификате, и не будет возможности его сменить.

use_name

False

if set to True, the account name cannot be changed and is forced to the one given in the certificate

autocreate

False

Если значение параметра равно True, учётные записи МойнМойн будут создаваться автоматически при необходимости.

Например, для допуска только проверенных Apache сертификатов, подписанных определённым authority, можно использовать следующую конструкцию:

   1     from MoinMoin.auth.sslclientcert import SSLClientCertAuth
   2     auth = [SSLClientCertAuth(authorities=['my.authority.tld']), ]

Или аналогичную.

PHP-сессия

Для использования единой с PHP-приложениями аутентификации необходимо использовать класс PHPSessionAuth из модуля php_session. Он читает файлы PHP-сессий и таким образом обеспечивает интеграцию с существующими системами авторизации в PHP.

Для использования данного модуля конфигурации достаточно добавить следующие строки в конфигурацию:

   1     from MoinMoin.auth.php_session import PHPSessionAuth
   2     auth = [PHPSessionAuth(), ]

Конструктор класса PHPSessionAuth имеет следующие аргументы:

   1     PHPSessionAuth(apps=['egw'], s_path="/tmp", s_prefix="sess_")

На данный момент из PHP-приложений поддерживается только eGroupware 1.2. Тем не менее, достаточно просто добавить поддержку других приложений путём добавления нескольких строк кода, извлекающих необходимую информацию из PHP-сессии. Если таковое будет реализовано, просьба создать запрос на добавление функциональности с соответствующим патчем.

Авторизация по OpenID (с использованием BotBouncer)

Модуль аутентификации по OpenID позволяет пользователям аутентифицироваться используя их OpenID и ассоциировать данный OpenID с новой или существующей учётной записью МойнМойн. Для того, чтобы пользователи могли аутентифицироваться с использованием OpenID, необходимо добавить модуль в список параметра auth:

   1     from MoinMoin.auth.openidrp import OpenIDAuth
   2     auth = [OpenIDAuth(), ]

Для верификации OpenID сервисом http://botbouncer.com/ Необходимо добавить в конфигурацию следующее:

   1     from MoinMoin.auth.botbouncer import BotBouncer
   2     auth = [BotBouncer("ключ-botbouncer-API"), ]

Аутентификации по OpenID для работы требуется включённая поддержка анонимных сессий, для чего достаточно установить первый элемент значения параметра cookie_lifetime конфигурации в значение, большее нуля (например, cookie_lifetime = (2,12)). См. КакНастраивать и ПомощьПоСеансам для дополнительной информации по параметру. Для OpenID достаточно небольшого времени жизни сессии.

Дополнительная настройка OpenID RP

Модуль OpenID RP может быть также настроен для двух следующих вариантов использования:

  1. Использование определённого OpenID-провайдера. Существует два способа решить данную задачу:
    • Указать соответствующий аргумент в конструкторе класс модуля аутентификации:
         1     auth = [OpenIDAuth(forced_service='http://myopenid.com/'), ]
      
    • Создать экземпляр класса OpenIDServiceEndpoint и передавать его в качестве значения аргумента forced_service конструктора:

         1     fs = OpenIDServiceEndpoint()
         2     fs.type_uris = OPENID_2_0_TYPE
         3     fs.server_url = 'http://localhost:8000/openidserver'
         4     fs.claimed_id = 'http://specs.openid.net/auth/2.0/identifier_select'
         5 
         6     auth = [OpenIDAuth(forced_service=fs), ]
      
    Во втором случае нет необходимости выполнять discovery.
  2. Можно задать функции, вызываемые на различных этапах процесса аутентификации по OpenID для, например, реализации обмена атрибутами. На данный момент эта возможность недокументирована, для дополнительной информации см. файл MoinMoin/auth/openidrp.py.

Аутентификация с использованием LDAP

Модуль аутентификации LDAP МойнМойн позволяет использовать единую аутентификацию (single-sign-on, SSO) — в предположении, что уже меется каталог LDAP с пользователями, паролями и почтовыми адресами. На системах с Linux для этих целей обычно используется сервер OpenLDAP, на серверах с Windows (обычно, контроллерах домена) данный сервис называется «Active Directory» (AD).

Процесс аутентификации выглядит следующим образом:

Начальное и последующее конфигурирование аутентификации с использованием LDAP

Предварительно необходимо установить модуль Python python-ldap со всеми его зависимостями, см. его документацию.

Также необходим сервер LDAP или AD.

См. Файл wiki/config/more_samples/ldap_wikiconfig_snippet.py в архиве дистрибутива МойнМойн для примера конфигурации, которую можно использовать в конфигурации вики.

(!) Также рекомендуется прочитать файл README, находящийся в том же каталоге.

Проблемы при использовании LDAP

Поддержка проекта МойнМойн не имеет никакой информации о используемой в конкретных случаях конфигурации LDAP-сервера, поэтому перед задаванием вопросов рекомендуется придерживаться следующих шагов:

/!\ Обращайтесь в поддержку МойнМойн только в случае, если удалось успешно воспользоваться ldapsearch (или аналогичной утилитой) и после тщательной проверки конфигурации вики.

Аутентификация с использованием XMLRPC

   1 # -*- codung: utf-8 -*-
   2 import xmlrpclib
   3 
   4 name = "ТестовыйПользователь"
   5 password = "пароль"
   6 wikiurl = "http://localhost:8080/"
   7 
   8 homewiki = xmlrpclib.ServerProxy(wikiurl + "?action=xmlrpc2", allow_none=True)
   9 auth_token = homewiki.getAuthToken(name, password)
  10 
  11 mc = xmlrpclib.MultiCall(homewiki)
  12 mc.applyAuthToken(auth_token)
  13 # Здесь можно добавить дополнительные вызовы методов XML RPC в MultiCall()
  14 # Они будут выполнены с аутентификационной информацией пользователя.
  15 result = mc()

Совместное использование нескольких модулей аутентификации

Для объединения, например, аутентификации по SSL-сертификату клиента и по имени учётной записи и паролю, wikiconfig.py должен содержать следующее:

   1     from MoinMoin.auth import MoinAuth
   2     from MoinMoin.auth.sslclientcert import SSLClientCertAuth
   3     auth = [SSLClientCertAuth(), MoinAuth()]

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

Написание собственного модуля аутентификации

См. закомментированную часть конфигурационного файла contrib/auth_externalcookie/ и файлы MoinMoin/auth/*.py, поставляемые в составе дистрибутива, для примеров реализации модулей аутентификации. Кроме того, документация в MoinMoin/auth/__init__.py содержит описание того, что может быть сделано и как этого можно достигнуть.

Модули аутентификации имеют следующие возможности: