Windows(NTLM) 인증을 기본적으로 지원하는 최고의 Linux용 오픈 소스 위키 [닫기]

Windows(NTLM) 인증을 기본적으로 지원하는 최고의 Linux용 오픈 소스 위키 [닫기]

우리 엔지니어링 그룹을 위한 Wiki를 설정해야 합니다. 우리는 전사적 Windows Active Directory 도메인의 일부입니다. 대부분의 기업 IT 응용 프로그램은 인증을 위해 NTLM(Internet Exploder를 통해 자동화됨)을 사용합니다. 저는 기업 IT 부서에 속하지는 않지만 SSO(Single Sign-On)가 사용자 승인에 매우 중요하다는 것을 알고 있습니다.

나는 잘 테스트되고 Linux (미주 1 참조) 에서 호스팅될 수 있는 무료 오픈 소스 위키를 찾고 있으며 , 동시에 회사 Windows 랩톱이 암호 프롬프트 없이 자동으로 인증되도록 허용하고 싶습니다.

난 몇 가지 트릭을 봤어모인인증을 위해 NTLM을 사용하는 방법은 미주 2를 참조하세요 . 하지만 실제로 어떻게 작동하는지 모르므로 moin + NTLM을 사용한 배포 경험은 가치가 있습니다. 나도 본 적 있어FoxWiki, 하지만FOS Wiki는 자동 로그인을 지원하지 않는 것 같습니다..

질문:

간단히 말해서, 나는 기본 자동 NTLM 인증을 지원하는 최고의 무료 오픈 소스 Linux 위키 구현을 찾고 있습니다 (참고 3 참조) .가격 인하또는텍스트 재구성.


미주:

  1. Windows에서 실행하려면 다음을 사용할 수 있습니다.드라이버 위키;그러나 Windows에서 웹 서비스를 호스팅한다는 생각은 내부적으로 더러운 느낌을 줍니다.
  2. 바라보다WikiMatrix에 관한 이 기사
  3. 만약 그런 일이 실제로 존재한다면

답변1

결국 사용하고 moin아래에 설치했습니다 /opt/moin... WSGI를 사용하여 호스팅했습니다 apache2... Windows에서 호스팅하지 않으면 자동 NTLM 인증을 수행할 수 없었습니다 moin... Linux에서 호스팅했지만 여전히 우리의 지침에 따라 작동합니다 NT 도메인의 로컬 LDAP 서버에 대한 인증입니다.

이것은 /opt/moin/config/wikiconfig.py...사용하신다면 제가 구성을 정리했고 아래 LDAP 인증 코드의 "foo"는 실제로 제 회사 이름이라는 점을 이해해 주시기 바랍니다....사람마다 LDAP 설정이 다르기 때문에 필요할 수도 있습니다. 귀하의 환경에서 일부 인증 매개변수를 조정하십시오... YMMV...

# -*- coding: iso-8859-1 -*-
# IMPORTANT! This encoding (charset) setting MUST be correct! If you live in a
# western country and you don't know that you use utf-8, you probably want to
# use iso-8859-1 (or some other iso charset). If you use utf-8 (a Unicode
# encoding) you MUST use: coding: utf-8
# That setting must match the encoding your editor uses when you modify the
# settings below. If it does not, special non-ASCII chars will be wrong.

"""
    MoinMoin - Configuration for a single wiki

    If you run a single wiki only, you can omit the farmconfig.py config
    file and just use wikiconfig.py - it will be used for every request
    we get in that case.

    Note that there are more config options than you'll find in
    the version of this file that is installed by default; see
    the module MoinMoin.config.multiconfig for a full list of names and their
    default values.

    Also, the URL http://moinmo.in/HelpOnConfiguration has
    a list of config options.

    ** Please do not use this file for a wiki farm. Use the sample file
    from the wikifarm directory instead! **
"""

import os

from MoinMoin.config import multiconfig, url_prefix_static
from MoinMoin.auth.ldap_login import LDAPAuth
from MoinMoin.auth import MoinAuth


class Config(multiconfig.DefaultConfig):

    # Critical setup  ---------------------------------------------------

    # Directory containing THIS wikiconfig:
    wikiconfig_dir = os.path.abspath(os.path.dirname(__file__))

    # We assume that this config file is located in the instance directory, like:
    # instance_dir/
    #              wikiconfig.py
    #              data/
    #              underlay/
    # If that's not true, feel free to just set instance_dir to the real path
    # where data/ and underlay/ is located:
    #instance_dir = '/where/ever/your/instance/is'
    instance_dir = '/opt/moin'

    # Where your own wiki pages are (make regular backups of this directory):
    data_dir = os.path.join(instance_dir, 'data', '') # path with trailing /

    # Where system and help pages are (you may exclude this from backup):
    data_underlay_dir = os.path.join(instance_dir, 'underlay', '') # path with trailing /

    # The URL prefix we use to access the static stuff (img, css, js).
    # Note: moin runs a static file server at url_prefix_static path (relative
    # to the script url).
    # If you run your wiki script at the root of your site (/), just do NOT
    # use this setting and it will automatically work.
    # If you run your wiki script at /mywiki, you need to use this:
    #url_prefix_static = '/mywiki' + url_prefix_static


    # Wiki identity ----------------------------------------------------

    # Site name, used by default for wiki name-logo [Unicode]
    sitename = u'QA Wiki'

    # Wiki logo. You can use an image, text or both. [Unicode]
    # For no logo or text, use '' - the default is to show the sitename.
    # See also url_prefix setting below!
    logo_string = u'<img src="%s/common/moinmoin.png" alt="MoinMoin Logo">' % url_prefix_static

    # name of entry page / front page [Unicode], choose one of those:

    # a) if most wiki content is in a single language
    page_front_page = u"DefaultPage"

    # b) if wiki content is maintained in many languages
    #page_front_page = u"FrontPage"

    # The interwiki name used in interwiki links
    interwikiname = u'QAWiki'
    # Show the interwiki name (and link it to page_front_page) in the Theme,
    # nice for farm setups or when your logo does not show the wiki's name.
    #show_interwiki = 1


    # Security ----------------------------------------------------------

    # This is checked by some rather critical and potentially harmful actions,
    # like despam or PackageInstaller action:
    #superuser = [u"YourName", ]
    superuser = [u"Mike_Pennington", ]

    # IMPORTANT: grant yourself admin rights! replace YourName with
    # your user name. See HelpOnAccessControlLists for more help.
    # All acl_rights_xxx options must use unicode [Unicode]
    acl_rights_before = u"Mike_Pennington:read,write,delete,revert,admin"
    acl_rights_default = u"Mike_Pennington:read,write,delete,revert,admin, Known:read,write All:read"

    # The default (ENABLED) password_checker will keep users from choosing too
    # short or too easy passwords. If you don't like this and your site has
    # rather low security requirements, feel free to DISABLE the checker by:
    #password_checker = None # None means "don't do any password strength checks"
    password_checker = None

    # Link spam protection for public wikis (Uncomment to enable)
    # Needs a reliable internet connection.
    #from MoinMoin.security.antispam import SecurityPolicy


    # Mail --------------------------------------------------------------

    # Configure to enable subscribing to pages (disabled by default)
    # or sending forgotten passwords.

    # SMTP server, e.g. "mail.provider.com" (None to disable mail)
    #mail_smarthost = ""

    # The return address, e.g u"Jürgen Wiki <[email protected]>" [Unicode]
    #mail_from = u""

    # "user pwd" if you need to use SMTP AUTH
    #mail_login = ""


    # User interface ----------------------------------------------------

    # Add your wikis important pages at the end. It is not recommended to
    # remove the default links.  Leave room for user links - don't use
    # more than 6 short items.
    # You MUST use Unicode strings here, but you need not use localized
    # page names for system and help pages, those will be used automatically
    # according to the user selected language. [Unicode]
    navi_bar = [
        # If you want to show your page_front_page here:
        #u'%(page_front_page)s',
        u'DefaultPage',
        u'SiteIndex',
        u'RecentChanges',
        u'FindPage',
        u'HelpContents',
    ]

    # The default theme anonymous or new users get
    theme_default = 'modernized'


    # Language options --------------------------------------------------

    # See http://moinmo.in/ConfigMarket for configuration in
    # YOUR language that other people contributed.

    # The main wiki language, set the direction of the wiki pages
    language_default = 'en'

    # the following regexes should match the complete name when used in free text
    # the group 'all' shall match all, while the group 'key' shall match the key only
    # e.g. CategoryFoo -> group 'all' ==  CategoryFoo, group 'key' == Foo
    # moin's code will add ^ / $ at beginning / end when needed
    # You must use Unicode strings here [Unicode]
    page_category_regex = ur'(?P<all>Category(?P<key>(?!Template)\S+))'
    page_dict_regex = ur'(?P<all>(?P<key>\S+)Dict)'
    page_group_regex = ur'(?P<all>(?P<key>\S+)Group)'
    page_template_regex = ur'(?P<all>(?P<key>\S+)Template)'

    # Content options ---------------------------------------------------

    # Show users hostnames in RecentChanges
    show_hosts = 1

    # Enable graphical charts, requires gdchart.
    #chart_options = {'width': 600, 'height': 300}


    # LDAP authentication ---------------------------------------------------

    ldap_authenticator1 = LDAPAuth(
        server_uri='ldap://10.16.16.237/',
        bind_dn = r'Americas\%(username)s',
        base_dn='dc=amer,dc=foo,dc=com',
        bind_pw='%(password)s',
        scope=2,
        referrals=0, # LDAP REFERRALS (0 needed for AD)
        search_filter='(sAMAccountName=%(username)s)',
        givenname_attribute='givenName',
        surname_attribute='sn',
        aliasname_attribute='displayname',
        email_attribute='mail',
        email_callback=None, # callback function called to make up email address
        coding='utf-8', # coding used for ldap queries and result values
        timeout=10, # how long we wait for the ldap server [s]
        start_tls=0, # usage of Transport Layer Security 0 = No, 1 = Try, 2 = Required
        tls_cacertdir=None,
        tls_cacertfile=None,
        tls_certfile=None,
        tls_keyfile=None,
        tls_require_cert=0, # 0 == ldap.OPT_X_TLS_NEVER (needed for self-signed certs)
        bind_once=True, # set to True to only do one bind - useful if configured to bind as the user on the first attempt
        autocreate=True, # set to True to automatically create/update user profiles
        #name='ldap', # use e.g. 'ldap_pdc' and 'ldap_bdc' (or 'ldap1' and 'ldap2') if you auth against 2 ldap servers
        report_invalid_credentials=True, # whether to emit "invalid username or password" msg at login time or not
    )

    auth = [ldap_authenticator1,] # this is a list, you may have multiple ldap authenticators
                                   # as well as other authenticators

    cookie_lifetime = (0, 4) # no anon user sessions, 1h session lifetime for logged-in users

    # customize user preferences (optional, see MoinMoin/config/multiconfig for internal defaults)
    # you maybe want to use user_checkbox_remove, user_checkbox_defaults, user_form_defaults,
    # user_form_disable, user_form_remove.
    ('checkbox_defaults',
    {
    'mailto_author': 0,
    'edit_on_doubleclick': 1,
    'remember_last_visit': 0,
    'show_comments': 0,
    'show_nonexist_qm': False,
    'show_page_trail': 1,
    'show_toolbar': 1,
    'show_topbottom': 0,
    'show_fancy_diff': 1,
    'wikiname_add_spaces': 0,
    'remember_me': 1,
    },
    "Defaults for user preferences, see HelpOnConfiguration/UserPreferences.")

