Your customers expect SSO when they hit your login screen. You know that isn’t always a simple ask.

Our brokered API takes care of the SAML, OAuth or Open ID connectors so you can focus on what you do best.

Built secure

Built secure

Globally trusted & proven

Globally trusted & proven

Increase engagement

Increase engagement

Free for most users

Free for most users

Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs
Logon Labs

We do the heavy lifting.

Your App or site has a local DB & login screen that you support

Your App or site has a local DB & login screen that you support

Your customers trust different IDP's each with their own protocols, compliance levels & codebases to maintain

Your customers trust different IDP's each with their own protocols, compliance levels & codebases to maintain

Just add Google. Easy, right? 
It's more complicated than you think
IDPs implement protocols differently

Just add Google. Easy, right?

It's more complicated than you think

IDPs implement protocols differently

Just because you support OIDC for Google doesn't mean you now support everything
LogonLabs supports all major identity providers & single sign on protocols

Just because you support OIDC for Google doesn't mean you now support everything

LogonLabs supports all major identity providers & single sign on protocols

Does your team have the resources & time to implement all the different configurations your customers need?

Does your team have the resources & time to implement all the different configurations your customers need?

One implementation,
as many configurations as needed.

API libraries in all popular languages
One implementation supports all your customers. Each can have their specific login experience with a simple configuration change

API libraries in all popular languages

One implementation supports all your customers. Each can have their specific login experience with a simple configuration change

Low touch, no changes to your current workflow
Get up & running instantly

Low touch, no changes to your current workflow

Get up & running instantly

PROVISIONING
Login settings can be managed via our admin interface or our simple Management APIs

PROVISIONING Login settings can be managed via our admin interface or our simple Management APIs

DELEGATION
Configuration can be easily delegated to your customers so you don't have to worry about it

DELEGATION Configuration can be easily delegated to your customers so you don't have to worry about it

Provide audit & control to your customers.

Provide audit & control to your customers.

Audit See who logged in, including when, where, & with what device

Control Decide who can access your system & when

Export Easily export detailed audit data for all logins to your system

Deploy anywhere.

Cloud & Private Cloud deployment on AWS, Azure & Google. Local deployments are available via Docker image.

Stay compliant.

Let us show you how easy it is.

We did the hard work so you
can take the credit.

So simple a typical customer can implement within the same day. No need to migrate your user database.

Once your account is set up it just takes two snippets of code.

Existing users do not have to re-register.

Add this to your front end
JavaScript
Swift
<!DOCTYPE html>
<html>
<head>
 <title>LogonLabs Sample</title>
 <style> .logonlabs { width: 300px; } </style>
 <script>
   window.logonAsync = function() {
     LogonClient.configure({
       app_id: '{APP_ID}'
     });
     LogonClient.ui.button('logonlabs-buttons');
     LogonClient.ui.button('logonlabs-icons', {
       theme: 'icon'
     });
   };
 </script>
 <script async defer src="https://cdn.logonlabs.com/dist/logonlabs.min.js"/>
</head>
<body>
 <h2>LogonLabs Sample</h2>
 <div id="logonlabs-buttons" class="logonlabs"></div>
 <div id="logonlabs-icons" class="logonlabs"></div>
</body>
</html>

                     
import LogonLabs;


var body: some View {
 VStack {
     Button(action: {
         let logonClient = LogonClient(
             baseUri: "https://api.logonlabs.com",
             appId: "{APP_ID}");

         logonClient.startLogin(
             identity_provider: "google",
             destinationUrl: "{APP_URL_SCHEME}") {error in
             if(error != nil) {
                 print(error.description!)
               }
             }
     }) {
       Text("Start SSO Workflow")
     }
 }
}

                     
Add this to your back end
PHP
.NET
JAVA
PYTHON
NODE.JS
<?php
require(__DIR__ . '/vendor/autoload.php');

use LogonLabs\IdPx\API\LogonClient as LogonClient;
use LogonLabs\IdentityProviders as IdentityProviders;

$logonClient = new LogonClient(array(
 'app_id' => '{APP_ID}',
 'app_secret' => '{APP_SECRET}',
 'api_path' => 'https://api.logonlabs.com'
 
));

$token = $_REQUEST['token'];

$loginData = $logonClient->validateLogin($token);

if ($loginData['body']['event_success']) {
 // authentication and validation succeeded.
 // proceed with post-auth workflows for your system.
}

                     
var logonClient = new LogonLabs.IdPx.API.LogonClient(
"{APP_ID}", 
"https://api.logonlabs.com", 
"{APP_SECRET}"
);

var token = this.Request.Query[Constants.QueryString.token];

var loginData = logonClient.ValidateLogin(token);

if (loginData.event_success)
{
// authentication and validation succeeded.
// proceed with post-auth workflows for your system.
}

             
import com.logonlabs.LogonClient;
import com.logonlabs.dtos.ValidateLoginResponse;
import com.logonlabs.dtos.SsoValidationDetails;

LogonClient client = new LogonClient(
"{APP_ID}",
"{APP_SECRET}",
"https://api.logonlabs.com");

String queryToken = client.parseToken(callbackUrl);

ValidateLoginResponse response = client.validateLogin(queryToken);

if(response.isEventSuccess()) {
//authentication and validation succeeded. 
//proceed with post-auth workflows for your system.
}

from logonlabs.client import Logonlabs

logonClient = Logonlabs(
'{APP_ID}',
'{APP_SECRET}',
'https://api.logonlabs.com'
)

request_headers = self.headers
token = request_headers["token"]
response = logonClient.validateLogin(token)
data = response.json()
if data['event_success']:
# authentication and validation succeeded.
# proceed with post-auth workflows for your system.


                     
const client = require('logonlabs-nodejs');
     ('{APP_ID}',
     '{APP_SECRET}',
     'https://api.logonlabs.com'
);

let token = client.parseToken(callback_url);

let response = client.validateLogin(token);

if(response.isEventSuccess()) {
// authentication and validation succeeded.
// proceed with post-auth workflows for your system.

}