Installation

Issue with LTI Advanced authentication

Issue with LTI Advanced authentication

by Tural Hamzayev -
Number of replies: 2

When students try to access WebWork 2.18 from Blackboard via LTI link:

LTI Debug results show that students username and ID are assigned correctly. But it returns error and does not allow to login and see assignments.

===== timestamp info ======= oauth_nonce = 1705998351 WW_server_time = 1705998352 diff(server-oauth) = 1 seconds (0.0166666666666667 minutes) ============================ =========== summary ============ User id is |thamzayev| (obtained from lis_person_contact_email_primary which was preferred_source_of_username) User mail address is |thamzayev@ada.edu.az| strip_domain_from_email is |1| Student id is |000002977| preferred_source_of_username is |lis_person_contact_email_primary| fallback_source_of_username is || preferred_source_of_student_id is |lis_person_sourcedid| ================================ The following path was reconstructed by WeBWorK. It should match the path in the LMS: https://webwork.ada.edu.az/webwork2/JAFAROV-2024-Spring-Calculus-2/HW_1_Substitution_and_Area_Calculation/

Error messages

Can't locate object method "new" via package "WeBWorK::Authen::LTIAdvanced::SubmitGrade" (perhaps you forgot to load "WeBWorK::Authen::LTIAdvanced::SubmitGrade"?) at /opt/webwork/webwork2/lib/WeBWorK/Authen/LTIAdvanced.pm line 573.

Context

568: # we need to submit the grade is kept up to date.
569: my $LTIGradeMode = $ce->{LTIGradeMode} // '';
570: if ($LTIGradeMode eq 'course'
571: || $LTIGradeMode eq 'homework')
572: {
573: my $submitGrade = WeBWorK::Authen::LTIAdvanced::SubmitGrade->new($c);
574: $submitGrade->update_sourcedid($userID);
575: }
576:
577: return 1;
578: }


LTI Configurations are like below:

authen_LTI_1_1.conf


$LTI{v1p1}{LMS_name} = 'Blackboard';
$LTI{v1p1}{LMS_url} = 'https://ada.blackboard.com/';
$LTI{v1p1}{preferred_source_of_username} = 'lis_person_contact_email_primary';
$LTI{v1p1}{fallback_source_of_username} = '';
$LTI{v1p1}{strip_domain_from_email} = 1;
$LTI{v1p1}{lowercase_username} = 1;
$LTI{v1p1}{preferred_source_of_student_id} = 'lis_person_sourcedid';
$LTI{v1p1}{BasicConsumerSecret} = 'ElesgerTustunuBurax';
$LTI{v1p1}{NonceLifeTime} = 60;    # in seconds
$LTI{v1p1}{OverrideSiteURL} = '';
$LTI{v1p1}{OverrideSiteProtocolDomain} = '';
$LTI{v1p1}{LMSrolesToWeBWorKroles} = {
    'librarian'               => 'guest',
    'observer'                => 'guest',
    'visitor'                 => 'guest',
    'Guest'                   => 'guest',
    'Designer'                => 'professor',
    'instructor'              => 'professor',
    'Instructor'              => 'professor',
    'Faculty'                 => 'professor',
    'Teacher'                 => 'professor',
    'Student'                 => 'student',
    'Learner'                 => 'student',
    'student'                 => 'student',
    'AI/TA'                   => 'ta',
    'TA'                      => 'ta',
    'Teaching Assistant'      => 'ta',
    'Teaching Assistant (TA)' => 'ta',
    'Non-editing teacher'     => 'ta',
    'Grader'                  => 'ta',
};
$LTI{v1p1}{grader} = 'WeBWorK::Authen::LTIAdvanced::SubmitGrade';

authen_LTI.conf

include("conf/authen_LTI_1_1.conf");
$debug_lti_parameters = 1;
$debug_lti_grade_passback = 0;
$authen{user_module} = [
    #    { '*' => 'WeBWorK::Authen::LTIAdvantage' },          # first try LTI 1.3
    { '*' => 'WeBWorK::Authen::LTIAdvanced' },           # next try LTI 1.1
    { '*' => 'WeBWorK::Authen::Basic_TheLastOption' }    # fallback authorization method
];

$LTIVersion = 'v1p1';
$LTIAccountCreationCutoff = 'ta';
$LMSManageUserData = 1;
$external_auth = 0;
$LTIGradeMode = 'homework';
$LTIGradeOnSubmit = 1;
$LTICheckPrior = 0;
$LTIMassUpdateInterval = 86400;    #in seconds
@LTIConfigVariables = (
    #'LTI{v1p1}{LMS_name}',
    #'LTI{v1p3}{LMS_name}',
    #'LTI{v1p1}{LMS_url}',
    #'LTI{v1p3}{LMS_url}',
    #'external_auth',
    #'LTIGradeMode',
    #'LMSManageUserData',
    #'debug_lti_parameters'
);
1;    # final line of the file to reassure perl that it was read properly.

Thanks,
Tural


In reply to Tural Hamzayev

Re: Issue with LTI Advanced authentication

by Tural Hamzayev -

I've added use WeBWorK::Authen::LTIAdvanced::SubmitGrade into lib/WeBWorK/Authen/LTIAdvanced.pm and it worked.

I am not sure if this was correct way of doing it.