나는 wsgi와 moin을 사용하고 있으므로 필요합니다./opt/moin/moin.wsgi

# -*- coding: iso-8859-1 -*-
"""
    MoinMoin - mod_wsgi driver script

    To use this, add those statements to your Apache's VirtualHost definition:

    # you will invoke your moin wiki at the root url, like http://servername/FrontPage:
    WSGIScriptAlias / /some/path/moin.wsgi

    # create some wsgi daemons - use someuser.somegroup same as your data_dir:
    WSGIDaemonProcess daemonname user=someuser group=somegroup processes=5 threads=10 maximum-requests=1000 umask=0007

    # use the daemons we defined above to process requests!
    WSGIProcessGroup daemonname

    @copyright: 2008 by MoinMoin:ThomasWaldmann
    @license: GNU GPL, see COPYING for details.
"""

import sys, os

# a) Configuration of Python's code search path
#    If you already have set up the PYTHONPATH environment variable for the
#    stuff you see below, you don't need to do a1) and a2).

# a1) Path of the directory where the MoinMoin code package is located.
#     Needed if you installed with --prefix=PREFIX or you didn't use setup.py.
#sys.path.insert(0, 'PREFIX/lib/python2.3/site-packages')

# a2) Path of the directory where wikiconfig.py / farmconfig.py is located.
#     See wiki/config/... for some sample config files.
#sys.path.insert(0, '/path/to/wikiconfigdir')
sys.path.insert(0, '/opt/moin')
sys.path.insert(0, '/opt/moin/code')
sys.path.insert(0, '/opt/moin/config')

