Cisco WebEx Social API Reference Guide, Release 3.1
Authorization and Authentication
Downloads: This chapterpdf (PDF - 256.0KB) The complete bookPDF (PDF - 16.07MB) | Feedback

Authorization and Authentication

Table Of Contents

Authorization and Authentication

Overview

OAuth 1.0a

OAuth 2.0

xAuth

Detailed OAuth 1.0a Authorization Flow for the Cisco WebEx Social API

OAuth 1.0a Authorization Flow Step 1: Add an API Consumer

OAuth 1.0a Authorization Flow Step 2: Get Request Token

OAuth 1.0a Authorization Flow Step 3: Get User Authorization

OAuth 1.0a Authorization Flow Step 4: Exchange Request Token for Access Token

OAuth 1.0a Authorization Flow Step 5: Refresh Access Token

Detailed OAuth 2.0 Authorization Flows for the Cisco WebEx Social API

OAuth 2.0 Authorization Code Flow

OAuth 2.0 Authorization Code Flow Step 1: Register API Client

OAuth 2.0 Authorization Code Flow Step 2: Obtain Authorization Code

OAuth 2.0 Authorization Code Flow Step 3: Exchange Authorization Code for Access Token

OAuth 2 Authorization Code Flow Step 4: Refresh Access Token

OAuth2 Implicit Flow

OAuth 2.0 Implicit Flow Step 1: Register API Client

OAuth 2.0 Implicit Flow Step 2: Generate an Access Token

Using an OAuth Access Token in API Requests

Using an OAuth 1.0a Access Token in API Requests

Using an OAuth 2.0 Access Token in API Requests

Using xAuth for Trusted Clients


Authorization and Authentication


Cisco WebEx Social API requests must come through an authorized API consumer or API client and be issued by an authenticated Cisco WebEx Social user. The Cisco WebEx Social API uses the Open Authorization and the xAuth protocols for such authorization and authentication.

This chapter describes the use of OAuth 1.0a, OAuth 2.0, and xAuth with the Cisco WebEx Social API. It includes these topics:

Overview

Detailed OAuth 1.0a Authorization Flow for the Cisco WebEx Social API

Detailed OAuth 2.0 Authorization Flows for the Cisco WebEx Social API

Using an OAuth Access Token in API Requests

Using xAuth for Trusted Clients

Overview

OAuth is an open authentication protocol that enables an API consumer or API client (an application that enables the API to access Cisco WebEx Social resources and entities) to act on your behalf without you needing to share your login credentials. The term API consumer applies to OAuth 1.0a and xAuth. The term API client applies to OAuth 2.0

With OAuth, requests to access protected Cisco WebEx Social resources are signed to verify the authenticity of the request and that you have permission to access the resources. For example, if you execute an API operation to access the resource that represents the community with the identifier 123, the operation returns that resource only if you are an authenticated user with permission to access that community, and OAuth enables this authentication.

Cisco WebEx Social uses the 3-legged OAuth process, which involves the Cisco WebEx Social server, an API consumer or API client, and a user.

The xAuth protocol is a modification of OAuth and provides an alternate method for trusted devices and applications to access Cisco WebEx Social data. To use xAuth, LDAP authentication must be enabled and configured in Cisco WebEx Social as described in the "LDAP Authentication" section in Cisco WebEx Social Administration Guide.

For additional information about OAuth and the request parameters that this chapter describes, see the OAuth Core 1.0 Revision A specification or the OAuth 2.0 Authorization Framework, which are available online.

To determine which authentication protocol is supported for your deployment, consult your system administrator.

OAuth 1.0a

OAuth 1.0a provides these general functions:

API consumer authorization, which allows an API consumer to access Cisco WebEx Social

User authentication, which authenticates an API user to Cisco WebEx Social

OAuth uses two sets of credentials. One set identifies an API consumer that executes the operations. The other set identifies the Cisco WebEx Social resource owners.

The OAuth authorization flow consists of these steps, which this chapter describes in detail:

1. Add API Consumer—Register an API consumer with Cisco WebEx Social and receive a Consumer Key and a Consumer Secret.

2. Get Request Token—Obtain a temporary token, called a Request Token, to be used in the Get User Authorization authorization step.

3. Get User Authorization—Provide the Request Token as a query parameter and receive a verification code for the Request Token.

4. Exchange Request Token for Access Token—Obtain an Access Token in exchange for the Request Token. The Access Token provides authorization for the API consumer to access Cisco WebEx Social data.

5. Refresh Access Token (optional)—Obtain a new Access Token if the current one expires.

OAuth 2.0

Cisco WebEx Social supports the OAuth 2.0 authorization code flow and the implicit flow, which provide these general functions:

API client authorization, which allows an API client to access Cisco WebEx Social

User authentication, which authenticates an API user to Cisco WebEx Social

The OAuth 2.0 authorization code flow consists of these general steps, which this chapter describes in detail:

1. Register API Client—Register an API client with Cisco WebEx Social and receive information that is required to get an Authorization Code.

