Give your clients options, not obstacles.

You have different types of customers using your software, they all have different access requirements.
It takes resources to give each of your customers the login experience options they’re asking for.
With LogonLabs, it’s one implementation and the rest is configuration.

Homepage
Homepage

Support SSO without having to be an expert in SAML, OAuth or Open ID connect.

Allow your customers to use the Identity Providers that they trust.

Keep your database & workflows.

Just add the IDP’s you need or want.

Homepage

Deploy Anywhere

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

Get started
Homepage
Homepage

LogonLabs powers over 5,000 login screens today.

100% Cloud up-time 2018-2020.
99.99% SLAs are available with our geo-location deployments.

Stay Compliant.

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}',
    'app_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.

}