【问题标题】:OAuth LTI Error: Request not validating?OAuth LTI 错误:请求未验证?
【发布时间】:2018-04-26 14:16:14
【问题描述】:

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

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

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

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

App 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"=>"70h3qDQemquvfZeKZ03OIJt5Me06hmoUQuA ", "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-6a08a386074"" , "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_presentat ion_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_info_version”=>“云”、“tool_consumer_instance_contact_email”=>“notifications@instructure.com”、“tool_consumer_instance_guid”=>“7db438071375c02373713c12c73869ff2f470.6.in.” , "tool_consumer_instance_name"=>"密歇根大学 - 安娜堡分校", "user_id"=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807", "oauth_signature"=>"7jq4lBIBYoMzIeShPZbPNJjOrEs=", "controller"=>"launch", "action"=>" "}

App 9783 标准输出:--- AUTHENTICATOR INSPECT ===> #"ocill-lti-key", "oauth_signature_method"=>"HMAC-SHA1", "oauth_timestamp"=>"1510067228", "oauth_nonce"=> “70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscIgQ”, “oauth_version”=> “1.0”, “context_id”=> “de25c863939f3cacfc02480738d072d95597842c”, “context_label”=> “johnathb沙箱”, “context_title”=> “画布为johnathb训练课程”, “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/管理员,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_doc ument_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_info_version”=>“云”、“tool_consumer_instance_contact_email”=>“notifications@instructure.com”、“tool_consumer_instance_guid”=>“7db438071375c02373713c12c73869ff2f470.6.in.” , "tool_consumer_instance_name"=>"密歇根大学 - 安娜堡分校", "user_id"=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807", "oauth_signature"=>"7jq4lBIBYoMzIeShPZbPNJjOrEs=", "controller"=>"launch", "action"=>" "}, @options={:consumer_key=>"ocill-lti-key", :signature_method=>"HMAC-SHA1", :timestamp=>"1510067228", :nonce=>"70h3qDQemquvfZeKZ03 OIJt5Me06hmoUuA4DEscIgQ", :version=>"1.0", :callback=>"about:blank"}, @parsed_pa​​rams={:context_id=>"de25c863939f3cacfc02480738d072d95597842c", :context_label=>"johnathb Sandbox", :context_title=>" johnathb 培训课程", :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=>"f913927 -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/ /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", :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-instance.com_name: Michigan_toolconsumer.instructure.com_name安娜堡", :user_id=>"1ec00186b63b783a994fd2d5b7648ba6cdfe9807", :controller=>"launch", :action=>"create"}, @consumer_key="ocill-lti-key", @Signature="7jq4lBIBYoMzIeShPZbPNJjOrEs=", @secret ="已编辑!", @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,te xt", "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"=> “启动”,“动作”=>“创建”},@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 沙盒", @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_mess age_type="basic-lti-launch-request", @lti_version="LTI-1p0", @oauth_callback="about:blank", @resource_link_id="52e0499f9ed929340aec886dd08c7035e45471f5", @resource_link_title="OCILL Staging Test", @roles="讲师”,@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",@密歇根大学乔木",@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=>"A johnathb 的帆布培训课程", :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_acceptedout_e", 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/教练,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 分期测试", :roles=>"讲师", :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”:控制器=>“启动”,:动作=>“创建”},@options={:nonce=>“70h3qDQemquvfZeKZ03OIJt5Me06hmoUuA4DEscIgQ”,:signature_method=>“HMAC-SHA1”,:时间戳=>“1510067228”,:版本=> "1.0", :consumer_key=>"ocill-lti-key", :callback=>"about:blank", :consumer_secret=>"已编辑!"}>>

【问题讨论】:

    标签: ruby-on-rails oauth lti


    【解决方案1】:

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

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

    params = request.query_parameters.merge(request.request_parameters)
    

    【讨论】:

      猜你喜欢
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 2021-08-31
      • 2015-04-01
      • 2018-04-19
      • 2017-07-16
      • 1970-01-01
      相关资源
      最近更新 更多