2. Get Authorization Code—Obtain an Authorization Code from an authorization server.

3. Exchange Authorization Code for Access Token—Provide the Authorization Code and related information and receive an Access Token. The Access Token provides authorization for the API client to access Cisco WebEx Social data.

4. Refresh Access Token (optional)—Obtain a new Access Token if the current one expires.

The OAuth 2.0 implicit flow consists of these general steps, which this chapter describes in detail:

1. API Client Registration—Register an API client with Cisco WebEx Social and receive information that is required to get an Authorization Code

2. Generate Access Token—Request an authorization endpoint to generate and provide an Access Token .The Access Token provides authorization for the API client to access Cisco WebEx Social data.

xAuth

You can use the Cisco WebEx Social API with a trusted device, such as a mobile client, or with a trusted application. A device or application is considered to be trusted when it maintains your Cisco WebEx Social login credentials. To use a trusted device or application to access Cisco WebEx Social data via the API, you can use a modified version of OAuth, called xAuth, to provide authentication.The xAuth flow bypasses the Get Request Token and the Get User Authorization steps, which OAuth uses, and directly exchanges Cisco WebEx Social user credentials for an Access Token and Token Secret.

Detailed OAuth 1.0a Authorization Flow for the Cisco WebEx Social API

The following sections provide detailed information about the flow of the 3-legged OAuth 1.0a authorization process that is implemented for the Cisco WebEx Social API:

OAuth 1.0a Authorization Flow Step 1: Add an API Consumer

OAuth 1.0a Authorization Flow Step 2: Get Request Token

OAuth 1.0a Authorization Flow Step 3: Get User Authorization

OAuth 1.0a Authorization Flow Step 4: Exchange Request Token for Access Token

OAuth 1.0a Authorization Flow Step 5: Refresh Access Token


Note For additional information about requirements for specific request parameters that the following sections describe, see the OAuth Core 1.0 Revision A specification, which is available online.


OAuth 1.0a Authorization Flow Step 1: Add an API Consumer

Before a Cisco WebEx Social API consumer can successfully execute an API request, the API consumer must sign up with Cisco WebEx Social and provide information about itself. This process registers the API consumer with Cisco WebEx Social.

To perform this process, you execute the Add an API Consumer resource operation, in which you provide a set of information with the request. For information about executing this operation, see the "Add an API Consumer" section.

After the API consumer is registered, you receive a Consumer Key and a Consumer Secret. The Consumer Key identifies the API consumer to Cisco WebEx Social. The Consumer Key and Consumer Secret are used when you request a Request Token.

OAuth 1.0a Authorization Flow Step 2: Get Request Token

After an API consumer is registered with Cisco WebEx Social, it must provide the Consumer Key and Consumer Secret that it received to obtain a Request Token. The Request Token is a temporary token that is used in the Get User Authorization.

To obtain a Request Token, you execute the Get Request Token operation, in which you provide the Consumer Key, Consumer Secret, and additional information.

Request

HTTP Method
URI

GET

POST

http://server[:port_number]/quadopen/oauth/request_token

where:

server—Host name or IP address of the Cisco WebEx Social server.

port_number—Port number on which the Cisco WebEx Social server listens for API requests. The default value is 80.


Request Parameters

A Get Request Token request includes the following request parameters:

Request Parameter
Description

oauth_consumer_key

Consumer Key that was received as described in the "OAuth 1.0a Authorization Flow Step 1: Add an API Consumer" section.

oauth_nonce

Unique random string that the API consumer provides to allow the Cisco WebEx Social server to verify that the request has not yet been made.

oauth_signature

Signature that verifies the request. Use the Consumer Secret to generate this signature. (The Consumer Secret was received as described in the "OAuth 1.0a Authorization Flow Step 1: Add an API Consumer" section.)

oauth_signature_method

Signing algorithm that is used generate the signature.

Must be either PLAINTEXT or HMAC-SHA1.

oauth_timsetamp

Timestamp that indicates when this request is submitted.

This value must be specified in Unix time, which is the number of seconds since January 1, 1970 00:00:00 GMT, excluding leap seconds.

oauth_version

OAuth version being used. Must be 1.0.

oauth_callback

Callback URL to which Cisco WebEx Social redirects after the user receives authorized access to Cisco WebEx Social data.


The request parameters can be placed in any of these ways:

In the authorization header of a GET or POST request. In this case, use Authorization: OAuth in the header.

As the body of a POST request. In this case, use
Content-Type: application/x-www-form-urlencoded in the header.

As query parameters in a request. The first query parameter must be preceded by a question mark (?). Separate each query parameter with an ampersand (&).

The following example shows a Get Request Token request that uses query parameters in a GET request:

GET http://api.quad.cisco.com/quadopen/oauth/request_token
?oauth_consumer_key=aoi1794g97l3987
&oauth_nonce=j2093874jajsl39glj39pjwh039098q
&oauth_signature=aj07%saldkj3nlkn%flkenagie16
&oauth_signature_method=HMAC-SHA1
&oauth_timestamp=1181287363
&oauth_version=1.0
&oauth_callback="http://yoursite.com/callback"

Response

The response to a Get Request Token request includes the following response parameters:

Response Parameter
Description

oauth_token

Request Token.

oauth_token_secret

Token Secret, which is associated with the Request Token.

oauth_callback_confirmed

Confirms that you are using Version 1.0a of the OAuth protocol. Always returns true.

xoauth_user_auth_url

URL of the Cisco WebEx Social Get User Authorization page.


The following example shows a response to a Get Request Token request:

oauth_token=aheoiasyslk&
oauth_token_secret=hjsiwaojshyh&
oauth_callback_confirmed=true&
xoauth_user_auth_url=http%3A%2Fapi.quad.cisco.com%2Foauth%2Fuser_auth%3Foauth_token 
    %3Daheoiasyslk

OAuth 1.0a Authorization Flow Step 3: Get User Authorization

After an API consumer receives a Request Token, the API requires you to authenticate yourself with Cisco WebEx Social before continuing. After you are authenticated, you are prompted to authorize the API consumer to access Cisco WebEx Social data.

To obtain user authorization, you execute the Get User Authorization operation, in which you provide the Request Token as a query parameter and receive a verification code (oauth_verifier) for the Request Token.

Request

HTTP Method
URI

GET

POST

http://server[:port_number]/quadopen/oauth/user_auth

where:

server—Host name or IP address of the Cisco WebEx Social server.

port_number—Port number on which the Cisco WebEx Social server listens for API requests. The default value is 80.


Request Parameters

A Get User Authorization request includes the following request parameter:

Request Parameter
Description

oauth_token

Request Token that was received as described in the "OAuth 1.0a Authorization Flow Step 2: Get Request Token" section.


This request parameter must be included in the HTTP as a query parameter in the request. Precede this parameter with a question mark (?).

The following example shows a Get User Authorization request:

GET http://api.quad.cisco.com/oauth/user_auth?oauth_token=pwiajshs

Response

When you log in to Cisco WebEx Social, you are prompted to authorize the API consumer that you are using. After you do so, you receive a response that includes the following response parameters, which are appended to the callback URL:

Response Parameter
Description

oauth_token

Request Token that was received as described in the "OAuth 1.0a Authorization Flow Step 2: Get Request Token" section.

oauth_verifier

Verification code that is associated with the Request Token. This code and the Request Token will be exchanged for an Access Token.

The verification code expires at the same time as its associated Request Token.


The following example shows a response to a Get User Authorization request:

Location: http://www.cisco.com?oauth_token=ajeoie86elns&oauth_verifier=9873072\r\n
 
   

A particular Request Token cannot be used for more than one login ID and Access Token request.

OAuth 1.0a Authorization Flow Step 4: Exchange Request Token for Access Token

After an API consumer is authorized to access Cisco WebEx Social data, the API consumer exchanges the Request Token for an Access Token. The Access Token provides authorization for the API consumer to access Cisco WebEx Social data.

To obtain an Access Token, you execute the Exchange Request Token for Access Token operation, in which you provide the Request Token and related information.

Request

HTTP Method
URI

GET

POST

http://server[:port_number]/quadopen/oauth/access_token

where:

server—Host name or IP address of the Cisco WebEx Social server.

port_number—Port number on which the Cisco WebEx Social server listens for API requests. The default value is 80.


Request Parameters

An Exchange Request Token for Access Token request includes the following request parameters:

Request Parameter
Description

oauth_consumer_key

Consumer Key that was received as described in the "OAuth 1.0a Authorization Flow Step 1: Add an API Consumer" section.

oauth_nonce

Unique random string that the API consumer provides to allow the Cisco WebEx Social server to verify that the request has not yet been made.

oauth_signature

Signature that verifies the request. Use the Consumer Secret and Token Secret concatenated with an ampersand (&) to generate this signature. (The Consumer Secret was provided as described in the "OAuth 1.0a Authorization Flow Step 1: Add an API Consumer" section. The Token Secret was provided as described in the "OAuth 1.0a Authorization Flow Step 2: Get Request Token" section).

If you are using the PLAINTEXT signature method, use an encoded & (%26) to concatenate this string. If you are using HMAC-SHA1, use an unencoded &.

oauth_signature_method

Signing algorithm that is used generate the signature.

Must be either PLAINTEXT or HMAC-SHA1.

oauth_timestamp

Timestamp that indicates when this request is submitted.

This value must be specified in Unix time, which is the number of seconds since January 1, 1970 00:00:00 GMT, excluding leap seconds.

oauth_token

Request Token that was received as described in the "OAuth 1.0a Authorization Flow Step 2: Get Request Token" section.

oauth_version

OAuth version being used. Must be 1.0.

oauth_verifier

Verification code that is associated with the Request Token. This code was received as described in the "OAuth 1.0a Authorization Flow Step 3: Get User Authorization" section.


The request parameters can be placed in any of these ways:

In the authorization header of a GET or POST request. In this case, use Authorization: OAuth in the header.

