Authenticate

The Oracle Communications Session Border Controller (SBC) REST API only accepts requests over secure HTTPS connections. Unencrypted HTTP requests are rejected with a 426 Upgrade Required. To successfully authenticate to the SBC, send a POST request to the authentication endpoint using Basic Access Authentication.

Prerequisites

Prerequisite More Information
Enable HTTPS Enable HTTPS

The Authorization Header

The SBC uses Basic Authentication, so the client must send an Authorization header that contains the literal string Basic, a space, and the base64 encoding of the string admin:<password>.

For example:

Authorization: Basic YWRtaW46Y29ycmVjdCBob3JzZSBiYXR0ZXJ5IHN0YXBsZQ==

The XML response contains an <accessToken> element that contains the access token.

In subsequent calls, this access token must be passed in an Authentication header that contains the literal string Bearer, a space, and the access token.

For example:

Authorization: Bearer YWRtaW4sYWRtaW4sMjAxOC0wOC0wOSAxOToyNzowzVmM2FhNGMzZjMyZDlkNWJmYzg4O

Request an Access Token with cURL

  1. Send a POST request to the /rest/{version}/auth/token endpoint.

    Use the --user flag to automatically base64 encode a <username>:<password> string for Basic Authentication.

    curl -X POST \
        --header "Accept: application/xml" \
        --user admin:<password> \
        'https://10.0.0.2/rest/v1.1/auth/token'
  2. The response body includes an <accessToken> element that contains the access token.
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <response>
      <data>
        <accessToken>YWRtaW4sYWRtaW4sMjAxOC0wOC0wOSAxOToyNzowzVmM2FhNGMzZjMyZDlkNWJmYzg4O</accessToken>
      </data>
      <messages/>
      <links/>
    </response>
  3. Export the access token to a variable for convenient use in subsequent requests.
    export TOKEN='YWRtaW4sYWRtaW4sMjAxOC0wOC0wOSAxOToyNzowzVmM2FhNGMzZjMyZDlkNWJmYzg4O'
  4. In subsequent requests, send the access token within the Authentication header, after the key word Bearer.
    curl -X GET \
        --header "Accept: application/xml" \
        --header "Authorization: Bearer $TOKEN" \
        'https://10.0.0.2/rest/v1.1/configuration/elementTypes'

Request an Access Token with Python

The following example shows how to get and send an access token using Python.

import requests
import base64
from lxml import etree

# set the endpoint
auth_url = "https://10.0.0.2/rest/v1.1/auth/token"

# base64 encode "admin:<password>" for Basic Authentication
encoded_str = (base64.b64encode(b"admin:<password>").strip()).decode('utf8')

# create the Authorization header with the base64-encoded credentials
auth_header = { "Authorization": "Basic " + encoded_str }

# send the POST request
resp = requests.post(auth_url, headers=auth_header)

# extract the token and create an Authorization header with the token
clean_xml = resp.text.replace('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>','')
tree = etree.fromstring(clean_xml)
token = tree.xpath("//accessToken")[0].text

# include the token in all subsequent calls
token_header = { "Authorization": "Bearer " + token }