# b) Configuration of moin's logging
#    If you have set up MOINLOGGINGCONF environment variable, you don't need this!
#    You also don't need this if you are happy with the builtin defaults.
#    See wiki/config/logging/... for some sample config files.
#from MoinMoin import log
#log.load_config('/path/to/logging_configuration_file')

from code.MoinMoin.web.serving import make_application

# Creating the WSGI application
# use shared=True to have moin serve the builtin static docs
# use shared=False to not have moin serve static docs
# use shared='/my/path/to/htdocs' to serve static docs from that path
application = make_application(shared=True)

FWIW, 여기 내 아파치 구성 파일이 있습니다 .../etc/apache2/conf.d/moin.conf

# Create some wsgi daemons - use these parameters for a simple setup
WSGIDaemonProcess moin user=www-data group=www-data processes=5 threads=10 maximum-requests=1000 umask=0007

#
WSGIProcessGroup moin

이것은 /etc/apache2/sites-available/netwiki...

<VirtualHost *:80>
  ServerName netwiki.us.foo.com

  RewriteEngine   on
  RewriteCond     %{HTTPS} !=on
  RewriteRule     ^(.*)$ https://netwiki.us.foo.com/$1 [L,R]

  DocumentRoot /opt/moin/code/
  WSGIScriptAlias / /opt/moin/moin.wsgi
</VirtualHost>

<VirtualHost *:443>
  ServerName netwiki.us.foo.com
  DocumentRoot /opt/moin/code/
  WSGIScriptAlias / /opt/moin/moin.wsgi

  # Generate with...
  # openssl req -new -x509 -days 365 -nodes -out netwiki.pem -keyout netwiki.key
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl/netwiki.pem
  SSLCertificateKeyFile /etc/apache2/ssl/netwiki.key
</VirtualHost>

답변2

저도 같은 상황에 처해 있으며 MediaWiki를 실행하고 있습니다. NTLM 인증은 Apache에서 다음과 같이 처리됩니다.PyAuthenNTLM2Mod-python의 모듈은 다음을 통해 사용자를 로그인하고 처음으로 자동으로 위키 계정을 생성합니다.자동 REMOTE_USER확장하다.

내 경험은 훌륭했습니다. SSO는 잘 작동하고 사용자는 Wiki가 Windows 도메인의 일부가 아니라는 사실을 전혀 눈치 채지 못하며 IT는 암호가 안전하다는 점에 만족합니다.

부인 성명: 저는 PyAuthenNTLM2의 작성자입니다. 이전에 사용했던 Apache 플러그인(Apache2::AuthenNTLM2)이 유지 관리되지 않았고 Windows 7 기본(그리고 합리적인) 보안 정책(NTLMv2)과 작동하지 않았기 때문에 이 플러그인을 작성했습니다.

답변3

우리는 사용MindTouch 코어(오픈 소스 버전). 인증을 위해 AD를 사용하여 Mono에서 Linux VM을 실행합니다. 2009년부터 전사적으로 사용되었습니다.

답변4

확인하고 싶을 수도 있습니다 http://www.jasig.org/cas

Enterprise Single Sign-On 서비스를 제공합니다.

관련 정보