As the body of a POST request. In this case, use
Content-Type: application/x-www-form-urlencoded in the header.

As query parameters in a request. The first query parameter must be preceded by a question mark (?). Separate each query parameter with an ampersand (&).

The following example shows an Exchange Request Token for Access Token request that uses query parameters in a GET request:

GET http://api.quad.cisco.com/quadopen/oauth/access_token
?oauth_consumer_key=aoi1794g97l3987
&oauth_nonce=jw398adkh389wesd8w3knsg
&oauth_signature=aj07%saldkj3nlkn%flkenagie16
&oauth_signature_method=HMAC-SHA1
&oauth_timestamp=1202709273
&outh_token=pwiajshs
&oauth_version=1.0
&oauth_verifier=9873qnsa38s

Response

The response to an Exchange Request Token for Access Token request includes the following response parameters:

Response Parameter
Description

oauth_token

Access Token, which provides the API consumer with access to Cisco WebEx Social data.

oauth_token_secret

Secret associated with the Access Token.

oauth_session_handle

Credential used to refresh an expired valid Access Token.

quad_openapi_baseurl

URL-encoded base URL of the Cisco WebEx Social API operations, in the following format:

http://server[:port_number]/api/quad/rest

where:

server—Host name or IP address of the Cisco WebEx Social server.

port_number—Port number on which the Cisco WebEx Social server listens for API requests. The default value is 80.

xoauth_user_id

Cisco WebEx Social User identifier that is associated with this Access Token.


The following example shows a response to an Exchange Request Token for Access Token request:

oauth_token=kjhw83akjKJBE098mlklm09uNW&
oauth_token_secret=jaonqzc&
oauth_session_handle=dshj987qNLKNa3987nskSszn987LKJvlk&
quad_openapi_baseurl=http%3A%2F%2Fwebexsocial%2Fapi%2Fquad%2Frest&
xoauth_user_id=190206987

OAuth 1.0a Authorization Flow Step 5: Refresh Access Token

By default, an Access Token expires 60 minutes after it is issued. If an Access Token expires, you can obtain a new one so that you can continue your API session. This process is called refreshing an Access Token.

To refresh an Access Token, you execute the Refresh Access Token operation, in which you provide the expired Access Token and related information.

Request

HTTP Method
URI

GET

POST

http://server[:port_number]quadopen/oauth/refresh_access_token

where:

server—Host name or IP address of the Cisco WebEx Social server.

port_number—Port number on which the Cisco WebEx Social server listens for API requests. The default value is 80.


Request Parameters

A Refresh Access Token request includes the following request parameters:

Request Parameter
Description

oauth_consumer_key

Consumer Key that was received as described in the "OAuth 1.0a Authorization Flow Step 1: Add an API Consumer" section. (This Consumer Key also was provided as described in the "OAuth 1.0a Authorization Flow Step 4: Exchange Request Token for Access Token" section.)

oauth_nonce

Unique random string that the API consumer provides to allow the Cisco WebEx Social server to verify that the request has not yet been made.

oauth_signature

Signature that verifies the request. Use the Consumer Secret and Token Secret concatenated with an ampersand (&) to generate this signature. (The Consumer Secret was provided as described in the "OAuth 1.0a Authorization Flow Step 1: Add an API Consumer" section. The Token Secret was provided as described in the "OAuth 1.0a Authorization Flow Step 2: Get Request Token" section).

If you are using the PLAINTEXT signature method, use an encoded & (%26) to concatenate this string. If you are using HMAC-SHA1, use an unencoded &.

oauth_signature_method

Signing algorithm that is used generate the signature.

Must be either PLAINTEXT or HMAC-SHA1.

oauth_timestamp

Timestamp that indicates when this request is submitted.

This value must be specified in Unix time, which is the number of seconds since January 1, 1970 00:00:00 GMT, excluding leap seconds.

oauth_token

Request Token that was received as described in the "OAuth 1.0a Authorization Flow Step 2: Get Request Token" section.

oauth_session_handle

Credential used to refresh an expired valid Access Token. This credential was received as described in the "OAuth 1.0a Authorization Flow Step 4: Exchange Request Token for Access Token" section.


The request parameters can be placed in any of these ways:

In the authorization header of a GET or POST request. In this case, use Authorization: OAuth in the header.

As the body of a POST request. In this case, use
Content-Type: application/x-www-form-urlencoded in the header.

As query parameters in a request. The first query parameter must be preceded by a question mark (?). Separate each query parameter with an ampersand (&).

The following example shows a Refresh Access Token request that uses query parameters in a GET request:

GET http://api.quad.cisco.com/quadopen/oauth/refresh_access_token
?oauth_consumer_key=aoi1794g97l3987
&oauth_nonce=mbeoih987234nlkeoi099
&oauth_session_handle=dshj987qNLKNa3987nskSszn987LKJvlk&
&oauth_signature=aj07%saldkj3nlkn%flkenagie16
&oauth_signature_method=HMAC-SHA1
&oauth_timestamp=1201259376
&outh_token=pwiajshs

Response

