-
Notifications
You must be signed in to change notification settings - Fork 51
Classera.com - MultiTennant Domain Support for Learn LTI Application #134
Comments
@abdullah-abusall Can you check you have a Azure Active Directory connected to your users. Check AAD, and NRPS is working. We have seen recent issues where users emails in your LMS and AAD do not match you can receive a failure with the the tool as the email address with which the user was enrolled in the course was not the same as the AAD email- the casing being different. Please ensure the email are the same and the case matches of the email. Please let us know if your issue is related to user accounts being different in AAD vs your LMS. |
@abdullah-abusall please also check. That your using a valid 3rd party SSL certificate for your LMS environment as we only support passing of information via a secure http method. Please confirm if this help unblock your issues please see the troubleshooting page for more details https://github.com/microsoft/Learn-LTI/blob/main/docs/TROUBLESHOOTING.md |
@leestott thanks for your response! Plus for the LTI 1.3 integration we still the same issue with the 500 error and nothing seems to be wrong with our NRPS; we are testing our LTI integration with the tools provided by imsglobal and everything seems to be working fine integrating with them (users data are fetched and everything...): |
So you need to deploy app within the same AAD tenant as your users. This is to enable the users to login and can be validated as a valid users of the app. If you not using validated users you will receive the error as you have above as the user cannot validate with the app. The users AAD email address needs to match the LMS users emails/login to validate they are the same user. |
@abdullah-abusall did you manage to to get the installed and working across your multiple AAD infrastructure? The issue is the Learn LTI Application is registered within the AAD Tenant so only users within that Tenant have access to those resoruces https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals and you need to setup Application multitenant identity https://docs.microsoft.com/en-us/azure/architecture/multitenant-identity/ In this guidance, we'll look specifically at using Azure AD for identity management. If you have on-premises Active Directory you can use Azure AD Connect to sync your on-premises Active Directory with Azure AD. If your on-premises Active Directory cannot use Azure AD Connect (due to corporate IT policy or other reasons), the SaaS provider can federate with the customer's directory through Active Directory Federation Services (AD FS). see https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant |
Thank you @leestott I'll make two detailed comments showing the issue we are currently having for both LTI 1.1 and LTI 1.3: Starting with 1.1 since it seems its the one who should be easier to fix:
Response: |
As for the LTI 1.3
Response: and here are the NRPS details for the request we provide to the Microsoft learn launch: Response:
|
@abdullah-abusall so what is the LMS your using? https://learn.classera.com/ At present we have only tested the solution with Moodle, Canvas and Blackboard. |
@leestott the url for the LMS we are testing on is https://csva.classera.com/ (its a test domain/academy so please don't mind all the rubbish data) Looking at OpenEdx thread it seems that the issue here is with the membership url not returning the members from Edx it-self and as you could see from my comments our NRPS are returning successfully. But I will also try debugging the function the same way mentioned there and see how the results are received and interpreted. |
@leestott great news we were able to launch the LTI 1.3 The (LtiAdvantageLaunch 500) error was caused by us not providing the ResourceLink and the Context titles in the JWT payload As for the LTI 1.1
by making sure the "Authorization" header was accepted from our side. After that we ran into another issue were it just said: I looked through the repo to find how it parses the membership to make sure it goes with the standards: anyhow the LTI 1.3 is what we really need and that now it's running can you please provide us with more details on how to handle the multi tenant situation? |
@abdullah-abusall Awesome!! So to make the app support Azure B2C you need to change the code Line 11 authority: https://login.microsoftonline.com/${process.env.REACT_APP_EDNA_TENANT_ID}, to authority: https://login.microsoftonline.com/common/${process.env.REACT_APP_EDNA_TENANT_ID}, see https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant for other details |
@leestott unfortunately we ran into a new issue We updated the code line mentioned above We also updated the app "Supported account types" to :
but after that we ran into this issue: and the troubleshooting only describe this error at the stage of deploying the application which doesn't apply here. also this error now appears for both users on the same tenant and on a different one. |
So please look at this best practice for making the application support this scenario https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant There a few additional changes you will need to make this is a good overview video https://www.youtube.com/watch?v=Jfrp7DI7G0Q |
@leestott I suspect that the line: |
Yes your correct the issue you have is that the solution has been design for deployment in managed tenant environments where the admin knows the tenant IDs if your deploying this as SaaS for users to self configure then this isnt going to work at present. We have found a work around which will solve the customer who have ownership and deployment of both the Learn LTI Application and the AAD tenants which users are located If the customers follow this work around, we suggest they undergo a security review on their end. The customers can make the following changes on their end after forking/cloning the repository and then deploy. Note – These steps are not a workaround for proper Multi-Tenant behavior. It is only a workaround for the above customer issue as the mentioned this in the comments - we use an entirely different azure tenet/account for our servers than from what we use to manage users here #134 (comment) Steps: |
@ahmedhosameldein if you would like to test AAD B2C support please use this fork #149 https://github.com/UCL-MSc-Learn-LTI/Learn-LTI |
When we tried to integrate using LTI v1.3 the page returns 500 and looking at the log this is the error we are getting:
2021-05-27T13:18:29.223 [Error] Executed 'LtiAdvantageLaunch' (Failed, Id=74ebc0dc-b2c6-412a-8008-3851238137ae, Duration=1862ms)Object reference not set to an instance of an object.
and when we tried to integrate using LTI v1.0 it looks like the tool will need us to provide an AD account for all of the academies users since we are receiving the "You are not enrolled in this course" error:
Could you guys just confirm that if its true please.
The text was updated successfully, but these errors were encountered: