Uploaded image for project: 'Apache Oltu'
  1. Apache Oltu
  2. OLTU-130

[Doc] POST to resource server with authentication

    XMLWordPrintableJSON

Details

    • Task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • oauth2-0.31
    • None
    • oauth2-client

    Description

      There seems to be no feature to post a resource to the server with authentication. But that's something almost every application needs. Below you'll find my current solution.

      I would provide a patch, but I find the client code very confusing (nested classes in OAuthClientRequest; inconsistent naming of OAuthRequestBuilder and subclass OAuthBearerClientRequest; overengineered OAuthParametersApplier and its subclasses).

      Best regards,
      Christian

      OAuthBearerClientPostRequest.java
      package org.apache.oltu.oauth2.client.request;
      
      import org.apache.oltu.oauth2.client.request.OAuthBearerClientRequest;
      import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
      import org.apache.oltu.oauth2.common.OAuth;
      import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
      
      class OAuthBearerClientPostRequest extends OAuthBearerClientRequest {
          private String contentType;
          private String body;
      
          protected OAuthBearerClientPostRequest(String url) {
              super(url);
          }
      
          // Override to get the interface of this subclass.
          @Override
          public OAuthBearerClientPostRequest setAccessToken(String accessToken) {
              super.setAccessToken(accessToken);
              return this;
          }
      
          public OAuthBearerClientPostRequest setContentType(String contentType) {
              this.contentType = contentType;
              return this;
          }
      
          public OAuthBearerClientPostRequest setBody(String body) {
              this.body = body;
              return this;
          }
      
          public OAuthClientRequest buildHeaderMessage() throws OAuthSystemException {
              OAuthClientRequest request = super.buildHeaderMessage();
              request.setBody(this.body);
              request.setHeader(OAuth.HeaderType.CONTENT_TYPE, this.contentType);
              return request;
          }
      
          /**
           * Not supported. Use #buildHeaderMessage() instead.
           *
           * @throws UnsupportedOperationException always
           */
          public OAuthClientRequest buildQueryMessage() throws OAuthSystemException {
              throw new UnsupportedOperationException("Not supported. Use #buildHeaderMessage() instead.");
          }
      
          /**
           * Not supported. Use #buildHeaderMessage() instead.
           *
           * @throws UnsupportedOperationException always
           */
          public OAuthClientRequest buildBodyMessage() throws OAuthSystemException {
              throw new UnsupportedOperationException("Not supported. Use #buildHeaderMessage() instead.");
          }
      }
      

      Attachments

        Activity

          People

            asanso Antonio Sanso
            strempferc Christian
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: