Heroku OAuth 2.0 Scribe Spring MVC Example
ApplicationContext.xml defines herokuServiceConfig and herokuServiceProvider Bean
<bean id="herokuServiceConfig" class="com.example.oauth.OAuthServiceConfig"> <constructor-arg value="xxx" /> <constructor-arg value="xxx"/> <constructor-arg value="https://www.example.com/oauth/heroku"/> <constructor-arg value="com.example.oauth.HerokuOauthApi"/> </bean> <bean id="herokuServiceProvider" class="com.example.oauth.OAuthServiceProvider"> <constructor-arg name="config" ref="herokuServiceConfig" /> </bean>
Spring MVC Heroku OAuth Controller
package com.example.oauth.controller;
import static org.springframework.web.context.request.RequestAttributes.SCOPE_SESSION;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.scribe.model.Token;
import org.scribe.model.Verifier;
import org.scribe.oauth.OAuthService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.context.request.WebRequest;
import com.example.oauth.OAuthServiceProvider;
/**
* @author tmichels
*/
@Controller
@RequestMapping("/oauth/heroku")
public class HerokuController {
@Autowired
@Qualifier("herokuServiceProvider")
private OAuthServiceProvider herokuServiceProvider;
private static final Token EMPTY_TOKEN = null;
@RequestMapping(value="/login-heroku", method=RequestMethod.GET)
public String loginToHeroku(Map<String, Object> map, WebRequest request) {
OAuthService service = herokuServiceProvider.getService();
String authUrl = service.getAuthorizationUrl(EMPTY_TOKEN);
System.out.println("RequestToken: " + authUrl );
return "redirect:" + authUrl;
}
@RequestMapping(value={""}, method = RequestMethod.GET)
public String callback(@RequestParam(value="oauth_token", required=false) String oauthToken,
@RequestParam(value="code", required=false) String oauthVerifier, WebRequest request, Map<String, Object> map) {
OAuthService service = herokuServiceProvider.getService();
// getting access token
Verifier verifier = new Verifier(oauthVerifier);
Token accessToken = service.getAccessToken(EMPTY_TOKEN, verifier);
// store access token as a session attribute
request.setAttribute("oauthAccessToken", accessToken, SCOPE_SESSION);
ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpSession session = attr.getRequest().getSession(false); //create a new session
session.setAttribute("accessToken",accessToken);
return "settings";
}
}
HerokuOauthApi extends DefaultApi20
package com.example.oauth;
import org.scribe.builder.api.DefaultApi20;
import org.scribe.extractors.AccessTokenExtractor;
import org.scribe.extractors.JsonTokenExtractor;
import org.scribe.model.OAuthConfig;
import org.scribe.model.Verb;
public class HerokuOauthApi extends DefaultApi20{
private static final String ACCESSTOKEN = "https://id.heroku.com/oauth/token";
@Override
public String getAccessTokenEndpoint() {
return ACCESSTOKEN;
}
@Override
public String getAuthorizationUrl(OAuthConfig config) {
return String.format("https://id.heroku.com/oauth/authorize?client_id=%s&response_type=code&scope=global", config.getApiKey());
}
@Override
public Verb getAccessTokenVerb(){
return Verb.POST;
}
@Override
public AccessTokenExtractor getAccessTokenExtractor() {
return new JsonTokenExtractor();
}
}
Nicholas Allegra is absolutely not the first i - OS hacker retained by Apple.
That being said let’s take a look at the types of prevalent programs that can cause harm to your computer:.
However, if you are concerned about complete security and need help regarding virus
attacks then it is advisable to seek help from an expert in this matter.