Creating a user via the api with a destination parameter to automatically login user
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am creating a user through the canvas API and once created I need to redirect my user to the canvas instance and ideally have the user automatically signed in.
Looking at the docs : https://canvas.instructure.com/doc/api/users.html#method.users.create,
I can see that I have to set :
- user[skip_registration] as true
- pseudonym[password] as a random password
- pseudonym[send_confirmation] as true
1) When I do this, the user indeed receives a confirmation informing him that his account was created. However the email does not tell the user what is his password, which is unfortunate. Is there a way to let canvas set a random password for the user and then send that password to the user ? Or if I have to set it myself do I have to do all the work and send an email myself to inform the user of its password ?
Now, the second part of my question. I would like to be able to redirect the newly created user to the canvas instance and I would like the user to be automatically logged in.
Unfortunately I dont think Canvas implements SSO JWT in the same way as an LMS like 360Learning does --> https://support.360learning.com/hc/en-us/articles/209016626-Technical-guide-SSO-JWT
Did I miss something or does canvas actually has some sort of SSO JWT ?
However I noticed in the api doc for "create user" a "destination" parameter. It says :
"If you’re setting the password for the newly created user, you can provide this param with a valid URL pointing into this Canvas installation, and the response will include a destination field that’s a URL that you can redirect a browser to and have the newly created user automatically logged in. The URL is only valid for a short time, and must match the domain this request is directed to, and be for a well-formed path that Canvas can recognize."
Indeed, when I do as such, I get back in the response something like :
{"id"=>663,
"name"=>"JDJ DJDJD",
"created_at"=>"2024-08-20T01:32:46+02:00",
"sortable_name"=>"DJDJD, JDJ",
"short_name"=>"JDJ DJDJD",
"sis_user_id"=>nil,
"integration_id"=>nil,
"sis_import_id"=>nil,
"login_id"=>"dageismar+raarkarkkr@gmail.com",
"locale"=>"en",
"uuid"=>"maX5Qf4Rz67jq1e8DTEeivMZcoFyqoAOhpVtyGOT",
"destination"=>
"https://somedomain.instructure.com/?session_token=somerandomtoken"}
However, when I try to use that destination url, I am always redirected to the login screen and asked for my credentials :(.
Am I missing something here ?