@jnaranjo104 Re: integrating with Moodle, how tight an integration are you looking at? One weakly coupled way is to provide an LTI authed link in a Moodle page that is handled by a Jupyterhub client. eg https://github.com/jupyterhub/ltiauthenticator/blob/master/README.md#moodle
Moved this to its own thread so that āIntroduce yourselfā remains discussion free.
Thanks a lot for your answer Tony. I had a look at that link as I mention in the post LTi authenticator setup
But when I include:
c.JupyterHub.authenticator_class = āltiauthenticator.LTIAuthenticatorā
c.LTIAuthenticator.consumers = {
āclient-keyā: āclient-secretā
}
In my jupyterhub_config.py file, the service does not start and I get an error related to the ltiauthenticator class. It seems I have to add some other lines in that file like:
from ltiauthenticator import LTIAuthenticator
In the same way as for instance:
from jupyterhub.auth import LocalAuthenticator
Is included for Local Autentication
But if I include āfrom ltiauthenticator import LTIAuthenticatorā in the jupyterhub_config.py file the server does not start and a new error is shown: ltiauthenticator can not be loaded, etc.
I hope you can help me to identify how should I call ltiauthenticator library in the configuration file.
Thanks in advance
JMN
Hi again: Doing further investigation I have seen that at installation, āltiauthenticatorā and ājupyterhub_ltiauthenticatorā are under ā/usr/localā¦ā and the other libraries for JupyterHub are under ā/opt/tljhā¦ā. If I copy files from ā/usr/localā¦ā to ā/opt/tljh/ā¦ā the service starts properly, though I get a new error: ā405: Method not allowedā when trying to āhttp://ip/hub/lti/launchā. I think that I have to configure an additional authentication method to keep the option to connect to the administration URL for JupyterHub directly or even in the case that people from the department would like to connect to JupyterHub away from Moodle, etc.
Iāll keep you posted of any progress I get on this.
Best regards
JMN
Hi everybody interested in this topic: Once the issue related to the location of files mentioned above was fixed, I followed the instructions mentioned at https://github.com/jupyterhub/ltiauthenticator/blob/master/README.md#moodle, and also at: https://docs.moodle.org/37/en/External_tool_settings. What I can tell you is that it works. I have created in Moodle an External Tool and assigned it to a course I had previously created too. The access to JupyterHub (TLJH in my case) from Moodle works.
What I have seen is that from the OS perspective, only a user account is created at first connection from Moodle course without regards if I launch the external tool with a Moodle user or with other.
With all of this in mind, next steps are:
- Configure additional authentication methods in JupyterHub so that I can log into the tools directly in addition to be able to log from Moodle.
- Further investigation to get a OS User for every Moodle user that launch the External Tool so they can have independent environments.
If anybody can provide any starting point for every one of the steps mentioned above, will be welcome.
Best regards,
JMN
Hi,
Jupyterhub uses python virtualenv to contain all itās python libraries. You would need to use the pip that was installed in the virtualenv, /opt/tljh/hub/bin/pip, to have the libraries installed for them to be available to jupyterhub. If you specify the moodle user id in the admin section of the config, those users should see the admin control panel etc, when they use the lti authenticated link from moodle. Good to see you have it now working in your follow up post.
Regards.
Rod
Hi Rod: Thanks a lot for your answer. I guess you are referring to the following ticks:
As you can see I have already marked them but when I launch the external tool from Moodle, what I get is:
And the user name is ā3ā.
Iād appreciate if you can provide additional feedback.
Best regards,
JMN
Hi,
you would need to edit config.yaml so that it has the entry:
users: admin: - '3'
I tried using tljh-config add-item users.admin ā3āā but it will add the number 3 not the quote value that is required, otherwise it will fail to compare the int to the string of the usernameā¦
Once you have restarted tljh and reloaded the browseryou should hopefully see the admin buttonā¦
Regards.
Rod
Thanks a lot Rod for your answer. Iāll try and will let you know.
Another problem I am having is that when I try to connect directly to TLJH through the web browser instead of by means of Moodle external tool, the connection is refused as it seems that the only authentication method available is LTI.
Have you any idea if I can keep PAM or LocalAutehntication in addition to LTI Authentication: PAM for local users and LTI for Moodle users? Should I configure different URLās for every service?
LTI can be reached at āhttp://localIP/hub/lti/launchā
Which should it be the Local or PAM Autehntication URL?
If I try āhttp://localIP/hub/loginā it redirects to āhttp://localIP/hub/lti/launchā and a 405 error is shown.
Thanks in advance for your support.
Best regards,
JMN
I think this is due to the LTIAuthenticaton being configured to Auto Login,
But if you set the LTIAuthentication to not AutoLogin, you get a login with LTI button if you go to hub/login
Not sure how the multiple authentications are handled if they are define.
Maybe you have to define a combined auth class, like the last few lines in :
I havenāt been able to find any documentation to describe how this works or needs to be configured,
Regards.
Rod
Hi Rod: Thanks a lot for your answer on this. I have seen something similar in other examples like in https://github.com/jupyterhub/oauthenticator/blob/fdd2d5b16db616774cd18a589f6d7f35d6eb2c32/oauthenticator/github.py or in https://github.com/jupyterhub/oauthenticator/blob/fdd2d5b16db616774cd18a589f6d7f35d6eb2c32/oauthenticator/auth0.py
Iāll have a look at the init.py file under LTIAuthenticator directory in order to see if those lines are included and will try.
Iāll let you know if I success.
Best regards,
JMN
Hi Rob: I have been doing some additional tries on this matter (having more than one authentication method activated) but unfortunately, I have been unable to progress.
Iāll come back to this issue later in my job anyway.
Thanks a lot for your support Rob.
Regarding COVID19, I hope you all are well and little affected.
Jose
Dear Jose and all,
I have a working JupyterHub installation and now I am also trying to use JupyterHub with Moodle. Unfortunately now I am stuck with the 405 āMethod not allowedā error, which I get when I try to access jupyterhub from the Moodle activity.
I have added the following lines in my jupyterhub_config.py file:
from ltiauthenticator import LTIAuthenticator
c.JupyterHub.authenticator_class = 'ltiauthenticator.LTIAuthenticator'
c.LTIAuthenticator.consumers = {
"abcdefghijklmnop1234567890.....": "secretxyz01234567890....."
}
In Moodle I created the external tool:
jupyterhub-ltiauthenticator is installed in the correct path of the virtual environment for jupyterhub and everything runs over HTTPS.
I have tried and tried, but no more ideas what could be going wrong. Can anyone help?
Thanks a lot in advance!
Peter
Hi,
You can check https://github.com/IllumiDesk/illumidesk we just released jupyterhub authenticators for LTI 1.1 and 1.3 versions (tested with canvas/moodle). Feel free to review and give us your feedback
Hi netoisc,
thanks a lot for your reply!
Your setup looks great, but is currently an overkill for me - I only need the login part from Moodle into JupyterHub.
I tried the jupyterhub/ltiauthenticator, should that work with LTI 1.1?
If not, and if I want to use only your authenticator, what would be the steps to do? My guess for LTI 1.1:
- Make sure the file authenticators.py is available
- add this to my jupyterhub_config.py:
from illumidesk.authenticators.authenticator import LTI11Authenticator
c.JupyterHub.authenticator_class = LTI11Authenticator
- Configure the keys somewhere - but I donāt see where
Thanks for your help!
Peter
Hi @netoisc
Iām trying to integrate Jupyterhub with canvas what you did as illumidesk. Please give the instructions, how to integrate it with canvas.
Is this what youāre looking for?
--- ltiauthenticator/__init__.py.orig 2021-08-01 11:35:32.047430657 +0900
+++ ltiauthenticator/__init__.py 2021-08-01 11:45:27.120452288 +0900
@@ -157,9 +157,13 @@
# If Canvas is running in anonymous mode, we'll still want the 'user_id' (which is the `lti_user_id``)
canvas_id = handler.get_body_argument('custom_canvas_user_id', default=None)
+ # by T.ISHIZAKA, Y.KUWATA, et. al., Moodle Moot Japan 2019 Proceedings (2019), pp.32-37
+ product_code = handler.get_body_argument('tool_consumer_info_product_family_code', default=None)
if canvas_id is not None:
user_id = handler.get_body_argument('custom_canvas_user_id')
+ elif 'moodle' in product_code:
+ user_id = handler.get_body_argument('ext_user_username')
else:
user_id = handler.get_body_argument('user_id')
Hello.
ltiauthenticator v1.2.0 is released
v1.2.0 does not need patch for Moodle.
My configuration is
# for LTI v1.2.0
c.JupyterHub.authenticator_class = 'ltiauthenticator.LTIAuthenticator'
c.LTI11Authenticator.consumers = {
"b18e82ec683724743236fade71350720029a29144a585c66f6741d8e9c6e0d83" : "c0fe2924dbb0f4701d898d36aaf9fd89c7a3ed3a7db6f0003d0e825a7eccb41c"
}
c.LTI11Authenticator.username_key = 'ext_user_username'
Thanks.
Hi,
We are currently researching the use of LTI to integration of Moodle and JupyterHub.
In this work, we use LTI custom parameters from Moodle to control the JupyterHub and the Jupyter containers.
If you are interested, please visit the following URL
Thanks!
Hi all. Iām working on a custom Django app that uses LTI v1.3 to integrate JupyterHub via ltiauthenticator.
Iām experiencing the same issue noted above:
ā¦is there a conventional strategy to getting JupyterHub to allow both LTI logins and regular admin logins?