Flask 根据广告中的组成员资格限制对网站的访问

Flask 根据广告中的组成员资格限制对网站的访问,flask,active-directory,ldap,active-directory-group,Flask,Active Directory,Ldap,Active Directory Group,我有一个网站,我建立在烧瓶,只能访问,如果你在活动目录。我想把这个范围限制在团体成员,但我不知道怎么做 以下是我目前的代码: @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')

我有一个网站,我建立在烧瓶,只能访问,如果你在活动目录。我想把这个范围限制在团体成员,但我不知道怎么做

以下是我目前的代码:

@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 ldap,则需要设置一个配置选项:

LDAP\u必需\u组-如果指定,身份验证必须成功 并且用户必须是此安全组的一部分。(例如: “CN=security\u group\u name,OU=Groups,DC=example,DC=com”)