The response to a Refresh Access Token request includes the following response parameters:

Response Parameter
Description

oauth_token

Access Token, which provides the API consumer with access to Cisco WebEx Social data

oauth_token_secret

Secret associated with the Access Token

oauth_session_handle

Credential used to refresh an expired valid Access Token

quad_openapi_baseurl

URL-encoded base URL of the Cisco WebEx Social API operations, in the following format:

http://server[:port_number]/api/quad/rest

where:

server—Host name or IP address of the Cisco WebEx Social server.

port_number—Port number on which the Cisco WebEx Social server listens for API requests. The default value is 80.

xoauth_user_id

Cisco WebEx Social User identifier that is associated with this Access Token


The following example shows a response to a Refresh Access Token request:

oauth_token=kjhw83akjKJBE098mlklm09uNW&
oauth_token_secret=jaonqzc&
oauth_session_handle=dshj987qNLKNa3987nskSszn987LKJvlk&
quad_openapi_baseurl=http%3A%2F%2webexsocial%2Fapi%2Fquad%2Frest&
xoauth_user_id=190206987

Detailed OAuth 2.0 Authorization Flows for the Cisco WebEx Social API

Cisco WebEx Social supports the authorization code and the implicit flows when using OAuth 2.0. The following sections provide additional information about these flows:

OAuth 2.0 Authorization Code Flow

OAuth2 Implicit Flow


Note For more detailed information about these OAuth 2.0 authorization flows, including requirements for specific request parameters that the following sections describe, see the OAuth 2.0 Authorization Framework specification, which is available online.


OAuth 2.0 Authorization Code Flow

In the OAuth 2.0 authorization code flow, an API client requests an authorization code from an authorization server, which is an intermediary between the API client and the resource owner. After receiving a request for an authorization code, the authorization server authenticates the resource owner, obtains authorization, and directs the resource owner back to the API client with an authorization code. Then API client then sends a token request with the authorization code to the token endpoint and receives and Access Token, which is then used to authorize API requests.

The following sections provide detailed information about the OAuth 2.0 authorization code flow for the Cisco WebEx Social API:

OAuth 2.0 Authorization Code Flow Step 1: Register API Client

OAuth 2.0 Authorization Code Flow Step 2: Obtain Authorization Code

OAuth 2.0 Authorization Code Flow Step 3: Exchange Authorization Code for Access Token

OAuth 2 Authorization Code Flow Step 4: Refresh Access Token

OAuth 2.0 Authorization Code Flow Step 1: Register API Client

Before a Cisco WebEx Social API client can successfully execute an API request, the API client must sign up with Cisco WebEx Social and provide information about itself. This process registers the API client with Cisco WebEx Social.

To perform this process, you execute the Register an API Client resource operation, in which you provide a set of information with the request. For information about executing this operation, see the "Register an API Client" section.

After the API client is registered, you receive a Client Identifier and a Client Secret. The Client Identifier identifies the API client to Cisco WebEx Social. The Client Secret is used when you request an Request Token.

OAuth 2.0 Authorization Code Flow Step 2: Obtain Authorization Code

After an API client is registered with Cisco WebEx Social, it must obtain an authorization code from an authorization server.

To obtain an Authorization Code, you execute the Obtain Authorization Code operation, in which you provide the required response type and information that was obtained during the API client registration process. If the user has not already authorized the API client, Cisco WebEx Social prompts the user for this authorization when the user accesses Cisco WebEx Social with this operation.

Request

HTTP Method
URI

GET

POST

http://server[:port_number]quadopen/oauth2/authorize

where:

server—Host name or IP address of the Cisco WebEx Social server.

port_number—Cisco WebEx Social server port number that is used for communication with the API client. The default value is 80.


Request Parameters

An Obtain Authorization Code request includes the following request parameters:

Request Parameter
Description

response_type

Type of response that the API client requires.

Must be code.

redirect_uri

(Optional) URI of the page to which a user is directed after Cisco WebEx Social authorizes the user. Include this parameter if you designated it when you registered the API client as described in the "OAuth 2.0 Authorization Code Flow Step 1: Register API Client" section.

client_id

Identifier of the API client that was obtained during the API client registration process.


The request parameters can be placed in either of these ways :

As query parameters in a request. The first query parameter must be preceded by a question mark (?). Separate each query parameter with an ampersand (&). In this case, use
Content-Type: application/x-www-form-urlencoded in the header

As the body of a POST request.

The following example shows an Obtain Authorization Code request that uses query parameters in a GET request:

GET http://api.quad.cisco.com/quadopen/oauth2/authorize
?response_type=code 
&redirect_uri=http%3A%2F%2Fyoursite.com 
&client_id=4a18a88502435e1e03fa9beff7456a9b64004794

Response

The response to an Obtain Authorization Code request includes the following response parameters:

Response Parameter
Description

code

Authorization code


The following example shows a response to an Obtain Authorization Code request:

http://yoursite.com?code=cf04ffd0-56dd-40e1-bd22-1fba77d59e45

