private WebConsumer CreateConsumer() { string consumerKey = "sampleconsumer"; string consumerSecret = "samplesecret"; var tokenManager = Session["WcfTokenManager"] as InMemoryTokenManager; if (tokenManager == null) { tokenManager = new InMemoryTokenManager(consumerKey, consumerSecret); Session["WcfTokenManager"] = tokenManager; } MessageReceivingEndpoint oauthEndpoint = new MessageReceivingEndpoint( new Uri("http://localhost:65169/OAuthServiceProvider/OAuth.ashx"), HttpDeliveryMethods.PostRequest); WebConsumer consumer = new WebConsumer( new ServiceProviderDescription { RequestTokenEndpoint = oauthEndpoint, UserAuthorizationEndpoint = oauthEndpoint, AccessTokenEndpoint = oauthEndpoint, TamperProtectionElements = new DotNetOpenAuth.Messaging.ITamperProtectionChannelBindingElement[] { new HmacSha1SigningBindingElement(), }, }, tokenManager); return(consumer); }
/// <summary> /// Starts the simulation. /// </summary> internal override void Run() { // Clone the template signing binding element. var signingElement = this.serviceDescription.CreateTamperProtectionElement(); var consumerSigningElement = signingElement.Clone(); var spSigningElement = signingElement.Clone(); // Prepare token managers InMemoryTokenManager consumerTokenManager = new InMemoryTokenManager(); InMemoryTokenManager serviceTokenManager = new InMemoryTokenManager(); consumerTokenManager.AddConsumer(this.consumerDescription); serviceTokenManager.AddConsumer(this.consumerDescription); // Prepare channels that will pass messages directly back and forth. CoordinatingOAuthChannel consumerChannel = new CoordinatingOAuthChannel(consumerSigningElement, (IConsumerTokenManager)consumerTokenManager); CoordinatingOAuthChannel serviceProviderChannel = new CoordinatingOAuthChannel(spSigningElement, (IServiceProviderTokenManager)serviceTokenManager); consumerChannel.RemoteChannel = serviceProviderChannel; serviceProviderChannel.RemoteChannel = consumerChannel; // Prepare the Consumer and Service Provider objects WebConsumer consumer = new WebConsumer(this.serviceDescription, consumerTokenManager) { OAuthChannel = consumerChannel, }; ServiceProvider serviceProvider = new ServiceProvider(this.serviceDescription, serviceTokenManager, new NonceMemoryStore()) { OAuthChannel = serviceProviderChannel, }; this.RunCore(consumer, serviceProvider); }
public Investigator() { logger = LogManager.GetLogger(typeof(Investigator)); InMemoryTokenManager tokenManager = new InMemoryTokenManager(Constants.TwitterConsumerKey, Constants.TwitterConsumerSecret); tokenManager.StoreAccessToken(Constants.TwitterAccessToken, Constants.TwitterAccessSecret); consumer = new WebConsumer(UserModule.ServiceDescription, tokenManager); }
public static InMemoryTokenManager GetTokenManager(string consumerKey, string consumerSecret) { if (tokenManager == null) { tokenManager = new InMemoryTokenManager(consumerKey, consumerSecret); } return(tokenManager); }
public async Task <ActionResult> LinkedIn(int?job) { var mandator = await GetMandator(); var tokenManager = new InMemoryTokenManager(mandator.PortalSettings.LinkedinConsumerKey, mandator.PortalSettings.LinkedinConsumerSecret); var linkedinConsumer = new LinkedinConsumer(tokenManager); return(await Link(linkedinConsumer, ThirdParty.LinkedIn, job)); }
public async Task <ActionResult> Xing(int?job) { var mandator = await GetMandator(); var tokenManager = new InMemoryTokenManager(mandator.PortalSettings.XingConsumerKey, mandator.PortalSettings.XingConsumerSecret); var xingConsumer = new XingConsumer(tokenManager); return(await Link(xingConsumer, ThirdParty.Xing, job)); }
protected void authorizeButton_Click(object sender, EventArgs e) { if (!Page.IsValid) { return; } InMemoryTokenManager tokenManager = new InMemoryTokenManager(consumerKeyBox.Text, consumerSecretBox.Text); Session["TokenManager"] = tokenManager; var google = GoogleConsumer.CreateWebConsumer(tokenManager, consumerKeyBox.Text); GoogleConsumer.RequestAuthorization(google, GoogleConsumer.Applications.Contacts); }
protected void Page_Load(object sender, EventArgs e) { // This is what the NetSuite SuiteSignOn ConnectionPoint sends: // GET /administratorportal/SSO/sso_page.aspx?oauth_token=08046c1c166a7a6c47471857502d364b0d59415418156f15db22f76dcfe648&dc=001&env=SANDBOX // see the NetSuite SuiteSignOn doc about dc & env processing to build endpoints ServiceProviderDescription provider = GetServiceDescription(); // Set up OAuth with our keys and stuff string token = Request.Params["oauth_token"]; string consumerKey = "yourconsumerkey"; // this has to match what is defined on our NetSuite account - ConnectionPoint to CRMLink string sharedSecret = "yoursharedsecret"; // this has to match what is defined on our NetSuite account - ConnectionPoint to CRMLink - Careful - NO funny chars like '!' // I got this InMemoryTokenManager from another DotNetOpenAuth post in SO InMemoryTokenManager _tokenManager = new InMemoryTokenManager(consumerKey, sharedSecret); AuthorizationApprovedResponse authApprovedResponse = new AuthorizationApprovedResponse(); authApprovedResponse.RequestToken = token; _tokenManager.StoreOpenIdAuthorizedRequestToken(consumerKey, authApprovedResponse); WebConsumer consumer = new WebConsumer(provider, _tokenManager); // this is the SSO address in netsuite to use. Should be production or sandbox, based on the values of dc and env string uri = "https://system.sandbox.netsuite.com/app/common/integration/ssoapplistener.nl"; MessageReceivingEndpoint endpoint = new MessageReceivingEndpoint(uri, methods); WebRequest verifyRequest = consumer.PrepareAuthorizedRequest(endpoint, token ); HttpWebResponse responseData = verifyRequest.GetResponse() as HttpWebResponse; XDocument responseXml; responseXml = XDocument.Load(responseData.GetResponseStream()); // process the SSO values that come back from NetSuite in the XML They should look something // like the following: /* XML response should look like this: <?xml version="1.0" encoding="UTF-8"?> <outboundSso> <entityInfo> <ENTITYINTERNALID>987654</ENTITYINTERNALID> <ENTITYNAME>Fred</ENTITYNAME> <ENTITYEMAIL>[email protected]</ENTITYEMAIL> </entityInfo> </outboundSso> */ // If that data looks good, you can mark the user as logged in, and redirect to whatever // page (like SSOLandingPage.aspx) you want, which will be shown inside a frame on the NetSuite page. Response.Redirect("~/SSOLandingPage.aspx", false);
/// <summary> /// Creates a 23 API service repository, that doesn't require further authentication. Account must be "privileged" /// </summary> /// <param name="consumerDomain">Domain name</param> /// <param name="consumerKey">Consumer key</param> /// <param name="consumerSecret">Consumer secret</param> /// <param name="accessToken">Access token</param> /// <param name="accessTokenSecret">Access token secret</param> public ApiProvider(string consumerDomain, string consumerKey, string consumerSecret, string accessToken, string accessTokenSecret, bool httpSecure) { // Save the authentication keys _consumerDomain = consumerDomain; _consumerKey = consumerKey; _consumerSecret = consumerSecret; _httpSecure = httpSecure; string protocol = httpSecure ? "https://" : "http://"; // Adjust timeout for requests to the domain to allow for large file uploads WebRequest.RegisterPrefix(protocol + _consumerDomain, TwentyThreeCreatorRequestCreator.TwentyThreeHttp); // Open the OAuth consumer connection _oAuthProviderDescription.AccessTokenEndpoint = new MessageReceivingEndpoint(protocol + "api.visualplatform.net/oauth/access_token", HttpDeliveryMethods.GetRequest); _oAuthProviderDescription.RequestTokenEndpoint = new MessageReceivingEndpoint(protocol + "api.visualplatform.net/oauth/request_token", HttpDeliveryMethods.GetRequest); _oAuthProviderDescription.ProtocolVersion = ProtocolVersion.V10a; _oAuthProviderDescription.UserAuthorizationEndpoint = new MessageReceivingEndpoint(protocol + "api.visualplatform.net/oauth/authorize", HttpDeliveryMethods.GetRequest); _oAuthProviderDescription.TamperProtectionElements = new ITamperProtectionChannelBindingElement[] { new HmacSha1SigningBindingElement() }; _oAuthTokenManager = new InMemoryTokenManager(_consumerKey, _consumerSecret); _oAuthConsumer = new WebConsumer(_oAuthProviderDescription, _oAuthTokenManager); if (accessToken != null) { _accessToken = accessToken; _accessTokenSecret = accessTokenSecret; _oAuthTokenManager.ExpireRequestTokenAndStoreNewAccessToken(_consumerKey, "", _accessToken, _accessTokenSecret); } _oAuthConsumer.Channel.AssertBoundary(); }
public ActionResult Authenticate(AuthRequestType authType) { Guard.MakeSureAllInstancesIsNullNot(_mySettings); var redirectUrl = string.Empty; switch (authType) { case AuthRequestType.Facebook: var facebookContext = new FacebookAuthRequestProcessingContext(); var facebookInputParam = new FacebookAuthRequestProcessingParameter { RequestUrl = HttpContext.Request.GetUrlBase(), RedirectPath = Url.Action("FacebookCallbackAction") }; facebookContext.Execute(() => facebookInputParam); redirectUrl = facebookContext.ReturnResult; break; case AuthRequestType.Twitter: var twitterContext = new TwitterAuthRequestProcessingContext(); var twitterCallbackUrl = Request.Url.ToString().Replace("Authenticate", "TwitterCallbackAction"); var twitterCallback = new Uri(twitterCallbackUrl); _consumerKey = _mySettings.TwitterConsumerKey; _secretKey = _mySettings.TwitterConsumerSecret; AssertForKeyAndSecretConsummer(_consumerKey, _secretKey); _tokenManager = new InMemoryTokenManager(_consumerKey, _secretKey); var twitterInputParam = new TwitterAuthRequestProcessingParameter { CallBackLink = twitterCallback, TokenManager = _tokenManager }; twitterContext.Execute(() => twitterInputParam); HttpContext.Application["TwitterTokenManager"] = _tokenManager; return(twitterContext.ReturnResult); break; case AuthRequestType.Google: var googleContext = new GoogleAuthRequestProcessingContext(); var callbackUrl = Request.Url.ToString().Replace("Authenticate", "GoogleCallbackAction"); var callback = new Uri(callbackUrl); _consumerKey = _mySettings.GoogleConsumerKey; _secretKey = _mySettings.GoogleConsumerSecret; AssertForKeyAndSecretConsummer(_consumerKey, _secretKey); _tokenManager = new InMemoryTokenManager(_consumerKey, _secretKey); var googleInputParam = new GoogleAuthRequestProcessingParameter { CallBackLink = callback, TokenManager = _tokenManager }; googleContext.Execute(() => googleInputParam); HttpContext.Application["GoogleTokenManager"] = _tokenManager; return(googleContext.ReturnResult); break; } return(Redirect(redirectUrl)); }
public async Task SpecAppendixAExample() { var serviceDescription = new ServiceProviderDescription( "https://photos.example.net/request_token", "http://photos.example.net/authorize", "https://photos.example.net/access_token"); var serviceHostDescription = new ServiceProviderHostDescription { RequestTokenEndpoint = new MessageReceivingEndpoint(serviceDescription.TemporaryCredentialsRequestEndpoint, HttpDeliveryMethods.PostRequest | HttpDeliveryMethods.AuthorizationHeaderRequest), UserAuthorizationEndpoint = new MessageReceivingEndpoint(serviceDescription.ResourceOwnerAuthorizationEndpoint, HttpDeliveryMethods.GetRequest), AccessTokenEndpoint = new MessageReceivingEndpoint(serviceDescription.TokenRequestEndpoint, HttpDeliveryMethods.PostRequest | HttpDeliveryMethods.AuthorizationHeaderRequest), TamperProtectionElements = new ITamperProtectionChannelBindingElement[] { new HmacSha1SigningBindingElement(), }, }; var accessPhotoEndpoint = new Uri("http://photos.example.net/photos?file=vacation.jpg&size=original"); var consumerDescription = new ConsumerDescription("dpf43f3p2l4k3l03", "kd94hf93k423kf44"); var tokenManager = new InMemoryTokenManager(); tokenManager.AddConsumer(consumerDescription); var sp = new ServiceProvider(serviceHostDescription, tokenManager); Handle(serviceDescription.TemporaryCredentialsRequestEndpoint).By( async(request, ct) => { var requestTokenMessage = await sp.ReadTokenRequestAsync(request, ct); return(await sp.Channel.PrepareResponseAsync(sp.PrepareUnauthorizedTokenMessage(requestTokenMessage))); }); Handle(serviceDescription.ResourceOwnerAuthorizationEndpoint).By( async(request, ct) => { var authRequest = await sp.ReadAuthorizationRequestAsync(request, ct); ((InMemoryTokenManager)sp.TokenManager).AuthorizeRequestToken(authRequest.RequestToken); return(await sp.Channel.PrepareResponseAsync(sp.PrepareAuthorizationResponse(authRequest))); }); Handle(serviceDescription.TokenRequestEndpoint).By( async(request, ct) => { var accessRequest = await sp.ReadAccessTokenRequestAsync(request, ct); return(await sp.Channel.PrepareResponseAsync(sp.PrepareAccessTokenMessage(accessRequest), ct)); }); Handle(accessPhotoEndpoint).By( async(request, ct) => { string accessToken = (await sp.ReadProtectedResourceAuthorizationAsync(request)).AccessToken; Assert.That(accessToken, Is.Not.Null.And.Not.Empty); var responseMessage = new HttpResponseMessage { Content = new ByteArrayContent(new byte[] { 0x33, 0x66 }), }; responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg"); return(responseMessage); }); var consumer = new Consumer( consumerDescription.ConsumerKey, consumerDescription.ConsumerSecret, serviceDescription, new MemoryTemporaryCredentialStorage()); consumer.HostFactories = this.HostFactories; var authorizeUrl = await consumer.RequestUserAuthorizationAsync(new Uri("http://printer.example.com/request_token_ready")); Uri authorizeResponseUri; this.HostFactories.AllowAutoRedirects = false; using (var httpClient = this.HostFactories.CreateHttpClient()) { using (var response = await httpClient.GetAsync(authorizeUrl)) { Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.Redirect)); authorizeResponseUri = response.Headers.Location; } } var accessTokenResponse = await consumer.ProcessUserAuthorizationAsync(authorizeResponseUri); Assert.That(accessTokenResponse, Is.Not.Null); using (var authorizingClient = consumer.CreateHttpClient(accessTokenResponse.AccessToken)) { using (var protectedPhoto = await authorizingClient.GetAsync(accessPhotoEndpoint)) { Assert.That(protectedPhoto, Is.Not.Null); protectedPhoto.EnsureSuccessStatusCode(); Assert.That("image/jpeg", Is.EqualTo(protectedPhoto.Content.Headers.ContentType.MediaType)); Assert.That(protectedPhoto.Content.Headers.ContentLength, Is.Not.EqualTo(0)); } } }
private void btnExecute_Click(object sender, EventArgs e) { // Reset the GUI lblStatusCode.Text = string.Empty; txtResults.Text = string.Empty; txtBuiltUrl.Text = string.Empty; // Get the request method RequestMethod selectedMethod = GetRequestMethod(); // Create parameter list var paramList = CreateParameterList(); ExtApiCallResult result = null; var apiRunner = new ApiRunner(); if (chkIncludeOAuth.Checked) { // Create the token manager var tokenManager = new InMemoryTokenManager(); tokenManager.ConsumerKey = txtConsumerKey.Text; tokenManager.ConsumerSecret = txtConsumerSecret.Text; tokenManager.AddKeyAndSecret(txtAccessToken.Text, txtTokenSecret.Text); // Call the api try { result = apiRunner.ExecuteOAuthApiCall(txtApiUrl.Text, paramList, GetRequestMethod(), txtConsumerKey.Text, txtConsumerSecret.Text, txtAccessToken.Text, txtTokenSecret.Text); } catch (UriFormatException ex) { HandleApiCallException(ex); return; } } else { string username = chkUseWebAuth.Checked ? txtWebAuthUsername.Text : string.Empty; string password = chkUseWebAuth.Checked ? txtWebAuthPassword.Text : string.Empty; try { result = apiRunner.ExecuteApiCall(txtApiUrl.Text, paramList, selectedMethod, username, password); } catch (UriFormatException ex) { HandleApiCallException(ex); return; } } // Show the results lblStatusCode.Text = result.StatusCode.ToString(); txtBuiltUrl.Text = result.FinalUrl; if (result.XmlResponse != null) { txtResults.Text = result.XmlResponse.ToString(); } else { // Check if it's json, if so pretty print it var response = new StreamReader(result.ResponseStream).ReadToEnd(); if (response.Length > 0 && (response[0] == '{' || response[0] == '[')) { txtResults.Text = JsonFormatter.PrettyPrint(response); } else { txtResults.Text = response; } } // Make sure we don't leak the stream result.ResponseStream.Dispose(); }
public GoogleUserInformation AuthRequestProcessed(InMemoryTokenManager inMemoryTokenManager) { _googleAuthRequestRole.GoogleAuthRequestProcessed(inMemoryTokenManager); return(_googleAuthRequestRole as GoogleUserInformation); }