/** * Converts an {@code OAuthServiceProvider} to a {@code ServiceProvider}. * * @param serviceProvider {@code OAuthServiceProvider} to convert to {@code ServiceProvider} * @return {@code ServiceProvider} converted from the {@code OAuthServiceProvider} */ public static ServiceProvider fromOAuthServiceProvider(OAuthServiceProvider serviceProvider) { checkNotNull(serviceProvider, "serviceProvider"); return new ServiceProvider( URI.create(serviceProvider.requestTokenURL), URI.create(serviceProvider.userAuthorizationURL), URI.create(serviceProvider.accessTokenURL) ); } }
/** * Converts a {@code ServiceProvider} to an {@code OAuthServiceProvider}. * * @param serviceProvider {@code ServiceProvider} to convert to {@code OAuthServiceProvider} * @return {@code OAuthServiceProvider} converted from the {@code ServiceProvider} */ public static OAuthServiceProvider asOAuthServiceProvider(ServiceProvider serviceProvider) { checkNotNull(serviceProvider, "serviceProvider"); return new OAuthServiceProvider( serviceProvider.getRequestTokenUri().normalize().toString(), serviceProvider.getAuthorizeUri().normalize().toString(), serviceProvider.getAccessTokenUri().normalize().toString() ); }
public ConsumerToken getAccessToken(ServiceProvider serviceProvider, ConsumerToken requestTokenPair, String requestVerifier, final String consumerKey) throws ResponseException { final List<Request.Parameter> parameters = new ArrayList<Request.Parameter>(); parameters.add(new Request.Parameter(OAuth.OAUTH_TOKEN, requestTokenPair.getToken())); if (StringUtils.isNotBlank(requestVerifier)) // Added in OAuth 1.0a { parameters.add(new Request.Parameter(OAuth.OAUTH_VERIFIER, requestVerifier)); } final Request oAuthRequest = new Request(Request.HttpMethod.POST, serviceProvider.getAccessTokenUri(), parameters); final Request signedRequest = consumerService.sign(oAuthRequest, serviceProvider, requestTokenPair); final TokenAndSecret tokenAndSecret = requestToken(serviceProvider.getAccessTokenUri().toString(), signedRequest); ConsumerToken accessToken = ConsumerToken.newAccessToken(tokenAndSecret.token).tokenSecret(tokenAndSecret.secret).consumer(getConsumer(consumerKey)).build(); assert (accessToken.isAccessToken()); return accessToken; }
public ConsumerToken getRequestToken(ServiceProvider serviceProvider, final String consumerKey, String callback) throws ResponseException { final Request oAuthRequest = new Request(Request.HttpMethod.POST, serviceProvider.getRequestTokenUri(), Collections.singleton(new Request.Parameter(OAuth.OAUTH_CALLBACK, callback))); final Request signedRequest = consumerService.sign(oAuthRequest, consumerKey, serviceProvider); final com.atlassian.sal.api.net.Request tokenRequest = requestFactory.createRequest( com.atlassian.sal.api.net.Request.MethodType.POST, serviceProvider.getRequestTokenUri().toString()); tokenRequest.addRequestParameters(parameterToStringArray(signedRequest.getParameters())); final TokenAndSecret tokenAndSecret = requestToken(serviceProvider.getRequestTokenUri().toString(), signedRequest); final ConsumerToken requestToken = ConsumerToken.newRequestToken(tokenAndSecret.token) .tokenSecret(tokenAndSecret.secret) .consumer(getConsumer(consumerKey)) .build(); assert (requestToken.isRequestToken()); return requestToken; }
private void obtainAndAuthorizeRequestToken(final ApplicationLink applicationLink, final HttpServletResponse resp, final HttpServletRequest req) throws ResponseException, IOException { final Map<String, String> config = authenticationConfigurationManager.getConfiguration(applicationLink.getId(), OAuthAuthenticationProvider.class); final ServiceProvider serviceProvider = ServiceProviderUtil.getServiceProvider(config, applicationLink); final String consumerKey = getConsumerKey(applicationLink); final String redirectUrl = getRedirectUrl(req); URI baseUrl = RequestUtil.getBaseURLFromRequest(req, internalHostApplication.getBaseUrl()); final String redirectToMeUrl = baseUrl + ServletPathConstants.APPLINKS_SERVLETS_PATH + "/oauth/login-dance/" + ACCESS_PATH + "?" + APPLICATION_LINK_ID_PARAM + "=" + applicationLink.getId() + (redirectUrl != null ? "&" + REDIRECT_URL_PARAM + "=" + URLEncoder.encode(redirectUrl, "UTF-8") : ""); final ConsumerToken requestToken = oAuthTokenRetriever.getRequestToken(serviceProvider, consumerKey, redirectToMeUrl); consumerTokenStoreService.addConsumerToken(applicationLink, getRemoteUsername(req), requestToken); Map<String, String> parameters = new HashMap<String, String>(); parameters.put(OAuth.OAUTH_TOKEN, requestToken.getToken()); parameters.put(OAuth.OAUTH_CALLBACK, redirectToMeUrl); resp.sendRedirect(serviceProvider.getAuthorizeUri() + "?" + OAuth.formEncode(parameters.entrySet())); }
public ServiceProvider newServiceProvider() { return new ServiceProvider( URI.create(applicationProperties.getBaseUrl() + REQUEST_TOKEN), URI.create(applicationProperties.getBaseUrl() + AUTHORIZE), URI.create(applicationProperties.getBaseUrl() + ACCESS_TOKEN) ); } }
public static ServiceProvider getServiceProvider(Map<String, String> config, ApplicationLink applicationLink) { if (config.containsKey(AddServiceProviderManuallyServlet.CONSUMER_KEY_OUTBOUND)) { final String accessTokenUrl = makeAbsoluteUrl(config.get(AddServiceProviderManuallyServlet.SERVICE_PROVIDER_ACCESS_TOKEN_URL), applicationLink.getRpcUrl()); final String requestTokenUrl = makeAbsoluteUrl(config.get(AddServiceProviderManuallyServlet.SERVICE_PROVIDER_REQUEST_TOKEN_URL), applicationLink.getRpcUrl()); final String authorizeUrl = makeAbsoluteUrl(config.get(AddServiceProviderManuallyServlet.SERVICE_PROVIDER_AUTHORIZE_URL), applicationLink.getDisplayUrl()); return new ServiceProvider(URI.create(requestTokenUrl), URI.create(authorizeUrl), URI.create(accessTokenUrl)); } return ServiceProviderUtil.getServiceProvider(applicationLink.getRpcUrl(), applicationLink.getDisplayUrl()); }
public static ServiceProvider getServiceProvider(final URI rpcUrl, final URI displayUrl) { final URI requestTokenUri = uncheckedConcatenate(rpcUrl, "/plugins/servlet/oauth/request-token"); final URI authorizeTokenUri = uncheckedConcatenate(displayUrl, "/plugins/servlet/oauth/authorize"); final URI accessTokenUri = uncheckedConcatenate(rpcUrl, "/plugins/servlet/oauth/access-token"); return new ServiceProvider(requestTokenUri, authorizeTokenUri, accessTokenUri); }