0

我正在尝试升级旧版应用程序以使用 2.2 版本的 LTI ruby​​ gem。

目前,我无法使用以下方式获得 Oauth 请求进行验证:

authenticator = IMS::LTI::Services::MessageAuthenticator.new(@request.url, @params, secret)
authenticator.valid_signature?

我不确定是什么原因造成的,因为据我所知,它应该是一个有效的请求。以下是所涉及变量的转储:

应用程序 9783 标准输出:--- OAUTH 密钥 ====> ocill-lti-key 应用程序 9783 标准输出:--- OAUTH 密钥 ====> 已编辑!应用程序 9783 标准输出:--- 请求 URL https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create 应用程序 9783 标准输出:--- 请求参数 {"oauth_consumer_key"=>"ocill-lti- key", "oauth_signature_method"=>"HMAC-SHA1", "oauth_timestamp"=>"1510067228", "oauth_nonce"=>"70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscIgQ", "oauth_version"=>"1.0", "context_id"=>"de25c863939f3cacfc02480738d072d95597842c", "context_label"=>"johnathb Sandbox", "context_title"=>"johnathb 的 Canvas 培训课程", "custom_canvas_assignment_points_possible"=>"https://umich.instructure.com/api/lti/v1/tools/10530/ext_grade_passback ", "ext_lti_assignment_id"=>"f9139721-be1f-473a-91b5-6a08a386074c", "ext_outcome_data_values_accepted"=>"url,text" , "ext_outcome_result_total_score_accepted"=>"true", "ext_outcomes_tool_placement_url"=>" https://umich.instructure.com/api/lti/v1/turnitin/outcomes_placement/10530 ", "ext_roles"=>"urn:lti:instrole :ims/lis/Administrator,urn:lti:instrole:ims/lis/Instructor,urn:lti:instrole:ims/lis/Student,urn:lti:role:ims/lis/Instructor,urn:lti:sysrole:ims /lis/User", "launch_presentation_document_target"=>"iframe", "launch_presentation_locale"=>"en", "launch_presentation_return_url"=>" https://umich.instructure.com/courses/56125/external_content/success/external_tool_redirect ", "lis_outcome_service_url"=>"https://umich.instructure.com/api/lti/v1/tools/10530/grade_passback ", "lti_message_type"=>"basic-lti-launch-request", "lti_version"=>"LTI-1p0", " oauth_callback"=>"about:blank", "resource_link_id"=>"52e0499f9ed929340aec886dd08c7035e45471f5", "resource_link_title"=>"OCILL Staging Test", "roles"=>"Instructor", "tool_consumer_info_product_family_code"=>"canvas", "tool_consumer "=>"cloud", "tool_consumer_instance_contact_email"=>"notifications@instructure.com", "tool_consumer_instance_guid"=>"7db438071375c02373713c12c73869ff2f470b68.umich.instructure.com", "tool_consumer_instance_name"=>"密歇根大学 - 安娜堡分校", "user_id"=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807", "oauth_signature"=>"7jq4lBIBYoMzIeShPZbPNJjOrEs=", "controller"=>"launch", "action"=>"create}"

