---
name: auth0-angular
description: Use when adding authentication to Angular applications with route guards and HTTP interceptors - integrates @auth0/auth0-angular SDK for SPAs
---
# Auth0 Angular Integration
Add authentication to Angular applications using @auth0/auth0-angular.
---
## Prerequisites
- Angular 13+ application
- Auth0 account and application configured
- If you don't have Auth0 set up yet, use the `auth0-quickstart` skill first
## When NOT to Use
- **AngularJS (1.x)** - This SDK requires Angular 13+, use legacy solutions for AngularJS
- **Mobile applications** - Use `auth0-react-native` for React Native or native SDKs for Ionic
- **Backend APIs** - Use JWT validation middleware for your server language
---
## Quick Start Workflow
### 1. Install SDK
```bash
npm install @auth0/auth0-angular
```
### 2. Configure Environment
**For automated setup with Auth0 CLI**, see [Setup Guide](references/setup.md) for complete scripts.
**For manual setup:**
Update `src/environments/environment.ts`:
```typescript
export const environment = {
production: false,
auth0: {
domain: 'your-tenant.auth0.com',
clientId: 'your-client-id',
authorizationParams: {
redirect_uri: window.location.origin
}
}
};
```
### 3. Configure Auth Module
**For standalone components (Angular 14+):**
Update `src/app/app.config.ts`:
```typescript
import { ApplicationConfig } from '@angular/core';
import { provideAuth0 } from '@auth0/auth0-angular';
import { environment } from '../environments/environment';
export const appConfig: ApplicationConfig = {
providers: [
provideAuth0({
domain: environment.auth0.domain,
clientId: environment.auth0.clientId,
authorizationParams: environment.auth0.authorizationParams
})
]
};
```
**For NgModule-based apps:**
Update `src/app/app.module.ts`:
```typescript
import { AuthModule } from '@auth0/auth0-angular';
import { environment } from '../environments/environment';
@NgModule({
imports: [
AuthModule.forRoot({
domain: environment.auth0.domain,
clientId: environment.auth0.clientId,
authorizationParams: environment.auth0.authorizationParams
})
]
})
export class AppModule {}
```
### 4. Add Authentication UI
Update `src/app/app.component.ts`:
```typescript
import { Component } from '@angular/core';
import { AuthService } from '@auth0/auth0-angular';
@Component({
selector: 'app-root',
template: `
Welcome, {{ user.name }}!
`
})
export class AppComponent {
constructor(public auth: AuthService) {}
login(): void {
this.auth.loginWithRedirect();
}
logout(): void {
this.auth.logout({ logoutParams: { returnTo: window.location.origin } });
}
}
```
### 5. Test Authentication
Start your dev server and test the login flow:
```bash
ng serve
```
---
## Detailed Documentation
- **[Setup Guide](references/setup.md)** - Automated setup scripts (Bash/PowerShell), CLI commands, manual configuration
- **[Integration Guide](references/integration.md)** - Protected routes with guards, HTTP interceptors, error handling
- **[API Reference](references/api.md)** - Complete SDK API, configuration options, services reference, testing strategies
---
## Common Mistakes
| Mistake | Fix |
|---------|-----|
| Forgot to add redirect URI in Auth0 Dashboard | Add your application URL (e.g., `http://localhost:4200`, `https://app.example.com`) to Allowed Callback URLs in Auth0 Dashboard |
| Not configuring AuthModule properly | Must call `AuthModule.forRoot()` in NgModule or `provideAuth0()` in standalone config |
| Accessing auth before initialization | Use `isLoading$` observable to wait for SDK initialization |
| Storing tokens manually | Never manually store tokens - SDK handles secure storage automatically |
| Missing HTTP interceptor | Use `authHttpInterceptorFn` or `AuthHttpInterceptor` to attach tokens to API calls |
| Route guard not protecting routes | Apply `AuthGuard` (or `authGuardFn`) to protected routes in routing config |
---
## Related Skills
- `auth0-quickstart` - Basic Auth0 setup
- `auth0-migration` - Migrate from another auth provider
- `auth0-mfa` - Add Multi-Factor Authentication
---
## Quick Reference
**Core Services:**
- `AuthService` - Main authentication service
- `isAuthenticated$` - Observable check if user is logged in
- `user$` - Observable user profile information
- `loginWithRedirect()` - Initiate login
- `logout()` - Log out user
- `getAccessTokenSilently()` - Get access token for API calls
**Common Use Cases:**
- Login/Logout buttons → See Step 4 above
- Protected routes with guards → [Integration Guide](references/integration.md#protected-routes)
- HTTP interceptors for API calls → [Integration Guide](references/integration.md#http-interceptor)
- Error handling → [Integration Guide](references/integration.md#error-handling)
---
## References
- [Auth0 Angular SDK Documentation](https://auth0.com/docs/libraries/auth0-angular)
- [Auth0 Angular Quickstart](https://auth0.com/docs/quickstart/spa/angular)
- [SDK GitHub Repository](https://github.com/auth0/auth0-angular)