RESTful authentication
Updated
Setup authentication for RESTful communication between your app and Agora.
Speech-to-Text RESTful API requires REST authentication. The following REST authentication methods are available:
-
Basic HTTP authentication
Generate a Base64-encoded credential with the customer ID and customer secret provided by Agora and pass the credential with the
Authorizationparameter in the request header.
Implement authentication on the server to mitigate the risk of data leakage.
Implement basic HTTP authentication
Generate Customer ID and Customer Secret
To generate a Customer ID and Customer Secret, do the following:
-
In Agora Console, click the username at the bottom of the navigation sidebar to open the account menu, then select RESTful API Keys.
-
Select Create API Key. A Customer ID and Customer Secret are generated.
-
Select Download and save the file somewhere secure — you can download it only once. In the file, Key is your Customer ID and Secret is your Customer Secret.
-
Use the Customer ID (Key) and Customer Secret (Secret) to generate a Base64-encoded credential, and pass it to the
Authorizationparameter in the HTTP request header.
Generate an authorization header using a third-party tool
For testing and debugging, you can use a third-party online tool to quickly generate your Authorization header. Enter your Customer ID as the Username and your Customer Secret as the Password. Your generated header should look like this::
Authorization: Basic NDI1OTQ3N2I4MzYy...YwZjA=aBasic authentication sample code
The following sample code implements basic HTTP authentication and sends a RESTful API request to get the basic information of all your current Agora projects.
The Agora RESTful API only supports HTTPS with TLS 1.0, 1.1, or 1.2 for encrypted communication. Requests over plain HTTP are not supported and will fail to connect.
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
"encoding/base64"
)
// HTTPS basic authentication example in Golang using the RTC SDK Server RESTful API
func main() {
// Customer ID
customerKey := "Your customer ID"
// Customer secret
customerSecret := "Your customer secret"
// Concatenate customer key and customer secret and use base64 to encode the concatenated string
plainCredentials := customerKey + ":" + customerSecret
base64Credentials := base64.StdEncoding.EncodeToString([]byte(plainCredentials))
url := "https://api.agora.io/dev/v1/projects"
method := "GET"
payload := strings.NewReader(``)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
// Add Authorization header
req.Header.Add("Authorization", "Basic " + base64Credentials)
req.Header.Add("Content-Type", "application/json")
// Send HTTP request
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}