-
-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Separate the LTI 1.3 access token audience and URL. #2342
Conversation
I found a moment to try this. I cannot try it with a development WW server without coordination with the D2L people here. In our D2L test server, there is a deployment set up for our production WW server. OK, so here is what I did with the production WW server:
as well as grade passback set to 'course' in
This is not different from what I had when I last looked into this, probably at this time:
Do you have any thoughts observations about it? Has |
16e8305
to
3409fcf
Compare
I see what your updates are doing, and I will try it with them. But one thing is at the moment you still have |
ad5f12d
to
38cfafd
Compare
Hmm. Then I will remove that commit. |
38cfafd
to
537a756
Compare
It is odd that |
I checked, and at this time both are That message from the D2L vendor support team that said |
I'm poring over the
|
The What we are really interested in is the |
Another thing you could try is to comment out line 143 (or maybe instead line 146) of I am pretty sure that the problem is something not being quite right in the encoded JWT for D2L. For both Moodle and Canvas I had to delve into their code to figure out what was needed to get this to work. Unfortunately, no one seems to just follow the LTI Advantage specifications exactly (or they all have their own interpretation of those specifications that vary slightly). |
Ok, I've asked our local D2L team to ask the vendor to look into it again.
By now we are probably past that old http issue they previously cited.
…On Wed, Feb 28, 2024, 4:22 AM Glenn Rice ***@***.***> wrote:
Another thing you could try is to comment out line 143 (or maybe instead
line 146) of LTIAdvantage/SubmitGrade.pm. That is the oddity between
making this work for both Moodle and Canvas. Moodle needs line 146. Canvas
needs line 143 (and I think also line 146 -- I don't recall exactly).
Fortunately, having line 143 didn't cause a problem for Moodle, but maybe
it does for D2L?
I am pretty sure that the problem is something not being quite right in
the encoded JWT for D2L. For both Moodle and Canvas I had to delve into
their code to figure out what was needed to get this to work.
Unfortunately, no one seems to just follow the LTI Advantage specifications
exactly (or they all have their own interpretation of those specifications
that vary slightly).
—
Reply to this email directly, view it on GitHub
<https://protect2.fireeye.com/v1/url?k=31323334-501cfaeb-3132feb7-454455535732-65e56a37bb06377d&q=1&e=c39fc843-b3c1-4b84-9e71-6f0db844aa7e&u=https%3A%2F%2Fgithub.com%2Fopenwebwork%2Fwebwork2%2Fpull%2F2342%23issuecomment-1968870344>,
or unsubscribe
<https://protect2.fireeye.com/v1/url?k=31323334-501cfaeb-3132feb7-454455535732-677a0f80bb82297a&q=1&e=c39fc843-b3c1-4b84-9e71-6f0db844aa7e&u=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABEDOABWZXGTPSZ3DECPGZTYV4OQBAVCNFSM6AAAAABD3FGMG6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNRYHA3TAMZUGQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
7635f54
to
3fc8f3e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know we are still investigating the larger issue, but as far as this PR goes, it seems good for a merge.
cbf4458
to
9e73473
Compare
This now also switches from using the webwork server url for the iss claim to using the client id in the JWT sent when requesting an access token from the LMS for grade passback. With this change this is confirmed to work for Moodle, Canvas, and D2L. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested in production (just the changes here applies to 2.18) and it works.
Should this be made a hotfix? |
I guess it should be a hotfix. I'm thinking about a school that uses D2L, and is stuck with 2.18 for some reason. |
5f7ac6a
to
ef1965e
Compare
Separate the LTI 1.3 audience and URL and correct iss claim (hotfix of #2342)
I think this is very safe to merge, if @pstaabp, @dlglin, @drdrew42, @somiaj, or @taniwallach want to look over the very small amount of code changes. There are three things here:
This has been tested with D2L, Moodle, and Canvas and it seems that each change is a good change. |
ef1965e
to
25b7999
Compare
Could someone merge this? The hotfix version of this was already merged. So this should be as well. |
This adds a new LTI 1.3 authentication parameter named `$LTI{v1p3}{AccessTokenAUD}`. This is used for the audience (`aud`) in the signed JWT that is sent when requesting an access token from the LMS. This access token is used for grade passback. Previously the `$LTI{v1p3}{AccessTokenURL}` was used for both the audience and the actual URL that the access token request containing the signed JWT is sent to. I suspect that the audience and the URL may not be the same for all LMS's. They are the same for Moodle. These also needed to be the same for testing on my local Canvas instance. However, @Alex-Jordan showed me some information from D2L that indicates these are different there. I suspect these may need to be different for Canvas in production as well.
This switches from using the webwork server url for the iss claim to using the client id in the JWT sent when requesting an access token from the LMS for grade passback. This is confirmed to work on Moodle, Canvas, and D2L.
25b7999
to
2a4edcb
Compare
This adds a new LTI 1.3 authentication parameter named
$LTI{v1p3}{AccessTokenAUD}
. This is used for the audience (aud
) in the signed JWT that is sent when requesting an access token from the LMS. This access token is used for grade passback.Previously the
$LTI{v1p3}{AccessTokenURL}
was used for both the audience and the actual URL that the access token request containing the signed JWT is sent to. I suspect that the audience and the URL may not be the same for all LMS's. They are the same for Moodle. These also needed to be the same for testing on my local Canvas instance. However, @Alex-Jordan showed me some information from D2L that indicates these are different there. I suspect these may need to be different for Canvas in production as well.