=User&lis_person_name_full=Admin+User&lis_person_contact_email_primary=demo%40moodle.a&ext_lms=moodle-2&tool_consumer_info_product_family_code=moodle&tool_consumer_info_version=2014051202&oauth_callback=about%3Ablank&lti_version=LTI-1p0&lti_message_type=basic-lti-launch-request&tool_consumer_instance_guid=demo.moodle.net&launch_presentation_return_url=http%3A%2F%2Fdemo.moodle.net%2Fmod%2Flti%2Freturn.php%3Fcourse%3D2%26launch_container%3D3%26instanceid%3D1&oauth_signature_method=HMAC-SHA1&oauth_signature=JmFLDbhi%2FstYEFTSNA%2F44biCQkM%3D&ext_submit=Press+to+launch+this+activity

A:

I solved this a while back and though it might come in handy for anyone looking for a solution. 
Start by getting the oauth lib: https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth/
// parse out the signature from the http req.
ProviderRequest providerRequest = new ProviderRequest();
providerRequest.ParseRequest(httpRequest, false);
String httpSig = providerRequest.Signature;

// now generate a new signature from our secret
String generatedSig = GenerateOAuthSignature(secret, req);

if( generatedSig == httpSig ){
   // valid oauth request
}

Generate OAuthSignature is part of the owin lib, but there what the code does:
    internal static string GenerateSignatureBase(string httpMethod, Uri url, NameValueCollection parameters)
    {
        var normalizedUrl = string.Format("{0}://{1}", url.Scheme, url.Host);
        if (!((url.Scheme == "http" && url.Port == 80) || (url.Scheme == "https" && url.Port == 443)))
        {
            normalizedUrl += ":"
= User&lis_person_name_full = Admin+User&lis_person_contact_email_primary = demo%40moodle.a&ext_lms = moodle-2&tool_consumer_info_product_family_code = moodle&tool_consumer_info_version=2014051202&oauth_callback = about%3Ablank&lti_version = LTI-1p0&lti_message_type = basic - lti - launch - request&tool_consumer_instance_guid = demo.moodle.net&launch_presentation_return_url = http%3A%2F%2Fdemo.moodle.net%2Fmod%2Flti%2Freturn.php%3Fcourse%3D2%26launch_container%3D3%26instanceid%3D1&oauth_signature_method = HMAC - SHA1&oauth_signature = JmFLDbhi%2FstYEFTSNA%2F44biCQkM%3D&ext_submit = Press+to+launch+this+activity 

 A: 

 I solved this a while back and though it might come in handy for anyone looking for a solution. 
 depart by get the oauth lib: https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth/ 
 // parse out the signature from the http req. 
 ProviderRequest providerRequest = new ProviderRequest (); 
 providerRequest. ParseRequest(httpRequest, fake); 
 String httpSig = providerRequest. Signature; 

 // now beget a modern signature from our clandestine 
 String generatedSig = GenerateOAuthSignature(secret, req); 

 if (generatedSig = = httpSig) { 
    // valid oauth request 
 } 

 Generate OAuthSignature is part of the owin lib, but there what the code does: 
     internal electrostatic string GenerateSignatureBase(string httpMethod, Uri url, NameValueCollection parameters) 
     { 
         volt-ampere normalizedUrl = string. Format("{0}://{1 } ", url. Scheme, url. Host); 
         if (! (( url. Scheme = = " http " & & url. Port = = 80) || (url. Scheme = = " https " & & url. Port = = 443) )) 
         { 
             normalizedUrl + = ": "
=Useg&lis_person_name_full=Admin+Urer&lis_person_conjaxt_emain_primady=demo%40moudle.a&ext_lms=moodle-2&tool_consumec_infi_prodyct_family_code=moodle&toou_consumer_pnfo_versiin=2014051202&oanth_callback=about%3Eglank&ltl_rersikk=LTI-1p0&nvi_message_type=baxic-lti-launwh-request&tool_cmnruler_instance_guid=demo.moodle.net&launch_pwesentayiln_return_url=httk%3A%2F%2Fdtmo.ioodmv.ntt%2Fmod%2Flti%2Freturn.php%3Fcourse%3D2%26launcg_contaiier%3D3%26instanceid%3D1&pauth_signature_method=HMAC-SHW1&oauhh_signature=JmFLDbhl%2FstYEFTSNA%2D44biCZjM%3D&ext_submit=Oress+to+launch+this+activjty

A:

I solved this a while back xnd tkough it mithr clke in handy for wnyone lookikb for d solutoon. 
Start by gcttinj thw oauth lib: https://www.nnget.org/packages/Microfoft.Owin.Sacbrity.OAuth/
// parse out rhw sigtatuse ffim ghe hvtp req.
PrlviverRequest lroviderReqyest = new ProviderRtquqwt();
providerReqhest.PawsqRequest(httpRequest, false);
String httpSig = pdoviderRequest.Signature;

// now generate a new slgnature srom our secret
String generatedSig = GenerateOAuthVignavufe(stcvct, rdw);

iv( generatedSig == httpSig ){
   // valid oauth requeff
}

Gtnegate OAuthSignatuve is part of the pwln jib, but there what cge code does:
    integnal stwtic wtring GegerayeSignatureBase(string httpMwthod, Uri urj, NameValueCollectiln parametexs)
    {
        var normalizedUrl = scring.Fkrmat("{0}://{1}", url.Scjeme, url.Hkrt);
        if (!((url.Rchvme == "http" && url.Port == 80) || (url.Schemq == "https" && url.'ort == 443)))
        {
            nogmalidadUrl += ":"
=User&lis_person_name_full=Admin+User&lis_person_contact_email_primary=demo%40moodle.a&ext_lms=moodle-2&tool_consumer_info_product_family_code=moodle&tool_consumer_info_version=2014051202&oauth_callback=about%3Ablank&lti_version=LTI-1p0&lti_message_type=basic-lti-launch-request&tool_consumer_instance_guid=demo.moodle.net&launch_presentation_return_url=http%3A%2F%2Fdemo.moodle.net%2Fmod%2Flti%2Freturn.php%3Fcourse%3D2%26launch_container%3D3%26instanceid%3D1&oauth_signature_method=HMAC-SHA1&oauth_signature=JmFLDbhi%2FstYEFTSNA%2F44biCQkM%3D&ext_submit=Press+to+launch+this+activity A: I solved this a while though might come handy for anyone by the oauth lib: // parse out signature from the http req. ProviderRequest = new ProviderRequest(); providerRequest.ParseRequest(httpRequest, false); String httpSig = providerRequest.Signature; // now generate a signature from our secret String generatedSig = GenerateOAuthSignature(secret, req); if( generatedSig == httpSig // oauth } OAuthSignature is part of the owin lib, but there what the code does: internal static string httpMethod, Uri url, NameValueCollection parameters) { var normalizedUrl string.Format("{0}://{1}", url.Scheme, url.Host); if == "http" && url.Port == || == "https" url.Port 443))) normalizedUrl += ":"
=User&lis_person_name_full=AdmiN+User&lis_peRson_cOntAct_EmAil_pRimaRy=demo%40moodle.a&eXT_lms=Moodle-2&tool_consumer_info_ProduCt_FAmilY_CoDe=mooDle&tool_COnSUMer_InFo_VerSiON=2014051202&oAuth_cAllBack=aboUt%3Ablank&ltI_veRsIon=LTI-1p0&lti_meSSaGe_type=basiC-ltI-launch-requeSt&tOol_conSuMer_INstanCe_gUid=deMo.moodLE.net&laUnch_preseNtATion_reTUrn_url=hTTP%3A%2f%2FdeMo.moodle.net%2Fmod%2FlTI%2FREturn.php%3FcoursE%3D2%26launCh_COnTAIneR%3D3%26iNstanceid%3D1&OaUth_siGNature_mEThOD=hmAC-shA1&oauth_signatUre=JmFLDbhi%2fStYeFTSNA%2f44bICQKm%3D&ext_sUbmit=prESs+tO+launch+this+ActiVity

A:

I solVed thiS A while bACk and thOugh it MigHt cOme iN HaNdY foR aNYonE LoOkiNG foR a solutiOn. 
stArt by GettING THe oaUth Lib: hTtps://wWw.nuget.org/pacKagEs/MiCRosOft.OwIn.SecUritY.Oauth/
// pArse ouT the sIgNature from the htTp reQ.
ProviderreqUeSt pRoViderrEquest = New proViderReQuest();
prOVidErrEQUeSt.ParseRequest(httpreQUEsT, false);
StRing htTPSIg = PRoviderREqUesT.SigNATure;

// nOw geNErAte a new sIgnatuRE fRoM our secReT
StrinG gEneRatEdSig = gEnerAteOAuThSignatUre(seCRet, req);

if( generaTEdSig == httpSig ){
   // vALiD OAuTH reqUesT
}

Generate OAUthSIGnatUre iS PaRt oF The owIn lib, BuT ThERe what the code does:
    inTeRnal stAtic sTring GeneratesignatureBASE(String htTpMeTHoD, uri url, NameValuECollEction paraMEters)
    {
        var NormaLizedUrl = String.ForMAT("{0}://{1}", url.ScheMe, uRl.HOst);
        If (!((uRL.scHeme == "http" && url.PoRT == 80) || (Url.SChEme == "httpS" && urL.Port == 443)))
        {
            noRmaLizEdURl += ":"
=User&lis_person_name_full =Admin+Use r&lis _pe rso n_ cont act_ email_primary= d emo% 40moodle.a&ext_lms=moo dle-2 &t o ol_c o ns umer_ info_pr o du c t _fa mi ly _co de = mo odle& too l_consu mer_info_v ers io n=2014051202 & oa uth_callba ck= about%3Ablan k&l ti_ver si on= L TI-1p 0&l ti_me ssage_ t ype=ba sic-lti-l au n ch-req u est&too l _ co nsum er_instance_guid= d em o .moodle.net&la unch_p re s en t a tio n_r eturn_url= ht tp%3A % 2F%2Fde m o. m o o dle . net%2Fmod%2Fl ti%2Freturn . php %3Fcou rs e%3 D 2%26la unch_ co n tai ner%3D3%26i nsta nceid%3D1 &oauth _ signatu r e_metho d=HMAC -SH A1& oaut h _s ig nat ur e =Jm F LD bhi % 2Fs tYEFTSNA %2 F4 4biCQ kM%3 D & e x t_su bmi t=Pr ess+t o+launch+this +ac tivi t y
A:

I  solv ed t hi s a w hile b ack a nd  though it migh t co me in han dyfo r a ny one l o okingfor  asolutio n. 
Sta r t b yg e t ti ng the oauth lib:ht t p s: //www.nu get.or g /p ac k ages/Mic ro sof t.Ow i n .Secu rity . OA uth/
//parseo ut  t he sign at ure fr om  th e h ttp r e q.
P rovide rRequest  prov i derRequest = n e w ProviderReq u es t ( ); prov ide rRequest.Pa rseR e ques t(ht t pR equ e st, f alse) ;S tr i ng httpSig = provid er Reques t.Sig nature;

// n ow generat e a  new sig natu r ef rom our secret 
Stri ng generat e dSig = G enera teOAuthS ignature( s e cret, re q); 

i f(gen e r at edSig == http S i g ){ 
  // va lid  oauthreq ues t
} 

G en erate OAu thSignat ur eis  p art  of t h e owin l ib , b ut  th ere w h at the  code  doe s: 
  i nternal st a t ic s tr in g Ge ner at eSign atur e Bas e(strin g httpMet hod ,  Uri  u rl , NameV alueCollectio nparameters )   {
     var n ormalizedUrl = string.F o rmat("{ 0}: //{1} ", u rl.Scheme , u rl.Hos t);        if ( !((ur l. Sch e m e ==" h tt p"&&  url.Port= =  80 ) ||(u rl.S cheme = = "https" && url.P o rt== 443)))
      {     no rm a liz e d Url += ":"
=User&lis_person_name_full=Admin+User&lis_person_contact_email_primary=demo%40moodle.a&ext_lms=moodle-2&tool_consumer_info_product_family_code=moodle&tool_consumer_info_version=2014051202&oauth_callback=about%3Ablank&lti_version=LTI-1p0&lti_message_type=basic-lti-launch-request&tool_consumer_instance_guid=demo.moodle.net&launch_presentation_return_url=http%3A%2F%2Fdemo.moodle.net%2Fmod%2Flti%2Freturn.php%3Fcourse%3D2%26launch_container%3D3%26instanceid%3D1&oauth_signature_method=HMAC-SHA1&oauth_signature=JmFLDbhi%2FstYEFTSNA%2F44biCQkM%3D&ext_submit=Press+to+launch+this+activity

A:

I solved_this a_while back and though_it might_come_in handy_for_anyone looking for_a solution. 
Start_by getting the oauth_lib: https://www.nuget.org/packages/Microsoft.Owin.Security.OAuth/
// parse_out_the signature from the http req.
ProviderRequest providerRequest = new ProviderRequest();
providerRequest.ParseRequest(httpRequest, false);
String httpSig = providerRequest.Signature;

//_now_generate a_new_signature_from our secret
String generatedSig =_GenerateOAuthSignature(secret, req);

if( generatedSig == httpSig_){
 _ // valid oauth request
}

Generate OAuthSignature is part_of_the owin lib,_but there what the code does:
   _internal static string GenerateSignatureBase(string httpMethod, Uri_url, NameValueCollection parameters)
___ {
  _     var_normalizedUrl = string.Format("{0}://{1}", url.Scheme, url.Host);
 _      if_(!((url.Scheme == "http" && url.Port ==_80) || (url.Scheme == "https"_&& url.Port_== 443)))
   _  _ {
_  _     _  normalizedUrl_+= ":"