/** * 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() ); }
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())); }