Python Forum
Python /Flask Login with LDAP Auth - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Web Scraping & Web Development (https://python-forum.io/forum-13.html)
+--- Thread: Python /Flask Login with LDAP Auth (/thread-9512.html)



Python /Flask Login with LDAP Auth - pythonnubie - Apr-13-2018

I have Python/Flask application with a login screen. My goal is to utilize LDAP authentication in unison with my Python/Flask app.

The issue that i am running into is this: " raise RuntimeError('The session is unavailable because no secret ' RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret." I have a secret key and i still get the error same error when i comment it out.

Here is my code:
import token
from flask import Flask, session
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.login import LoginManager

app = Flask(name)
app.secret_key = 'welfhwdlhwdlfhwelfhwlehfwlehfelwehflwefwlehflwefhlwefhlewjfhwelfjhweflhweflhwel'
app.config['SESSION_TYPE'] = 'filesystem'
app.config['LDAP_AUTH_SERVER'] = 'LDAPLocation.com'
app.config['LDAP_PORT'] = '636'
app.config['LDAP_TOP_DN'] = 'CN=something here,OU=somethingHere,OU=SomeService Accounts,dc=magic,dc=pumpum,DC=com Xe'
app.config['LDAP_BIND_USER_PASSWORD'] = 'pssword'
app.register_blueprint(token, url_prefix='/auth')

db = SQLAlchemy(app)

login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'

from app.auth.views import auth

app.register_blueprint(auth)

Thank you in advance....


RE: Python /Flask Login with LDAP Auth - nilamo - Apr-13-2018

What's the whole traceback message?


RE: Python /Flask Login with LDAP Auth - pythonnubie - Apr-16-2018

see reply


RE: Python /Flask Login with LDAP Auth - pythonnubie - Apr-16-2018

(Apr-16-2018, 12:35 PM)pythonnubie Wrote: see reply

Traceback (most recent call last):
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\app.py", line 1997, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\_compat.py", line 33, in reraise
raise value
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\_compat.py", line 33, in reraise
raise value
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\e751975\PythonApp\venv\login\app.py", line 21, in do_admin_login
flash('wrong password!')
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\helpers.py", line 387, in flash
session['_flashes'] = flashes
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\werkzeug\local.py", line 350, in __setitem__
self._get_current_object()[key] = value
File "C:\Users\e751975\PythonApp\venv\lib\site-packages\flask\sessions.py", line 130, in _fail
raise RuntimeError('The session is unavailable because no secret '
RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.


RE: Python /Flask Login with LDAP Auth - nilamo - Apr-16-2018

Alright, after looking through the source, it looks like the LoginManager doesn't actually manage the session itself, it only adds some things on top of it. So you still need to let Flask know what sort of session management you're using.

https://github.com/pallets/flask/blob/master/flask/sessions.py#L124 Wrote:If :meth:open_session returns None Flask will call into
:meth:make_null_session to create a session that acts as replacement
if the session support cannot work because some requirement is not
fulfilled. The default :class:NullSession class that is created
will complain that the secret key was not set.

To replace the session interface on an application all you have to do
is to assign :attr:flask.Flask.session_interface::
app = Flask(__name__)
app.session_interface = MySessionInterface()
That's the error you're getting, which leads me to believe this is an easy fix.

After you create your app, but before running it, try adding this line, and let's see if that fixes it (or at least gives a different error): app.session_interface = session.SecureCookieSessionInterface()