Search in sources :

Example 1 with Token

use of org.apache.cxf.rs.security.oauth.client.OAuthClientUtils.Token in project tesb-rt-se by Talend.

the class RestaurantReservationService method completeReservation.

@GET
@Path("complete")
@Produces({ "text/html", "application/xml;q=0.9" })
public Response completeReservation(@QueryParam("oauth_token") String token, @QueryParam("oauth_verifier") String verifier) {
    String userName = sc.getUserPrincipal().getName();
    Map<String, ReservationRequest> userRequests = requests.get(userName);
    if (userRequests == null) {
        return redirectToFailureHandler(NO_REQUEST);
    }
    ReservationRequest request = userRequests.remove(token);
    if (request == null) {
        return redirectToFailureHandler(NO_REQUEST_FOR_TOKEN);
    }
    if (verifier == null) {
        return redirectToFailureHandler(NO_VERIFIER);
    }
    LOG.info("Requesting OAuth server to replace an authorized request token with an access token");
    Token accessToken = manager.getAccessToken(request.getRequestToken(), verifier);
    if (accessToken == null) {
        return redirectToFailureHandler(NO_OAUTH_ACCESS_TOKEN);
    }
    LOG.info("Completing the reservation request for a user: " + request.getReserveName());
    Calendar c = null;
    try {
        String authHeader = manager.createAuthorizationHeader(accessToken, "GET", socialService.getCurrentURI().toString());
        socialService.replaceHeader("Authorization", authHeader);
        c = socialService.get(Calendar.class);
    } catch (RuntimeException ex) {
        return redirectToFailureHandler(CALENDAR_ACCESS_PROBLEM);
    }
    CalendarEntry entry = c.getEntry(request.getHour());
    if (entry.getEventDescription() == null || entry.getEventDescription().trim().isEmpty()) {
        String address = restaurantService.post(new Form().param("name", request.getReserveName()).param("phone", request.getContactPhone()).param("hour", Integer.toString(request.getHour())), String.class);
        if (address == null) {
            return redirectToFailureHandler(NO_RESERVATION);
        }
        // update the user's calendar
        String authHeader = manager.createAuthorizationHeader(accessToken, "POST", socialService.getCurrentURI().toString());
        socialService.replaceHeader("Authorization", authHeader);
        Response response = socialService.form(new Form().param("hour", Integer.toString(request.getHour())).param("description", "Table reserved at " + address));
        boolean calendarUpdated = response.getStatus() == 200 || response.getStatus() == 204;
        return Response.ok(new ReservationConfirmation(address, request.getHour(), calendarUpdated)).build();
    } else {
        return redirectToFailureHandler(CALENDAR_BUSY);
    }
}
Also used : Response(javax.ws.rs.core.Response) CalendarEntry(oauth.common.CalendarEntry) Form(javax.ws.rs.core.Form) Calendar(oauth.common.Calendar) ReservationConfirmation(oauth.common.ReservationConfirmation) Token(org.apache.cxf.rs.security.oauth.client.OAuthClientUtils.Token) Path(javax.ws.rs.Path) Produces(javax.ws.rs.Produces) GET(javax.ws.rs.GET)

Example 2 with Token

use of org.apache.cxf.rs.security.oauth.client.OAuthClientUtils.Token in project cxf by apache.

the class TemporaryCredentialServiceTest method testGetTemporaryCredentialsURIQuery.

@Test
public void testGetTemporaryCredentialsURIQuery() throws Exception {
    Map<String, String> parameters = new HashMap<>();
    parameters.put(OAuth.OAUTH_SIGNATURE_METHOD, "HMAC-SHA1");
    parameters.put(OAuth.OAUTH_NONCE, UUID.randomUUID().toString());
    parameters.put(OAuth.OAUTH_TIMESTAMP, String.valueOf(System.currentTimeMillis() / 1000));
    String uri = HOST + OAuthServer.PORT + TEMPORARY_CREDENTIALS_URL;
    WebClient wc = WebClient.create(uri);
    Token t = OAuthClientUtils.getRequestToken(wc, new OAuthClientUtils.Consumer(OAuthTestUtils.CLIENT_ID, OAuthTestUtils.CLIENT_SECRET), URI.create(OAuthTestUtils.CALLBACK), parameters);
    assertNotNull(t);
    assertNotNull(t.getToken());
    assertNotNull(t.getSecret());
}
Also used : HashMap(java.util.HashMap) Token(org.apache.cxf.rs.security.oauth.client.OAuthClientUtils.Token) OAuthClientUtils(org.apache.cxf.rs.security.oauth.client.OAuthClientUtils) WebClient(org.apache.cxf.jaxrs.client.WebClient) Test(org.junit.Test)

Example 3 with Token

use of org.apache.cxf.rs.security.oauth.client.OAuthClientUtils.Token in project tesb-rt-se by Talend.

the class RestaurantReservationService method reserveTable.

@POST
@Path("table")
public Response reserveTable(@FormParam("name") String name, @FormParam("phone") String phone, @FormParam("hour") int hour) {
    LOG.info("Reservation request from a user " + name + " has been received");
    LOG.info("Requesting a temporarily token from the OAuth server");
    URI callback = getBaseUriBuilder().path("complete").build();
    ReservationRequest request = new ReservationRequest();
    request.setReserveName(name);
    request.setContactPhone(phone);
    request.setHour(hour);
    Token requestToken = manager.getRequestToken(callback, request);
    if (requestToken == null) {
        return redirectToFailureHandler(NO_OAUTH_REQUEST_TOKEN);
    }
    request.setRequestToken(requestToken);
    String userName = sc.getUserPrincipal().getName();
    synchronized (requests) {
        Map<String, ReservationRequest> userRequests = requests.get(userName);
        if (userRequests == null) {
            userRequests = new HashMap<String, ReservationRequest>();
            requests.put(userName, userRequests);
        }
        userRequests.put(requestToken.getToken(), request);
    }
    LOG.info("Persisting the reservation details and redirecting" + " the current user to OAuth Authorization endpoint");
    // Create a request token request and redirect
    return Response.seeOther(manager.getAuthorizationServiceURI(requestToken.getToken())).build();
}
Also used : Token(org.apache.cxf.rs.security.oauth.client.OAuthClientUtils.Token) URI(java.net.URI) Path(javax.ws.rs.Path) POST(javax.ws.rs.POST)

Aggregations

Token (org.apache.cxf.rs.security.oauth.client.OAuthClientUtils.Token)3 Path (javax.ws.rs.Path)2 URI (java.net.URI)1 HashMap (java.util.HashMap)1 GET (javax.ws.rs.GET)1 POST (javax.ws.rs.POST)1 Produces (javax.ws.rs.Produces)1 Form (javax.ws.rs.core.Form)1 Response (javax.ws.rs.core.Response)1 Calendar (oauth.common.Calendar)1 CalendarEntry (oauth.common.CalendarEntry)1 ReservationConfirmation (oauth.common.ReservationConfirmation)1 WebClient (org.apache.cxf.jaxrs.client.WebClient)1 OAuthClientUtils (org.apache.cxf.rs.security.oauth.client.OAuthClientUtils)1 Test (org.junit.Test)1