Hello,
I am running into the same error.
When I tests my tool with IMS reference platform, everything works but when I try it from Canvas, it fails with this error. I am stuck and I have no idea about how to debug this. Can someone help?
Details:
This is my request:
# Send request to get access token
response = HTTParty.post(
url,
headers: {
'Content-Type' => 'application/x-www-form-urlencoded',
'Accept' => 'application/json;charset=UTF-8'
},
body: URI.encode_www_form(
grant_type: 'client_credentials',
client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer',
client_assertion: 'eyJraWQiOiJreXJvbi1sZWFybmluZyIsImFsZyI6IlJTMjU2In0.eyJpc3MiOiIyNDk4NTAwMDAwMDAwMDAwMDUiLCJzdWIiOiIyNDk4NTAwMDAwMDAwMDAwMDUiLCJhdWQiOiJodHRwczovL2NhbnZhcy5pbnN0cnVjdHVyZS5jb20vbG9naW4vb2F1dGgyL3Rva2VuIiwiaWF0IjoxNzAzMTA4NTc2LCJqdGkiOiI3OTNkZmYxMy04YjMxLTQzYjktYTFjZS05Yjc2MWI4NjAxMzMiLCJleHAiOjE3MDMxMTIxNzZ9.okSdCC1bE2A0FIUkWf8GhUQIvsX0aUUUd6cVPjfsrYQm-X7qHLm6QKu1K9SNI0obY8T-KJaYHHIkxDLPBfuimFu0VT4TieTfNbv8Q9CqRUIFhlNqJCO9fezWfDcjtNJ0MaPhjm1WQ57g5tLjRleiW9aQmfnK6GeSiLBEuqDxJHX-ef72GaKUjWaVzHrSs9cTTuiKHg7lvadMt6Zpx9FmLKMyiQ7vJRE5UsEZrxIce5haNQG9XLIMyxva717NviHAkavXfZ1xzhRz20KO34GziyD0dGRMeMY27YiD9Pv4t5Sxsy3-ojv_sBiTXJlpyMY1CLV8mNcAEEowCjwTKLNt-A',
scope: 'https://purl.imsglobal.org/spec/lti-ags/scope/lineitem https://purl.imsglobal.org/spec/lti-ags/scope/result/read'
)
)
This is the body of the JWT:
Confirmed that `iss` and `sub` values are indeed the Developer Key I created
{
"kid": "3OiWbsTpC4edFoJ",
"alg": "RS256"
}{
"iss": "249850000000000005",
"sub": "249850000000000005",
"aud": "https://canvas.instructure.com/login/oauth2/token",
"iat": 1703108576,
"jti": "793dff13-8b31-43b9-a1ce-9b761b860133",
"exp": 1703112176
}
And my JWKS URL returns exactly this:
{"keys":[{"kid":"3OiWbsTpC4edFoJ","kty":"RSA","alg":"RS256","use":"sig","e":"AQAB","n":"xdEkWy-P6btIQIBdddlcgjD5pdubB2gRlkMlFBVhSedcsUkX4OhHKmGFElFVNIcGeQjh2aO8MIuvlWegLLNHJtVB29mv-zJiCVNJ2a-_ecWVRPeyVMfkOJJHopWSv0tXTsKlRpm4lN0HA-J13Wd001Cbw67O5Ibm4v5ZgqWlwIPF1bpBp9VlLOG8BdEXSLnso5zoaW4Pv4UD4c0ogR0DwXzmVN-wxSMdB_KDfJ30UXo2MZVHQCDSXFbS4uuvQKlgafBPGCzsS7lnbvABrg9ORNEUPENhb8lu_UmKRLRzpCokCJqX1HtLgTEiteBVgxmQAmIQ3EHL_4rNCyBKRgZONw"}]}
This is the error message I get when my LTI tool application sends a request to Canvas to get an access token:
POST https://canvas.instructure.com/login/oauth2/token
{"error":"invalid_request","error_description":"JWS signature invalid."}