应用 9783 标准输出:--- AUTHENTICATOR INSPECT ===> #"ocill-lti-key"、"oauth_signature_method"=>"HMAC-SHA1"、"oauth_timestamp"=>"1510067228"、"oauth_nonce"=>"70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscQ" , "oauth_version"=>"1.0", "context_id"=>"de25c863939f3cacfc02480738d072d95597842c", "context_label"=>"johnathb Sandbox", "context_title"=>"针对 johnathb 的 Canvas 培训课程", "custom_canvas_assignment_points_possible"=>"10 ", "custom_canvas_assignment_title"=>"OCILL 分期测试", "custom_canvas_enrollment_state"=>"active", "ext_ims_lis_basic_outcome_url"=>" https://umich.instructure.com/api/lti/v1/tools/10530/ext_grade_passback", "ext_lti_assignment_id"=>"f9139721-be1f-473a-91b5-6a08a386074c", "ext_outcome_data_values_accepted"=>"url,text", "ext_outcome_result_total_score_accepted"=>"true", "ext_outcomes_tool_placement_url"=>" https://umich .instructure.com/api/lti/v1/turnitin/outcomes_placement/10530 ", "ext_roles"=>"urn:lti:instrole:ims/lis/Administrator,urn:lti:instrole:ims/lis/Instructor,urn: lti:instrole:ims/lis/Student,urn:lti:role:ims/lis/Instructor,urn:lti:sysrole:ims/lis/User", "launch_presentation_document_target"=>"iframe", "launch_presentation_locale"=>" zh", "launch_presentation_return_url"=>" https://umich.instructure。com/courses/56125/external_content/success/external_tool_redirect ", "lis_outcome_service_url"=>" https://umich.instructure.com/api/lti/v1/tools/10530/grade_passback", "lti_message_type"=>"basic-lti-launch-request", "lti_version"=>"LTI-1p0", "oauth_callback"=>"about:blank", "resource_link_id"=>"52e0499f9ed929340aec886dd08c7035e45471f5", "resource_link_title "=>"OCILL Staging Test", "roles"=>"Instructor", "tool_consumer_info_product_family_code"=>"canvas", "tool_consumer_info_version"=>"cloud", "tool_consumer_instance_contact_email"=>"notifications@instructure.com", " tool_consumer_instance_guid"=>"7db438071375c02373713c12c73869ff2f470b68.umich.instructure.com", "tool_consumer_instance_name"=>"密歇根大学 - 安娜堡分校", "user_id"=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807", "oauth_signature"=>"7jq4lBIBYoMzIeShPZbPNJjOrEs=", "controller"=>"launch", "action"=>"create"}, @options={:consumer_key=>"ocill-lti-key", :signature_method =>"HMAC-SHA1", :timestamp=>"1510067228", :nonce=>"70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscIgQ", :version=>"1.0", :callback=>"about:blank"}, @parsed_pa​​rams={:context_id= >"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb 沙盒", :context_title=>"johnathb 的 Canvas 培训课程", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL Staging Test"vas=>:"活动", :ext_ims_lis_basic_outcome_url=>"https://umich.instructure.com/api/lti/v1/tools/10530/ext_grade_passback ", :ext_lti_assignment_id=>"f9139721-be1f-473a-91b5-6a08a386074c", :ext_outcome_data_values_accepted=>"url,text", : ext_outcome_result_total_score_accepted=>"true", :ext_outcomes_tool_placement_url=>" https://umich.instructure.com/api/lti/v1/turnitin/outcomes_placement/10530 ", :ext_roles=>"urn:lti:instrole:ims/lis/管理员,urn:lti:instrole:ims/lis/Instructor,urn:lti:instrole:ims/lis/Student,urn:lti:role:ims/lis/Instructor,urn:lti:sysrole:ims/lis/User" , :launch_presentation_document_target=>"iframe", :launch_presentation_locale=>"en", :launch_presentation_return_url=>" https://umich.instructure.com/courses/56125/external_content/success/external_tool_redirect ", :lis_outcome_service_url=>"https://umich.instructure.com/api/lti/v1/tools/10530/grade_passback", :lti_message_type=>"basic-lti-launch-request", :lti_version=>"LTI-1p0", :resource_link_id=>"52e0499f9ed929340aec886dd08c7035e45471f5", :resource_link_title=>"OCILL Staging Test", :roles=>"Instructor ", :tool_consumer_info_product_family_code=>"canvas", :tool_consumer_info_version=>"cloud", :tool_consumer_instance_contact_email=>"notifications@instructure.com", :tool_consumer_instance_guid=>"7db438071375c02373713c12c73869ff2f470b68.umich.instructure.com", :tool_consumer_instance_name=>"University密歇根州 - 安娜堡”, :user_id=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807", :controller=>"launch", :action=>"create"}, @consumer_key="ocill-lti-key", @Signature="7jq4lBIBYoMzIeShPZbPNJjOrEs=", @secret="REDACTED!", @message=#"10", "custom_canvas_assignment_title"=>"OCILL 分期测试", "custom_canvas_enrollment_state"=>"active"}, @ext_params={"ext_ims_lis_basic_outcome_url"=> "https://umich.instructure.com/api/lti/v1/tools/10530/ext_grade_passback ", "ext_lti_assignment_id"=>"f9139721-be1f-473a-91b5-6a08a386074c", "ext_outcome_data_values_accepted"=>"url,text" , "ext_outcome_result_total_score_accepted"=>"true", "ext_outcomes_tool_placement_url"=>" https://umich.instructure.com/api/lti/v1/turnitin/outcomes_placement/10530", "ext_roles"=>"urn:lti:instrole:ims/lis/Administrator,urn:lti:instrole:ims/lis/Instructor,urn:lti:instrole:ims/lis/Student,urn:lti:role: ims/lis/Instructor,urn:lti:sysrole:ims/lis/User"}, @unknown_params={"controller"=>"launch", "action"=>"create"}, @oauth_consumer_key="ocill-lti -key", @oauth_signature_method="HMAC-SHA1", @oauth_timestamp="1510067228", @oauth_nonce="70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscIgQ", @oauth_version="1.0", @context_id="de25c863939f3cacfc02480738d072d95597842c", @context_label="johnathb Sandbox", @ context_title="johnathb 的 Canvas 培训课程", @launch_presentation_document_target="iframe", @launch_presentation_locale="en",@launch_presentation_return_url="https://umich.instructure.com/courses/56125/external_content/success/external_tool_redirect", @lis_outcome_service_url="https://umich.instructure.com/api/lti/v1/tools/10530/grade_passback ", @lti_message_type="basic-lti-launch-request", @lti_version="LTI-1p0", @oauth_callback="about:blank", @resource_link_id="52e0499f9ed929340aec886dd08c7035e45471f5", @resource_link_title="OCILL 暂存测试", @角色="Instructor",@tool_consumer_info_product_family_code="canvas",@tool_consumer_info_version="云",@tool_consumer_instance_contact_email="notifications@instructure.com",@tool_consumer_instance_guid="7db438071375c02373713c12c73869ff2f470b68.umich_instance_name",密歇根大学 - 安娜堡分校”, @user_id="1ec00186b63b783a994fd2d5b7648ba6cdfe9807", @oauth_signature="7jq4lBIBYoMzIeShPZbPNJjOrEs=", @launch_url="https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create"> , @simple_oauth_header=#https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create>, @params={:context_id=>"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb Sandbox", : context_title=>"johnathb 的 Canvas 培训课程", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL Staging Test", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807”, @oauth_signature="7jq4lBIBYoMzIeShPZbPNJjOrEs=", @launch_url="https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create">, @simple_oauth_header=#https://lrc-tes .lrc.lsa.umich.edu/ocill/launch/create>, @params={:context_id=>"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb Sandbox", :context_title=>"A Canvas 培训课程 johnathb", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL 分期测试", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807”, @oauth_signature="7jq4lBIBYoMzIeShPZbPNJjOrEs=", @launch_url="https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create">, @simple_oauth_header=#https://lrc-tes .lrc.lsa.umich.edu/ocill/launch/create>, @params={:context_id=>"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb Sandbox", :context_title=>"A Canvas 培训课程 johnathb", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL 分期测试", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"@simple_oauth_header=#https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create>, @params={:context_id=>"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb Sandbox", :context_title =>"Johnathb 的 Canvas 培训课程", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL Staging Test", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"@simple_oauth_header=#https://lrc-tesuto.lrc.lsa.umich.edu/ocill/launch/create>, @params={:context_id=>"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb Sandbox", :context_title =>"Johnathb 的 Canvas 培训课程", :custom_canvas_assignment_points_possible=>"10", :custom_canvas_assignment_title=>"OCILL Staging Test", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"custom_canvas_assignment_title=>"OCILL 分期测试", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"custom_canvas_assignment_title=>"OCILL 分期测试", :custom_canvas_enrollment_state=>"active", :ext_ims_lis_basic_outcome_url=>"https://umich.instructure.com/api/lti/v1/tools/10530/ext_grade_passback ", :ext_lti_assignment_id=>"f9139721-be1f-473a-91b5-6a08a386074c", :ext_outcome_data_values_accepted=>"url,text", : ext_outcome_result_total_score_accepted=>"true", :ext_outcomes_tool_placement_url=>" https://umich.instructure.com/api/lti/v1/turnitin/outcomes_placement/10530 ", :ext_roles=>"urn:lti:instrole:ims/lis/管理员,urn:lti:instrole:ims/lis/Instructor,urn:lti:instrole:ims/lis/Student,urn:lti:role:ims/lis/Instructor,urn:lti:sysrole:ims/lis/User" , :launch_presentation_document_target=>"iframe", :launch_presentation_locale=>"en", :launch_presentation_return_url=>" https://umich.instructure.com/courses/56125/external_content/success/external_tool_redirect ", :lis_outcome_service_url=>"https://umich.instructure.com/api/lti/v1/tools/10530/grade_passback", :lti_message_type=>"basic-lti-launch-request", :lti_version=>"LTI-1p0", :resource_link_id=>"52e0499f9ed929340aec886dd08c7035e45471f5", :resource_link_title=>"OCILL Staging Test", :roles=>"Instructor ", :tool_consumer_info_product_family_code=>"canvas", :tool_consumer_info_version=>"cloud", :tool_consumer_instance_contact_email=>"notifications@instructure.com", :tool_consumer_instance_guid=>"7db438071375c02373713c12c73869ff2f470b68.umich.instructure.com", :tool_consumer_instance_name=>"University密歇根州 - 安娜堡”,:user_id=>“1ec00186b63b783a994fd2d5b7648ba6cdfe9807”,:controller=>“launch”,:action=>“create”},@options={:nonce=>”70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscIgQ", :signature_method=>"HMAC-SHA1", :timestamp=>"1510067228", :version=>"1.0", :consumer_key=>"ocill-lti-key", :callback=>"about:blank" , :consumer_secret=>“已删除!”}>>

4

1 回答 1

0

原来问题是我的请求中有额外的参数被传入。

改为使用以下内容为验证器生成参数:

params = request.query_parameters.merge(request.request_parameters)
于 2017-11-14T17:35:02.557 回答