OAuth 2.0 Authorization Code Flow Step 3: Exchange Authorization Code for Access Token

After an API client is authorized to access Cisco WebEx Social data, the API client exchanges the authorization code for an Access Token. The Access Token provides authorization for the API client to access Cisco WebEx Social data.

To obtain an Access Token, you execute the Exchange Authorization Code for Access Token operation, in which you provide the authorization code and related information.

Request

HTTP Method
URI

GET

POST

http://server[:port_number]quadopen/oauth2/token

where:

server—Host name or IP address of the Cisco WebEx Social server.

port_number—Cisco WebEx Social server port number that is used for communication with the API client. The default value is 80.


Request Parameters

An Exchange Authorization Code for Access Token request includes the following request parameters:

Request Parameter
Description

grant_type

Type of response that the API client requires.

Must be authorization_code.

redirect_uri

(Optional) URI of the page to which a user is directed after Cisco WebEx Social authorizes the user. Include this parameter if you designated it when you registered the API client as described in the "OAuth 2.0 Authorization Code Flow Step 1: Register API Client" section.

client_id

Identifier of the API client that was obtained as described in the "OAuth 2.0 Authorization Code Flow Step 1: Register API Client" section.

client_secret

Client secret that was obtained as described in the "OAuth 2.0 Authorization Code Flow Step 1: Register API Client" section.

code

Authorization code that was obtained as described in the "OAuth 2.0 Authorization Code Flow Step 2: Obtain Authorization Code" section.


The request parameters can be placed in either of these ways :

As query parameters in a request. The first query parameter must be preceded by a question mark (?). Separate each query parameter with an ampersand (&). In this case, use
Content-Type: application/x-www-form-urlencoded in the header

As the body of a POST request.

The following example shows an Exchange Authorization Code for Access Token request that uses query parameters in a GET request:

http://api.cisco.com/quadopen/oauth2/token
?grant_type=authorization_code
&redirect_uri=http%3A%2F%2Fyoursite.com
&client_id=49c365dd41c94431493917c692afb6eea8bc7d64
&client_secret=5ae2f96fb255e796807dcd16cd29d71f5b7e9cc2&
code=e66fdd06-c934-40eb-a107-876f29413e3c

Response

The response to an Exchange Authorization Code for Access Token request includes the following response parameters:

Response Parameter
Description

access_token

Access token

token_type

Type of the Access Token, which is bearer

expires_in

Number of seconds from the time that the response was generated at which the Access Token expires

refresh_token

Refresh Token, which can be used to obtain a new Access Token after the Access Token expires


The following example shows a response to an Obtain Authorization Code request:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{"scope":"","token_type":"bearer","expires_in":"17999995", 
"access_token":"b5de0b7a-e0bb-4dc7-830f-7189226d9fb9", 
"refresh_token":"45eddfwe-tg5r-gf45-ggt4-6755fgyg7h67"}

OAuth 2 Authorization Code Flow Step 4: Refresh Access Token

By default, an Access Token expires 60 minutes after it is issued. If an Access Token expires, you can obtain a new one so that you can continue your API session. This process is called refreshing an Access Token.

To refresh an Access Token, you execute the Refresh Access Token operation.

Request

HTTP Method
URI

GET

POST

http://server[:port_number]quadopen/oauth2/token

where:

server—Host name or IP address of the Cisco WebEx Social server.

port_number—Cisco WebEx Social server port number that is used for communication with the API client. The default value is 80.


Request Parameters

A Refresh Access Token request includes the following request parameters:

Request Parameter
Description

response_type

Type of response that the API client requires.

Must be token.

client_id

Identifier of the API client that was obtained as described in the "OAuth 2.0 Authorization Code Flow Step 1: Register API Client" section.

grant_type

Type of response that the API client requires.

Must be refresh_token.

refresh_token

Refresh Token that was obtained as described in the "OAuth 2.0 Authorization Code Flow Step 3: Exchange Authorization Code for Access Token" section or in this section

client_secret

Client secret that was obtained as described in the "OAuth 2.0 Authorization Code Flow Step 1: Register API Client" section.


The request parameters can be placed in either of these ways :

As query parameters in a request. The first query parameter must be preceded by a question mark (?). Separate each query parameter with an ampersand (&). In this case, use
Content-Type: application/x-www-form-urlencoded in the header

As the body of a POST request.

The following example shows a Refresh Access Token request that uses query parameters in a GET request:

http://api.cisco.com/quadopen/oauth2/token 
?response_type=token 
&client_id=2c68002055453724b19eb2433e975269ef3b3e4a 
&grant_type=refresh_token 
&refresh_token=ba8d4a32-0c2f-4c37-a0af-6a1435746559 
&client_secret=4a7328c900a2a80b68de9c6aee5ecc0d8f90ab33

Response

The response to a Refresh Access Token request includes the following response parameters:

Response Parameter
Description

access_token

Access token

token_type

Type of the Access Token, which is bearer

expires_in

Number of seconds from the time that the response was generated at which the Access Token expires

refresh_token

Refresh token, which can be used to obtain a new Access Token after the Access Token expires


