/** * Signs the URL associated with the passed request object using the passed * consumer key and secret in accordance with the OAuth specification and * appends signature and other required parameters to the URL as query * string parameters. * * @param request OpenSocialHttpRequest object which contains both the URL * to sign as well as the POST body which must be included as a * parameter when signing POST requests * @param consumerKey Application key assigned and used by containers to * uniquely identify applications * @param consumerSecret Secret key shared between application owner and * container. Used to generate the signature which is attached to * the request so containers can verify the authenticity of the * requests made by the client application. * @throws OAuthException * @throws IOException * @throws URISyntaxException */ public static void signRequest( OpenSocialHttpRequest request, String consumerKey, String consumerSecret) { String postBody = request.getPostBody(); String requestMethod = request.getMethod(); OpenSocialUrl requestUrl = request.getUrl(); if (!String.IsNullOrEmpty(consumerKey) && !String.IsNullOrEmpty(consumerSecret)) { OAuthMessage message = new OAuthMessage(requestMethod, requestUrl.ToString(), null); if (!String.IsNullOrEmpty(postBody)) { message.addParameter(postBody, ""); } OAuthConsumer consumer = new OAuthConsumer(null, consumerKey, consumerSecret, null); consumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.HMAC_SHA1); OAuthAccessor accessor = new OAuthAccessor(consumer); accessor.accessToken = ""; message.addRequiredParameters(accessor); foreach(var p in message.getParameters()) { if (!p.Key.Equals(postBody)) { requestUrl.addQueryStringParameter( OAuth.percentEncode(new List<string> { p.Key }), OAuth.percentEncode(new List<string> {p.Value})); } } } }
public override ConsumerInfo getConsumerKeyAndSecret(ISecurityToken securityToken, String serviceName, OAuthServiceProvider provider) { ++consumerKeyLookupCount; BasicOAuthStoreConsumerIndex pk = new BasicOAuthStoreConsumerIndex(); pk.setGadgetUri(securityToken.getAppUrl()); pk.setServiceName(serviceName); BasicOAuthStoreConsumerKeyAndSecret cks = consumerInfos.ContainsKey(pk) ? consumerInfos[pk] : defaultKey; if (cks == null) { throw new GadgetException(GadgetException.Code.INTERNAL_SERVER_ERROR, "No key for gadget " + securityToken.getAppUrl() + " and service " + serviceName); } OAuthConsumer consumer; if (cks.keyType == BasicOAuthStoreConsumerKeyAndSecret.KeyType.RSA_PRIVATE) { consumer = new OAuthConsumer(null, cks.ConsumerKey, null, provider); consumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.RSA_SHA1); consumer.setProperty(RSA_SHA1.X509_CERTIFICATE, cks.CertName); consumer.setProperty(RSA_SHA1.X509_CERTIFICATE_PASS, cks.CertPass); } else { consumer = new OAuthConsumer(null, cks.ConsumerKey, cks.ConsumerSecret, provider); consumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.HMAC_SHA1); } return new ConsumerInfo(consumer, cks.ConsumerKey); }