【问题标题】:Flask-LDAP limit access to website based on group membership in ADFlask-LDAP 根据 AD 中的组成员身份限制对网站的访问
【发布时间】:2014-07-18 10:03:56
【问题描述】:

我有一个在 Flask 中构建的网站,只有在 Active Directory 中才能访问该网站。我想将该范围限制为组成员身份,但我不知道该怎么做。

到目前为止,这是我的代码:

@app.route('/login', methods=["GET", "POST"])

def login():

    session.permanent = True

    if g.user is not None and g.user.is_authenticated():
        return redirect(url_for('main'))

    if request.method == 'POST':
        login = LoginValidator(username=request.form.get('username'),
                               password=request.form.get('password'))

        if login.is_valid:
            login_user(login.lookup_user, remember=False)
            string = 'You have logged in as '+ g.user.username 
            flash(string, 'success')
            return redirect(url_for('main'))
        else: 
            username=request.form.get('username')
            password=request.form.get('password')

            ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW) 
            sess = ldap.initialize('LDAP_SERVER') 
            sess.set_option(ldap.OPT_REFERRALS, 0) # referrals = 0
            sess.set_option(ldap.OPT_PROTOCOL_VERSION, 3)

            try:
                sess.bind_s("%s@example.net" % username, password) 


                numuser = len(User.query.all()) 
                hash = sha256_crypt.encrypt(password)
                u = User(id=numuser+1, 
                         username=username, 
                         password=hash, 
                         role="ROLE_USER")

                db.session.add(u) 
                db.session.commit()
                flash('User added to the database, please login again', 'info')

            except:
                flash('Incorrect Login/Password', 'danger')

    return render_template('login.html')

这样做是检查用户名和密码是否在数据库中,如果不在,则尝试使用指定的用户名和密码绑定到 LDAP 服务器。如果绑定成功,则对密码进行哈希处理并将用户名和哈希密码添加到数据库中。

此解决方案的问题在于 Active Directory 中的任何人都可以访问该网站。怎么可能只允许某个组的成员访问?

【问题讨论】:

    标签: flask active-directory ldap active-directory-group


    【解决方案1】:

    如果您要使用 Flask-ldap,则需要设置一个配置选项:

    http://flask-ldap.readthedocs.org/en/latest/setting%20it%20up.html

    LDAP_REQUIRED_GROUP - 如果指定,身份验证必须成功 并且用户必须是该安全组的一部分。 (前任: “CN=security_group_name,OU=Groups,DC=example,DC=com”)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      相关资源
      最近更新 更多