The following example shows a response to a Refresh Access Token request:

{"scope":"", 
"token_type":"bearer", 
"expires_in":"17999995", 
"access_token":"b5de0b7a-e0bb-4dc7-830f-7189226d9fb9", 
"refresh_token":"45eddfwe-tg5r-gf45-ggt4-6755fgyg7h67"}

OAuth2 Implicit Flow

In the OAuth 2.0 implicit flow, an authorization server issues an Access Token to an API client without requiring an Authorization Code. This approach can improve the responsiveness and efficiency of some API clients, but it is less secure than the authorization code flow.

The following sections provide detailed information about the OAuth 2.0 implicit for the Cisco WebEx Social API:

OAuth 2.0 Implicit Flow Step 1: Register API Client

OAuth 2.0 Implicit Flow Step 2: Generate an Access Token

OAuth 2.0 Implicit Flow Step 1: Register API Client

Before a Cisco WebEx Social API client can successfully execute an API request, the API client must sign up with Cisco WebEx Social and provide information about itself. This process registers the API client with Cisco WebEx Social.

To perform this process, you execute the Register an API Client resource operation, in which you provide a set of information with the request. For information about executing this operation, see the "Register an API Client" section.

After the API client is registered, you receive a Client Identifier and a Client Secret. The Client Identifier identifies the API client to Cisco WebEx Social. The Client Secret is used when you request an Request Token.

OAuth 2.0 Implicit Flow Step 2: Generate an Access Token

After an API client is authorized to access Cisco WebEx Social data, the API client requests an Access Token from an authorization endpoint. The authorization endpoint then generates and provides the Access Token. The Access Token provides authorization for the API client to access Cisco WebEx Social data.

To obtain an Access Token, you execute the Generate Access Token operation, in which you provide information about the API client and the required response type.

Request

HTTP Method
URI

GET

POST

http://server[:port_number]quadopen/oauth2/authorize

where:

server—Host name or IP address of the Cisco WebEx Social server.

port_number—Cisco WebEx Social server port number that is used for communication with the API client. The default value is 80.


Request Parameters

A Generate Access Token request includes the following request parameters:

Request Parameter
Description

client_id

Identifier of the API client that was obtained as described in the "OAuth 2.0 Implicit Flow Step 1: Register API Client" section.

redirect_uri

(Optional) URI of the page to which a user is directed after Cisco WebEx Social authorizes the user. Include this parameter if you designated it when you registered the API client as described in the "OAuth 2.0 Implicit Flow Step 1: Register API Client" section.

response_type

Type of response that the API client requires.

Must be token.


The request parameters can be placed in either of these ways :

As query parameters in a request. The first query parameter must be preceded by a question mark (?). Separate each query parameter with an ampersand (&). In this case, use
Content-Type: application/x-www-form-urlencoded in the header

As the body of a POST request.

The following example shows a Generate Access Token request that uses query parameters in a GET request:

http://api.cisco.com/quadopen/oauth2/authorize
client_id=10001 
&redirect_url=https://app.client.com/demo 
&response_type=token

Response

The response to a Generate Access Token request includes the following response parameters:

Response Parameter
Description

access_token

Access token

token_type

Type of the Access Token, which is bearer

expires_in

Number of seconds from the time that the response was generated at which the Access Token expires


The following example shows a response to a Generate Access Token request:

http://app.client.com/oauth2client/html/oauth2_implicit_flow_demo.html# 
expires_in=17996336&token_type=bearer&access_token=aed96150-dcf9-4058-baea-ff2cf1bbf0fc

Using an OAuth Access Token in API Requests

The following sections describe how to use an OAuth Access Token in an API request:

Using an OAuth 1.0a Access Token in API Requests

Using an OAuth 2.0 Access Token in API Requests

Using an OAuth 1.0a Access Token in API Requests

When you are using OAuth 1.0a, after an API consumer receives an Access Token, the API consumer can use the Access Token to access Cisco WebEx Social data.

Cisco WebEx Social supports PLAINTEXT or HMAC-SHA1 signing types for OAuth API access. When passing PLAINTEXT values, Cisco recommends that you use SSL.

The signature base string is the Consumer Secret and Token Secret concatenated with an ampersand (&). For example, assume that you want to execute an API operation to obtain information about posts. Also assume that the API consumer has registered with Cisco WebEx Social and has obtained the Consumer Key abcd1234 and the Consumer Secret xyz987. The Consumer API executes the OAuth workflow and obtains the Access Token hij555 and the Token Secret lsn776. Using the HMAC-SHA1 signature method, the concatenated string xyz987&lsn776is used as the key to obtain the OAuth signature abd873=.

Here is an example of a request that returns information about posts:

GET http://api/quad/rest/posts
Host: api.quad.cisco.com:80
Authorization: OAuth realm="http://api.quad.cisco.com/api/quad/rest/posts",
    oauth_consumer_key="asd987",
    oauth_token="aln987",
    oauth_nonce="ain825",
    oauth_timestamp="1191242096",
    oauth_signature_method="HMAC-SHA1",
    oauth_version="1.0",
    oauth_signature="alkj@2983glkj@j"

