Authenticate User for Embedding
{ authenticateUserEmbed }
Generates an access authentication token for the given user to use the embedded content functionality.
Method
/API3/authentication/authenticateUserEmbed
- Enterprise Admin
- Domain Admin
- Pro
- Analyst
- Viewer
- Basic
Input Parameters
Name
userCredentials
Object Type
Description
The user credential object used to set a user's login settings.
Output Response
Successful Result Code
200
Response Type
string
Description of Response Type
The response is the security token as a base64 string. It is usually stored in a cookie.
Notes
The security token is a string that needs to be added to a cookie on the third party host page for any embedded content to ensure the access is authorized.
Examples
User Embed Authentication (C#):
This example demonstrates how to authenticate users for embedding.
using System;
using System.Linq;
using System.Web;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace CsWebSite
{
public partial class Default : System.Web.UI.Page
{
public const String API_PATH = "http://mySite.com/API3/";
protected void Page_Load(object sender, EventArgs e)
{
//logging the user for embed
String adminTokenEmbed = getToken("authenticateUserEmbed", new
{
userName = "adminUser1",
password = "abc123!",
domain = "myEmbedSite.com"
});
//alternative embed using the admim user token (so not requiring the user's password)
String userTokenEmbed = getToken("authenticateUserEmbedByToken", new
{
userIdentity = "userName",
token = adminTokenEmbed
});
//this cookie should be applied at myEmbedSite.com, assuming myEmbedSite.com is installed on a different domain
Response.Cookies.Add(new HttpCookie("PyramidEmbeddedAuth", userTokenEmbed));
}
//generic method for getting the token via REST
private String getToken(String service, Object data)
{
HttpClient client = new HttpClient();
StringContent content = null;
content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
Task<HttpResponseMessage> response = client.PostAsync(API_PATH + "authentication/" + service, content);
return response.Result.Content.ReadAsStringAsync().Result;
}
//generic method for running REST methods
private JToken callApi(String service, Object data, String token)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("paToken", token);
StringContent content = null;
content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
Task>HttpResponseMessage< response = client.PostAsync(API_PATH + service, content);
String resultStr = response.Result.Content.ReadAsStringAsync().Result;
if (resultStr.Count() == 0)
{
return null;
}
return JsonConvert.DeserializeObject>JObject<(resultStr)["data"];
}
}
}
User Embed Authentication (Java):
This example demonstrates how to authenticate users for embedding.
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.json.simple.JSONObject;
import java.io.IOException;
import java.net.InetSocketAddress;
public class Main {
private static final String pyramidPath = "http://mySite.com/API3/";
public static void main(String[] args) throws IOException {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/embed", new EmbedHandler());
server.setExecutor(null); // creates a default executor
server.start();
}
private static class EmbedHandler implements HttpHandler {
@Override
public void handle(HttpExchange httpExchange) throws IOException {
//logging the user
JSONObject adminCredentials = new JSONObject();
adminCredentials.put("userName", "adminUser1");
adminCredentials.put("password", "abc123!");
adminCredentials.put("domain", "myEmbedSite.com");
String adminToken = getToken("authenticateUserEmbed", adminCredentials);
//getting user's embed token using the admin's authenctication token
JSONObject userCredentials = new JSONObject();
adminCredentials.put("userIdentity", "JohnSmith");
adminCredentials.put("token", adminToken);
String userToken = getToken("authenticateUserEmbedByToken", userCredentials);
//setting the cookie PyramidEmbeddedAuth to userToken
byte[] message = "you logged in".getBytes();
httpExchange.getResponseHeaders().add("Set-Cookie", "PyramidEmbeddedAuth=" + userToken);
httpExchange.sendResponseHeaders(200, -1);
httpExchange.getResponseBody().write(message);
httpExchange.close();
}
}
protected static String getToken(String service, JSONObject data) throws IOException {
return sendPost("authentication/" + service, data.toJSONString());
}
protected static String sendPost(String path, String data) throws IOException {
try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
String address = pyramidPath + path;
HttpPost request = new HttpPost(address);
StringEntity params = new StringEntity(data);
request.addHeader("content-type", "application/x-www-form-urlencoded");
request.setEntity(params);
CloseableHttpResponse response = httpClient.execute(request);
return new BasicResponseHandler().handleResponse(response);
}
}
}
Code Snippets
TypeScript
Curl
Java
C#
Python
PHP
curl -X POST \
-H "Accept: text/plain,text/plain;charset=utf-8" \
-H "Content-Type: application/json" \
"http://Your.Server.URL/API3/authentication/authenticateUserEmbed" \
-d '{
"password" : "password",
"domain" : "domain",
"customData" : "customData",
"username" : "username"
}'
import com.pyramidanalytics.*;
import com.pyramidanalytics.auth.*;
import com.pyramidanalytics.model.*;
import com.pyramidanalytics.api.AuthenticationServiceApi;
import java.util.*;
import java.time.*;
public class AuthenticationServiceApiExample {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("http://Your.Server.URL/");
// Create an instance of the API class
AuthenticationServiceApi apiInstance = new AuthenticationServiceApi();
// Initialize the userCredentials parameter object for the call
UserCredentials userCredentials = ; // Create the input object for the operation, type: UserCredentials
try {
String result = apiInstance.authenticateUserEmbed(userCredentials);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling AuthenticationServiceApi#authenticateUserEmbed");
e.printStackTrace();
}
}
}
import * as PyramidAnalyticsWebApi from "com.pyramidanalytics";
// Create an instance of the API class
const api = new PyramidAnalyticsWebApi.AuthenticationServiceApi("http://Your.Server.URL")
const userCredentials = ; // {UserCredentials}
api.authenticateUserEmbed(userCredentials).then(function(data) {
console.log('API called successfully. Returned data: ' + data);
}, function(error) {
console.error(error);
});
using System;
using System.Diagnostics;
using PyramidAnalytics.Sdk.Api;
using PyramidAnalytics.Sdk.Client;
using PyramidAnalytics.Sdk.Model;
public class authenticateUserEmbedExample
{
public static void Main()
{
Configuration conf = new Configuration();
conf.BasePath = "http://Your.Server.URL/";
GlobalConfiguration.Instance = conf;
// Create an instance of the API class
var apiInstance = new AuthenticationServiceApi();
// Initialize the userCredentials parameter object for the call
var userCredentials = new UserCredentials(); // UserCredentials |
try {
// Generates an access authentication token for the given user to use the embedded content functionality.
string result = apiInstance.authenticateUserEmbed(userCredentials);
Debug.WriteLine(result);
} catch (Exception e) {
Debug.Print("Exception when calling AuthenticationServiceApi.authenticateUserEmbed: " + e.Message );
}
}
}
import com.pyramidanalytics
from com.pyramidanalytics import ApiException
from com.pyramidanalytics import AuthenticationServiceApi
from pprint import pprint
api_config = com.pyramidanalytics.Configuration(host = 'http://Your.Server.URL')
with com.pyramidanalytics.ApiClient(api_config) as api_client:
# Create an instance of the API class
api_instance = AuthenticationServiceApi(api_client)
# Initialize the userCredentials parameter object for the call
userCredentials = # UserCredentials |
try:
# Generates an access authentication token for the given user to use the embedded content functionality.
api_response = api_instance.authenticate_user_embed(userCredentials)
pprint(api_response)
except ApiException as e:
print("Exception when calling AuthenticationServiceApi->authenticateUserEmbed: %s\n" % e)
<?php
require_once(__DIR__ . '/vendor/autoload.php');
OpenAPITools\Client\Configuration::getDefaultConfiguration()->setHost('http://Your.Server.URL');
// Create an instance of the API class
$api_instance = new OpenAPITools\Client\Api\AuthenticationServiceApi();
$userCredentials = ; // UserCredentials |
try {
$result = $api_instance->authenticateUserEmbed($userCredentials);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling AuthenticationServiceApi->authenticateUserEmbed: ', $e->getMessage(), PHP_EOL;
}
?>