ssoready/ssoready
is a PHP SDK for the SSOReady API.
SSOReady is a set of open-source dev tools for implementing Enterprise SSO. You can use SSOReady to add SAML and SCIM support to your product this afternoon.
For example applications built using SSOReady-PHP, check out:
Add this dependency to your project's composer.json
:
composer require ssoready/ssoready
This section provides a high-level overview of how SSOReady works, and how it's possible to implement SAML and SCIM in just an afternoon. For a more thorough introduction, visit the SAML quickstart or the SCIM quickstart.
The first thing you'll do is create a SSOReady client instance:
$ssoready = new SSOReady\SSOReadyClient(); // loads api key from SSOREADY_API_KEY env var
SAML (aka "Enterprise SSO") consists of two steps: an initiation step where you redirect your users to their corporate identity provider, and a handling step where you log them in once you know who they are.
To initiate logins, you'll use SSOReady's Get SAML Redirect URL endpoint:
# this is how you implement a "Sign in with SSO" button
$redirectUrl = $ssoready->saml->getSAMLRedirectURL(new SSOReady\Saml\Requests\GetSamlRedirectUrlRequest([
# the ID of the organization/workspace/team (whatever you call it)
# you want to log the user into
"organizationExternalId" => "...",
]))->redirectUrl;
# redirect the user to `$redirectUrl`...
You can use whatever your preferred ID is for organizations (you might call them
"workspaces" or "teams") as your organizationExternalId
. You configure those
IDs inside SSOReady, and SSOReady handles keeping track of that organization's
SAML and SCIM settings.
To handle logins, you'll use SSOReady's Redeem SAML Access Code endpoint:
# this goes in your handler for POST /ssoready-callback
$redeemResult = $ssoready->saml->redeemSamlAccessCode(new SSOReady\Saml\Requests\RedeemSamlAccessCodeRequest([
"samlAccessCode" => $_GET["saml_access_code"],
]));
$email = $redeemResult->email;
$organizationExternalId = $redeemResult->organizationExternalId;
# log the user in as `$email` inside `$organizationExternalId`...
You configure the URL for your /ssoready-callback
endpoint in SSOReady.
SCIM (aka "Enterprise directory sync") is basically a way for you to get a list of your customer's employees offline.
To get a customer's employees, you'll use SSOReady's List SCIM Users endpoint:
$listScimUsersResponse = $ssoready->scim->listScimUsers(new SSOReady\Scim\Requests\ListScimUsersRequest([
"organizationExternalId" => "my_custom_external_id"
]));
# create users from each scim user
foreach ($listScimUsersResponse->scimUsers as $scimUser) {
# every $scimUser has an id, email, attributes, and deleted
}
Issues and PRs are more than welcome. Be advised that this library is largely
autogenerated from ssoready/docs
. Most
code changes ultimately need to be made there, not on this repo.