Overview
Single Sign-On (SSO) enables your team to access Revuloop using your organization's identity provider, streamlining authentication and enhancing security. This guide walks you through setting up Microsoft Entra ID SSO for your Revuloop organization.
Key Benefits:
- Centralized user authentication and access control
- Enhanced security with your existing identity policies
- Streamlined user onboarding and offboarding
- Reduced password fatigue for team members
Requirements:
- Business plan subscription
- Microsoft Entra ID tenant
- Admin access to both Revuloop and Microsoft Entra
- Organization owner or admin role in Revuloop
Part 1: Microsoft Entra ID Configuration
Step 1: Create Enterprise Application
- Sign in to the Azure Portal (portal.azure.com)
- Navigate to Azure Active Directory
- Select Enterprise Applications from the left sidebar
- Click New application
- Choose Create your own application
- Enter application name: "Revuloop SSO"
- Select "Integrate any other application you don't find in the gallery (Non-gallery)"
- Click Create
Step 2: Configure OAuth 2.0 / OpenID Connect
- In your new application, go to Overview
- Click Set up single sign on
- Select OAuth 2.0 / OpenID Connect as the method
- Note the following values (you'll need them for Revuloop):
- Tenant ID: Found in Azure AD Overview → Tenant information
- Application (client) ID: Found in app registration Overview
- Client Secret: You'll create this in the next step
Step 3: Create Client Secret
- In your application, go to Certificates & secrets
- Click New client secret
- Enter a description: "Revuloop SSO Secret"
- Choose expiration period (recommended: 24 months)
- Click Add
- IMPORTANT: Copy the secret Value immediately (you won't be able to see it again)
- Store it securely: you'll need it for Revuloop configuration
Step 4: Configure Redirect URI
- Go to Authentication in your application
- Click Add a platform
- Select Web
- Add redirect URI: `https://app.revuloop.com/api/auth/callback/microsoft-entra`
- For localhost testing, also add: `http://localhost:3000/api/auth/callback/microsoft-entra`
- Click Configure
Step 5: Set API Permissions
Your application needs these Microsoft Graph permissions:
Required Permissions:
- `User.Read` - Read user profile
- `email` - Read user email address
- `openid` - OpenID Connect sign-in
- `profile` - Read user profile
For Group Sync (Optional but Recommended):
- `Group.Read.All` - Read all groups
- `User.Read.All` - Read all users' full profiles
To add permissions:
- Go to API permissions
- Click Add a permission
- Select Microsoft Graph
- Choose Delegated permissions
- Search for and select each permission above
- Click Add permissions
- Click Grant admin consent (requires admin rights)
- Confirm the consent grant
Part 2: Revuloop Configuration
Step 6: Access SSO Settings
- Log in to Revuloop as an organization owner or admin
- Navigate to Organization Settings (click organization name → Settings)
- Select SSO from the left sidebar
- You'll see four tabs: Configuration, Enforcement, Group Mappings, User Sync
Note: If you don't see the SSO tab, verify your organization is on the Business plan.
Step 7: Enter Provider Configuration
On the Configuration tab:
- Provider: Microsoft Entra ID (pre-selected)
- Tenant ID: Paste the tenant ID from Azure AD
- Client ID: Paste the application (client) ID from Azure
- Client Secret: Paste the client secret value you copied earlier
- Click Save Configuration
Security Note: Client secrets are encrypted when saved and will be partially masked (e.g., `abc***xyz`) when displayed.
Step 8: Test SSO Connection
Before enabling SSO for your organization:
- Click the Test Connection button
- Revuloop validates credentials with Microsoft
- If successful, you'll see: ✓ "Connection successful!"
- If failed, check:
- All credentials copied correctly (no extra spaces)
- API permissions granted with admin consent
- Redirect URI matches exactly (including https://)
- Client secret hasn't expired
Step 9: Enable SSO
Once the connection test passes:
- Toggle the Enable SSO switch to ON
- Review the confirmation modal
- Click Confirm
- SSO is now active for testing
Part 3: Testing SSO Login
Test the Login Flow
- Open a new incognito/private browser window
- Go to Revuloop login page
- Enter your work email address
- Click Continue
- If your email domain is recognized, you'll see "Sign in with Microsoft" button
- Click Sign in with Microsoft
- Complete Microsoft authentication (if not already signed in)
- You should be redirected to Revuloop dashboard
Verify User Provisioning
After your first SSO login:
- Go to Organization → Members
- Verify your user account appears
- Check for "SSO Linked" badge next to your name
- Confirm email and display name are correct
What Happens During First Login (JIT Provisioning):
- Revuloop automatically creates your user account
- Profile populated from Microsoft (name, email)
- SSO link established
- Default member role assigned
Part 4: Group Mappings (Optional)
Map Azure AD groups to Revuloop departments for automatic role assignment.
Step 1: Fetch Groups from Microsoft
- Go to SSO Settings → Group Mappings tab
- Click Fetch Groups from Directory
- Revuloop retrieves all groups from your Azure AD
- Groups appear in the mapping table
Step 2: Map Groups to Departments
For each Azure AD group:
- Select the group from the list
- Choose corresponding Revuloop department
- Toggle Auto Sync if you want automatic updates
- Click Save Mapping
Example Mappings:
- Azure AD "Engineering Team" → Revuloop "Engineering Department"
- Azure AD "Sales Team" → Revuloop "Sales Department"
- Azure AD "Marketing" → Revuloop "Marketing Department"
Benefits of Group Mappings
- Automatic department assignment when users log in via SSO
- Easy reorganization - update groups in Azure, sync to Revuloop
- Consistent structure between Azure AD and Revuloop
Common Use Cases
Use Case 1: New Employee Onboarding
Scenario: Your company hires a new team member
Traditional Flow:
- IT creates Azure AD account
- Someone manually invites them to Revuloop
- They create account, set password
- Admin assigns to correct department
With SSO:
- IT creates Azure AD account and assigns to group
- Employee clicks Revuloop link
- Signs in with work credentials
- Account auto-created, auto-assigned to department
- Ready to work immediately
Use Case 2: Department Reorganization
Scenario: Engineering team splits into Frontend and Backend teams
With Group Mappings:
- IT creates two new Azure AD groups
- Moves users to appropriate groups
- Admin maps groups to Revuloop departments
- Click Sync Users
- All department assignments update automatically
Use Case 3: Employee Offboarding
Scenario: Team member leaves the company
With SSO:
- IT disables Azure AD account
- SSO access to Revuloop immediately revoked
- User cannot authenticate
- No manual Revuloop account management needed
Tips and Best Practices
Security Best Practices
- Rotate secrets regularly: Update client secret every 6-12 months
- Use conditional access: Configure in Azure AD for additional security
- Enable MFA: Require multi-factor authentication in Microsoft Entra
- Monitor SSO logs: Review authentication attempts regularly
- Audit group memberships: Ensure users in correct groups
Rollout Strategy
- Start small: Test with IT team or small pilot group
- Communicate early: Announce SSO 2-4 weeks before enforcement
- Provide documentation: Share this guide with your team
- Offer support: Have support team ready for questions
- Use grace period: Give users time to link accounts before enforcement
Maintenance Checklist
Monthly:
- Review SSO login logs for unusual activity
- Update group mappings when org structure changes
- Check for expired or expiring client secrets
Quarterly:
- Test SSO connection to verify functionality
- Review and update API permissions if needed
- Audit user access and department assignments
Annually:
- Rotate client secrets
- Review SSO security policies
- Assess group mapping effectiveness
Troubleshooting
Issue: "Invalid Client Secret"
Symptoms: Error message when saving configuration or testing connection
Common Causes:
- Client secret copied incorrectly
- Client secret has expired
- Wrong secret ID copied instead of secret value
Solutions:
- Generate a new client secret in Azure portal
- Copy the Value field (not the Secret ID)
- Update in Revuloop SSO settings
- Test connection again
Issue: "Redirect URI Mismatch"
Symptoms: Error after Microsoft authentication, can't redirect back to Revuloop
Common Causes:
- Redirect URI not configured in Azure app
- URI has typo or extra characters
- Using http instead of https
Solutions:
- Go to Azure app → Authentication
- Verify redirect URI: `https://app.revuloop.com/api/auth/callback/microsoft-entra`
- Ensure exact match (no trailing slash)
- Save changes and test again
Issue: "Insufficient Permissions"
Symptoms: Can't fetch groups, or limited user information available
Common Causes:
- Required API permissions not granted
- Admin consent not provided
- Permissions granted but not saved
Solutions:
- Go to Azure app → API permissions
- Verify all required permissions listed
- Click Grant admin consent for [your organization]
- Wait a few minutes for changes to propagate
- Test connection again
Issue: User Can't Sign In with SSO
Symptoms: User gets error when trying to authenticate
Debugging Steps:
- Verify user exists in Azure AD
- Check user is assigned to Revuloop enterprise application:
- Azure app → Users and groups
- Add user if missing
- Verify user's email domain matches allowed domains in Revuloop
- Check SSO is enabled in Revuloop
- Try testing with a different user
Issue: Groups Not Syncing
Symptoms: Group mappings configured but users not assigned to departments
Common Causes:
- Missing `Group.Read.All` permission
- Auto-sync disabled for mapping
- User not actually in Azure AD group
Solutions:
- Verify `Group.Read.All` permission granted in Azure
- Check auto-sync toggle is ON for group mapping
- Confirm user's group membership in Azure AD
- Click Sync Users button manually
- Check sync status in User Sync tab