Using an OAuth 2.0 Access Token in API Requests

When you are using OAuth 2.0, after an API client receives an Access Token, the API client can use the Access Token to access Cisco WebEx Social data as follows:

1. A user submits an API request that includes an Access Token to a client application.

2. The client application makes an API call that uses the Access Token. The request must include an authorization header as this example shows:

Authorization bearer aed96150-dcf9-4058-baea-ff2cf1bbf0fc
 
   

3. The API responds with the requested resource.

4. The resource is passed to the user through the client application.

Using xAuth for Trusted Clients

The xAuth protocol provides trusted clients and applications access to Cisco WebEx Social data via the Cisco WebEx Social API. An application or client is trusted when it maintains your Cisco WebEx Social login credentials (username and password). xAuth uses these credentials obtain an Access Token directly. The Get Request Token and the Get User Authorization steps that OAuth requires are not needed. With xAuth, a request is signed only with a Consumer Secret (with Oauth, a request is signed with both a Consumer Secret and a Token Secret).

To use xAuth, LDAP authentication must be enabled and configured in Cisco WebEx Social as described in the "LDAP Authentication" section in Cisco WebEx Social Administration Guide.

When using xAuth, Cisco recommends that an API consumer use SSL to access Cisco WebEx Social. This way, Cisco WebEx Social login credentials are not exposed during a request transmission.

To use xAuth with trusted clients, you execute the Get xAuth Access Token and Access Secret operation, in which you provide the expired Access Token and related information.

Request

HTTP Method
URI

POST

http://server[:port_number]/quadopen/oauth/xauth_access_token

where:

server—Host name or IP address of the Cisco WebEx Social server.

port_number—Port number on which the Cisco WebEx Social server listens for API requests. The default value is 80.


Request Parameters

A Get xAuth Access Token and Access Secret request includes the following request parameters:

Request Parameter
Description

oauth_consumer_key

Consumer Key that was received as described in the "OAuth 1.0a Authorization Flow Step 1: Add an API Consumer" section.

oauth_nonce

Unique random string that the API consumer provides to allow the Cisco WebEx Social server to verify that the request has not yet been made.

oauth_signature

Signature that verifies the request. Use the Consumer Secret to generate this signature. (The Consumer Secret was provided as described in the "OAuth 1.0a Authorization Flow Step 1: Add an API Consumer" section.)

If you are using the PLAINTEXT signature method, add an encoded & (%26) at the end of this string. If you are using HMAC-SHA1, add an unencoded & at the end of this string.

oauth_signature_method

Signing algorithm that is used generate the signature.

Must be either PLAINTEXT or HMAC-SHA1.

oauth_timestamp

Timestamp that indicates when this request is submitted.

This value must be specified in Unix time, which is the number of seconds since January 1, 1970 00:00:00 GMT, excluding leap seconds.

oauth_version

OAuth version being used. Must be 1.0.

x_auth_username1

Cisco WebEx Social login username of the user that the client is obtaining a token on behalf of

x_auth_password1

Cisco WebEx Social login password of the user that the client is obtaining a token on behalf of

x_auth_mode1

Authorization mode. Must be client_auth.

1 This parameter must be included either in the request body or as a query parameter in the URI. It cannot be included in the HTTP header.)


The request parameters can be placed in any of these ways:

Parameters except x_auth_username, x_auth_password, and x_auth_mode can be included in the authorization header of the request. In this case, use Authorization: OAuth in the header.

As the body of the request. In this case, use
Content-Type: application/x-www-form-urlencoded in the header.

As query parameters in a request. The first query parameter must be preceded by a question mark (?). Separate each query parameter with an ampersand (&).

The following example shows a Get xAuth Access Token and Access Secret request that uses query parameters:

POST http://api.quad.cisco.com/quadopen/oauth/xauth_access_token
?x_auth_username=admin
&x_auth_password=passwordtest
&x_auth_mode=client_auth
&oauth_consumer_key=aoi1794g97l3987
&oauth_nonce=mbeoih987234nlkeoi099
&oauth_signature=aj07%saldkj3nlkn%flkenagie16
&oauth_signature_method=HMAC-SHA1
&oauth_timestamp=1203374975
&oauth_version=1.0

Response

The response to a Get xAuth Access Token and Access Secret request includes the following response parameters:

Response Parameter
Description

oauth_token

Access Token, which provides the API consumer with access to Cisco WebEx Social data

oauth_token_secret

Secret associated with the Access Token

oauth_session_handle

Credential used to refresh an expired valid Access Token

xoauth_user_id

Cisco WebEx Social User identifier that is associated with this Access Token


The following is an example of the response to a Get xAuth Access Token and Access Secret request:

oauth_token=kjhw83akjKJBE098mlklm09uNW&
oauth_token_secret=jaonqzc&
oauth_session_handle=dshj987qNLKNa3987nskSszn987LKJvlk&
xoauth_user_id=190206987