The crux of LTI SSO is the ability of your web application to handle an incoming POST request from the LMS (Canvas in this case), generate an OAuth 1.0 signature, and match it against the signature that the LMS sends during the launch. You can then trust the source of the POST request and determine the user based on the LTI launch params that are being sent by the LMS.
It seems like there is some debate as to whether R Shiny is capable of handling incoming POST requests, but it appears that there is a way, but it seems kind of hacky: Accept HTTP Request in R shiny application - Stack Overflow
You'll also want to look at this: POST requests from another server · Issue #1718 · rstudio/shiny · GitHub
Assuming you can get a server that's "listening" for a POST request, you'll need to ensure it's coming from the LMS with OAuth 1.0. Finally, you'll just need to use the LTI launch parameters to identify who the user is and start their session/log them in.
I did some web searching and found this library that looks promising: GitHub - r-lib/httr: httr: a friendly http package for R. It allegedly handles a variety of http methods and even includes OAuth 1.0.
If you do end up going down this route, let us know if you have success!
Jesse Poulos
Partner Integrations Specialist
Instructure