While trying to authenticate I keep getting this error and not sure how to proceed.
AttributeError: module 'oauthlib.oauth1.rfc5849.signature' has no attribute 'signature_base_string'
I have website jhub.hibbardsclass.org and it is directed to local server ip address.
What do you need to see for files?
Ok, as I dug in a little more I found that the args are being passed through:
` def init(self, consumers):
self.consumers = consumers
def validate_launch_request(
self,
launch_url,
headers,
args
):`
print(args) {'custom_team_name': '', 'custom_component_display_name': 'Jupyter Notebook', 'lti_version': 'LTI-1p0', 'oauth_nonce': '123242103712172168641578158327', 'resource_link_id': 'localhost-1b3d411c3f82456f8e51d646a59a21bf', 'context_id': 'course-v1:CHS+LOCOXtreme+2019-2020', 'oauth_signature_method': 'HMAC-SHA1', 'custom_cohort_name': '', 'lis_person_contact_email_primary': '[email protected]', 'custom_cohort_id': '', 'oauth_signature': '******************=', 'lis_person_name_family': 'test', 'context_title': 'LocoXtreme Voyager', 'lti_message_type': 'basic-lti-launch-request', 'launch_presentation_return_url': '', 'lis_person_name_full': 'test student', 'context_label': 'CHS', 'user_id': 'd314d43fb3f76d2ffc9f4d46e1e64b41', 'roles': 'Instructor', 'custom_team_id': '', 'oauth_consumer_key': '*******', 'lis_result_sourcedid': 'course-v1%3ACHS%2BLOCOXtreme%2B2019-2020:localhost-1b3d411c3f82456f8e51d646a59a21bf:d314d43fb3f76d2ffc9f4d46e1e64b41', 'lis_person_name_given': 'Robert', 'oauth_version': '1.0', 'custom_user_id': '12', 'launch_presentation_locale': 'en', 'oauth_timestamp': '1578158327', 'lis_person_sourcedid': 'robert', 'oauth_callback': 'about:blank'}
then this error occurs
Uncaught exception POST /hub/lti/launch (::ffff:184.155.193.25) HTTPServerRequest(protocol='http', host='jhub.hibbardsclass.org:8000', method='POST', uri='/hub/lti/launch', version='HTTP/1.1', remote_ip='::ffff:184.155.193.25') Traceback (most recent call last): File "/share/conda/envs/jhub/lib/python3.8/site-packages/tornado/web.py", line 1699, in _execute result = await result File "/srv/jupyterhub/ltiauthenticator/ltiauthenticator/__init__.py", line 209, in post _ = yield self.login_user() File "/share/conda/envs/jhub/lib/python3.8/site-packages/jupyterhub/handlers/base.py", line 655, in login_user authenticated = await self.authenticate(data) File "/share/conda/envs/jhub/lib/python3.8/site-packages/jupyterhub/auth.py", line 383, in get_authenticated_user authenticated = await maybe_future(self.authenticate(handler, data)) File "/srv/jupyterhub/ltiauthenticator/ltiauthenticator/__init__.py", line 148, in authenticate if validator.validate_launch_request( File "/srv/jupyterhub/ltiauthenticator/ltiauthenticator/__init__.py", line 84, in validate_launch_request base_string = signature.signature_base_string( AttributeError: module 'oauthlib.oauth1.rfc5849.signature' has no attribute 'signature_base_string' '
at this point:
base_string = signature.signature_base_string( 'POST', signature.base_string_uri(launch_url), signature.normalize_parameters( signature.collect_parameters(body=args_list, headers=headers) ) )
I am running openEdx at hibbardsclass.org being directed to local IP, as well as my jupyterhub instance at jhub.hibbardsclass.org also directed to a local IP.
I have admin/xblock_config/courseeditltifieldsenabledflag/ enabled and Send extra parameters set to true in the lti_consumers xblock for course.
pip list:
alembic 1.3.1
async-generator 1.10
attrs 19.3.0
backcall 0.1.0
bcrypt 3.1.7
bleach 3.1.0
blinker 1.4
certifi 2019.11.28
certipy 0.1.3
cffi 1.13.2
chardet 3.0.4
cryptography 2.8
decorator 4.4.1
defusedxml 0.6.0
docker 4.1.0
dockerspawner 0.11.1
entrypoints 0.3
escapism 1.0.0
idna 2.8
importlib-metadata 1.2.0
ims-lti-py 0.7.1
ipykernel 5.1.3
ipython 7.10.1
ipython-genutils 0.2.0
ipywidgets 7.5.1
jedi 0.15.1
Jinja2 2.10.3
jsonschema 3.2.0
jupyter 1.0.0
jupyter-client 5.3.3
jupyter-console 6.0.0
jupyter-core 4.6.1
jupyterhub 1.0.0
jupyterhub-firstuseauthenticator 0.12
jupyterhub-ltiauthenticator 0.4.1.dev0 /srv/jupyterhub/ltiauthenticator
lti 0.9.4
lxml 4.4.2
Mako 1.1.0
MarkupSafe 1.1.1
mistune 0.8.4
more-itertools 8.0.2
nbconvert 5.6.1
nbformat 4.4.0
nbgrader 0.3.3
notebook 6.0.1
oauthenticator 0.10.0
oauthlib 3.0.1
pamela 1.0.0
pandocfilters 1.4.2
parso 0.5.1
pexpect 4.7.0
pickleshare 0.7.5
pip 19.3.1
prometheus-client 0.7.1
prompt-toolkit 2.0.10
ptyprocess 0.6.0
pycparser 2.19
pycurl 7.43.0.3
Pygments 2.5.2
PyJWT 1.7.1
pyOpenSSL 19.0.0
PyQt5 5.12.3
PyQt5-sip 4.19.18
PyQtWebEngine 5.12.1
pyrsistent 0.15.6
PySocks 1.7.1
python-dateutil 2.8.1
python-dotenv 0.10.3
python-editor 1.0.4
pyzmq 18.1.1
qtconsole 4.6.0
requests 2.22.0
requests-oauthlib 1.3.0
Send2Trash 1.5.0
setuptools 42.0.1.post20191125
six 1.13.0
SQLAlchemy 1.3.11
terminado 0.8.3
testpath 0.4.4
tornado 6.0.3
traitlets 4.3.3
urllib3 1.25.7
wcwidth 0.1.7
webencodings 0.5.1
websocket-client 0.56.0
wheel 0.33.6
widgetsnbextension 3.5.1
zipp 0.6.0
conda list
# Name Version Build Channel _libgcc_mutex 0.1 main alembic 1.3.1 py_0 conda-forge async_generator 1.10 py_0 conda-forge attrs 19.3.0 py_0 conda-forge backcall 0.1.0 py_0 conda-forge bcrypt 3.1.7 pypi_0 pypi bleach 3.1.0 py_0 conda-forge blinker 1.4 py_1 conda-forge ca-certificates 2019.11.28 hecc5488_0 conda-forge certifi 2019.11.28 py38_0 conda-forge certipy 0.1.3 py_0 conda-forge cffi 1.13.2 py38h8022711_0 conda-forge chardet 3.0.4 py38_1003 conda-forge configurable-http-proxy 1.3.0 0 conda-forge cryptography 2.8 py38h72c5cf5_0 conda-forge dbus 1.13.6 he372182_0 conda-forge decorator 4.4.1 py_0 conda-forge defusedxml 0.6.0 py_0 conda-forge docker 4.1.0 pypi_0 pypi dockerspawner 0.11.1 pypi_0 pypi entrypoints 0.3 py38_1000 conda-forge escapism 1.0.0 pypi_0 pypi expat 2.2.5 he1b5a44_1004 conda-forge fontconfig 2.13.1 h86ecdb6_1001 conda-forge freetype 2.10.0 he983fc9_1 conda-forge gettext 0.19.8.1 hc5be6a0_1002 conda-forge glib 2.58.3 py38h6f030ca_1002 conda-forge gst-plugins-base 1.14.5 h0935bb2_0 conda-forge gstreamer 1.14.5 h36ae1b5_0 conda-forge icu 64.2 he1b5a44_1 conda-forge idna 2.8 py38_1000 conda-forge importlib_metadata 1.2.0 py38_0 conda-forge ims-lti-py 0.7.1 pypi_0 pypi ipykernel 5.1.3 py38h5ca1d4c_0 conda-forge ipython 7.10.1 py38h5ca1d4c_0 conda-forge ipython_genutils 0.2.0 py_1 conda-forge ipywidgets 7.5.1 py_0 conda-forge jedi 0.15.1 py38_0 conda-forge jinja2 2.10.3 py_0 conda-forge jpeg 9c h14c3975_1001 conda-forge jsonschema 3.2.0 py38_0 conda-forge jupyter 1.0.0 pypi_0 pypi jupyter_client 5.3.3 py38_1 conda-forge jupyter_console 6.0.0 py_0 conda-forge jupyter_core 4.6.1 py38_0 conda-forge jupyterhub 1.0.0 py38_0 conda-forge jupyterhub-firstuseauthenticator 0.12 pypi_0 pypi jupyterhub-ltiauthenticator 0.4.1.dev0 dev_0 <develop> krb5 1.16.3 h05b26f9_1001 conda-forge ld_impl_linux-64 2.33.1 h53a641e_7 conda-forge libclang 9.0.0 default_hde54327_4 conda-forge libcurl 7.65.3 hda55be3_0 conda-forge libedit 3.1.20170329 hf8c457e_1001 conda-forge libffi 3.2.1 he1b5a44_1006 conda-forge libgcc-ng 9.1.0 hdf63c60_0 libiconv 1.15 h516909a_1005 conda-forge libllvm9 9.0.0 hc9558a2_3 conda-forge libpng 1.6.37 hed695b0_0 conda-forge libsodium 1.0.17 h516909a_0 conda-forge libssh2 1.8.2 h22169c7_2 conda-forge libstdcxx-ng 9.1.0 hdf63c60_0 libuuid 2.32.1 h14c3975_1000 conda-forge libuv 1.33.1 h516909a_0 conda-forge libxcb 1.13 h14c3975_1002 conda-forge libxkbcommon 0.9.1 hebb1f50_0 conda-forge libxml2 2.9.10 hee79883_0 conda-forge lti 0.9.4 pypi_0 pypi lxml 4.4.2 pypi_0 pypi mako 1.1.0 py_0 conda-forge markupsafe 1.1.1 py38h516909a_0 conda-forge mistune 0.8.4 py38h516909a_1000 conda-forge more-itertools 8.0.2 py_0 conda-forge nbconvert 5.6.1 py38_0 conda-forge nbformat 4.4.0 py_1 conda-forge nbgrader 0.3.3 pypi_0 pypi ncurses 6.1 hf484d3e_1002 conda-forge nodejs 13.0.0 h10a4023_1 conda-forge notebook 6.0.1 py38_0 conda-forge nspr 4.24 he1b5a44_0 conda-forge nss 3.47 he751ad9_0 conda-forge oauthenticator 0.10.0 pypi_0 pypi oauthlib 3.0.1 py_0 conda-forge openssl 1.1.1d h516909a_0 conda-forge pamela 1.0.0 py_0 conda-forge pandoc 2.8.1 0 conda-forge pandocfilters 1.4.2 py_1 conda-forge parso 0.5.1 py_0 conda-forge pcre 8.43 he1b5a44_0 conda-forge pexpect 4.7.0 py38_0 conda-forge pickleshare 0.7.5 py38_1000 conda-forge pip 19.3.1 py38_0 conda-forge prometheus_client 0.7.1 py_0 conda-forge prompt_toolkit 2.0.10 py_0 conda-forge pthread-stubs 0.4 h14c3975_1001 conda-forge ptyprocess 0.6.0 py_1001 conda-forge pycparser 2.19 py38_1 conda-forge pycurl 7.43.0.3 py38h16ce93b_1 conda-forge pygments 2.5.2 py_0 conda-forge pyjwt 1.7.1 py_0 conda-forge pyopenssl 19.0.0 py38_0 conda-forge pyqt 5.12.3 py38hcca6a23_1 conda-forge pyqt5-sip 4.19.18 pypi_0 pypi pyqtwebengine 5.12.1 pypi_0 pypi pyrsistent 0.15.6 py38h516909a_0 conda-forge pysocks 1.7.1 py38_0 conda-forge python 3.8.0 h357f687_5 conda-forge python-dateutil 2.8.1 py_0 conda-forge python-dotenv 0.10.3 pypi_0 pypi python-editor 1.0.4 py_0 conda-forge pyzmq 18.1.1 py38h1768529_0 conda-forge qt 5.12.5 hd8c4c69_1 conda-forge qtconsole 4.6.0 py_0 conda-forge readline 8.0 hf8c457e_0 conda-forge requests 2.22.0 py38_1 conda-forge requests-oauthlib 1.3.0 pypi_0 pypi send2trash 1.5.0 py_0 conda-forge setuptools 42.0.1 py38_0 conda-forge six 1.13.0 py38_0 conda-forge sqlalchemy 1.3.11 py38h516909a_0 conda-forge sqlite 3.30.1 hcee41ef_0 conda-forge terminado 0.8.3 py38_0 conda-forge testpath 0.4.4 py_0 conda-forge tk 8.6.10 hed695b0_0 conda-forge tornado 6.0.3 py38h516909a_0 conda-forge traitlets 4.3.3 py38_0 conda-forge urllib3 1.25.7 py38_0 conda-forge wcwidth 0.1.7 py_1 conda-forge webencodings 0.5.1 py_1 conda-forge websocket-client 0.56.0 pypi_0 pypi wheel 0.33.6 py38_0 conda-forge widgetsnbextension 3.5.1 py38_0 conda-forge xorg-libxau 1.0.9 h14c3975_0 conda-forge xorg-libxdmcp 1.1.3 h516909a_0 conda-forge xz 5.2.4 h14c3975_1001 conda-forge zeromq 4.3.2 he1b5a44_2 conda-forge zipp 0.6.0 py_0 conda-forge zlib 1.2.11 h516909a_1006 conda-forge
any ideas or help would be awesome
thank you robert