Zum Hauptinhalt springen

Third Party Login

Bei der Anmeldung von Drittanbietern können Sie die Administratoranmeldeinformationen verwenden, um eine Sitzungs-ID für eine bestimmte Domäne oder einen bestimmten Benutzer zu erhalten, und diese ID verwenden, um sich von einer anderen Webseite (URL) als der Nebenstellenanlage aus bei dieser Domäne oder einem Benutzer der Nebenstellenanlage anzumelden. Das ist sehr nützlich, wenn Sie über Links von einer anderen Website auf eine Domäne oder einen Benutzer der Nebenstellenanlage zugreifen möchten, ohne die Anmeldeinformationen eingeben zu müssen. Die Sitzungs-IDs können vom Server von der Nebenstellenanlage abgerufen und zur Authentifizierung durch die Nebenstellenanlage an das Front-End des Servers weitergeleitet werden.

Schritte zum Einrichten eines Drittanbieter-Logins.

         POST /rest/system/session HTTP/1.1
Authorization: Basic base64encode(admin:password)
Content-Type: application/json

{
name: "3rd",
username: "admin",
domain: "domain.com"
}

OR

{
name: "3rd",
username: "40",
domain: "domain.com"
} `
  • Dadurch wird das zu verwendende Sitzungstoken zurückgegeben.

  • Im ersten Beispiel, in dem Benutzername der Administrator ist, wird die Sitzungs-ID der Domäne (z. B. domain.com) zurückgegeben.

  • Im zweiten Beispiel, in dem der Benutzername 40 ist, wird die Sitzungs-ID der Erweiterung (40) in Domäne (domain.com) zurückgegeben.

  • Auf dem Server erhalten Sie mithilfe von curl ein temporäres Sitzungstoken für die Domäne oder den Benutzer (mit den oben gezeigten Administratoranmeldeinformationen) und übergeben es an Ihren Client im Browser.

  • Verwenden Sie dieses temporäre Token innerhalb von 10 Sekunden als Sitzungs-ID für die PBX-Authentifizierung wie folgt:

      POST /rest/system/session HTTP/1.1
Content-Type: application/json

{
name: "session",
value: < session id passed from the server goes here >
}
  • Bei erfolgreicher Antwort können Sie die Nebenstellenanlage mit der URL eingeben:

    https://YOUR_PBX_URL/thirdparty.htm

  • Sie sollten in der Lage sein, zur Domäne oder zum Benutzer zu gelangen (für die die ursprüngliche temporäre Sitzungs-ID abgerufen wurde).

  • Dies ist Beispiel PHP-Code zum Implementieren eines AJAX-Handlers auf der Serverseite, der die Arbeit ausführt:

    // Make sure that this request is authenticated // TBD by final implementation

    // Set the trust parameters: $url = 'http://pbx.xyz.com/rest/system/session'; $username = 'abc'; $password = 'def';

    // Decode the input: $body = json_decode(file_get_contents('php://input')); $domain = $body->domain; $account = $body->account;

    // Send the request: $body_string = json_encode(array('name' => '3rd', 'domain' => $domain, 'username' => $account)); $header = "Content-Type: application/json\r\nAuthorization: Basic " . base64_encode($username . ":" . $password) . "\r\nContent-Length: " . strlen($body_string) . "\r\n"; $result = file_get_contents($url, null, stream_context_create(array('http' => array( 'method' => 'POST', 'header' => $header, 'content' => $body_string)))); print($result);

  • Im Folgenden finden Sie ein HTML-Beispielformular, das das obige Skript verwendet:

  • Achten Sie darauf, die obige Datei zu nennen, die im folgenden Skript aufgerufen wird (für z.B. 'thirdpartylogin.php' in diesem Beispiel).

    <title>Vodia PBX 3rd party login</title><script>


<!--//--><![CDATA[// ><!--

function load() {
var form = document.getElementById('form');
var account = document.getElementById('account');
var domain = document.getElementById('domain');
function submit(e) {
e.preventDefault();
var xhr = new XMLHttpRequest();
xhr.open('POST', '/thirdpartylogin.php', true);
xhr.setRequestHeader("Content-Type", 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var session = JSON.parse(xhr.responseText);
document.location = 'https://pbx.xyz.com/welcome.htm?session=' + session;
}
};
var data = {
account: account.value,
domain: domain.value
};
xhr.send(JSON.stringify(data));
}
form.addEventListener('submit', submit);
}
window.addEventListener('load', load, false);

//--><!]]>
</script>

Konto

Domäne

Die Anmeldung durch Dritte direkt in der Domain oder im Benutzerportal sollte nun möglich sein.