Prerequisites
- A Microsoft Entra ID (formerly Azure AD) tenant
- Global Administrator or Application Administrator role
- Admin access to LowerPlane Settings
Setup Steps
Register LowerPlane in Entra ID
In the Microsoft Entra admin center, register a new application:
- Go to Identity > Applications > App registrations > New registration.
- Set the Name to
LowerPlane SSO. - Set Supported account types to “Accounts in this organizational directory only”.
- Set the Redirect URI to:
- Click Register.
Configure API permissions
In the app registration:
- Go to API permissions > Add a permission > Microsoft Graph > Delegated permissions.
- Add:
openid,profile,email,User.Read. - Click Grant admin consent for your organization.
Create a client secret
- Go to Certificates & secrets > New client secret.
- Add a description (e.g.,
LowerPlane SSO) and set an expiration. - Copy the Value immediately — it won’t be shown again.
Enter credentials in LowerPlane
Back in LowerPlane’s SSO settings, enter:
- Tenant ID: Found on the app registration’s Overview page (Directory (tenant) ID)
- Client ID: Found on the app registration’s Overview page (Application (client) ID)
- Client Secret: The value you copied in the previous step
How It Works
- A user visits your LowerPlane login page and enters their email address.
- LowerPlane detects the Microsoft SSO configuration for your organization.
- The user is redirected to Microsoft’s sign-in page.
- After successful authentication, Microsoft sends the user back to LowerPlane with an authorization code.
- LowerPlane exchanges the code for tokens, extracts the user’s profile (email, name), and logs them in.
Configuration Details
| Setting | Value |
|---|---|
| Protocol | OAuth 2.0 / OpenID Connect |
| Scopes | openid, profile, email, User.Read |
| Authorization endpoint | https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize |
| Token endpoint | https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token |
| Userinfo endpoint | https://graph.microsoft.com/v1.0/me |
| Redirect URI | https://api.lowerplane.com/api/v1/auth/sso/callback/oidc |
Conditional Access
If your organization uses Entra ID Conditional Access policies, ensure that the LowerPlane SSO application is included in the appropriate policies. You can require:- Multi-factor authentication (MFA)
- Compliant device enrollment
- Specific geographic locations
- Risk-based sign-in evaluation
Troubleshooting
Login fails with 'profile_fetch_failed'
Login fails with 'profile_fetch_failed'
This usually means the
User.Read permission was not granted. Go to your app registration in Entra ID, ensure User.Read is listed under API permissions, and click Grant admin consent.Login fails with 'no_email'
Login fails with 'no_email'
The user’s account may not have a
mail attribute set in Entra ID. Ensure the user has a valid email address configured in their Entra ID profile under Properties > Contact information.Login fails with 'token_exchange_failed'
Login fails with 'token_exchange_failed'
Verify that:
- The Client Secret has not expired
- The Redirect URI matches exactly:
https://api.lowerplane.com/api/v1/auth/sso/callback/oidc - The Tenant ID and Client ID are correct
Users from other tenants can sign in
Users from other tenants can sign in
Set Supported account types to “Accounts in this organizational directory only” in the app registration to restrict access to your tenant.
Client secret expired
Client secret expired
Create a new client secret in Entra ID and update it in LowerPlane’s SSO settings. Client secrets have a maximum lifetime of 24 months.