次のような場合に使用: Angular アプリケーションに Auth0(認証サービス)によるログイン・ログアウト機能、ルート保護(ページへのアクセス制限)、または HTTP インターセプター(通信の仲介機能)を追加する場合。 @auth0/auth0-angular というライブラリを統合して SPA(単一ページアプリケーション)に対応します。ユーザーが「Angular のルートを保護したい」「Angular に認証機能を追加したい」と述べていても、SDK の名称を明確に挙げていない場合でも、このスキルの使用が適切です。
Use when adding Auth0 login, logout, route guards, or HTTP interceptors to an Angular application. Integrates @auth0/auth0-angular for SPAs — use even if the user says "protect my Angular routes" or "add authentication to Angular" without naming the SDK.
@auth0/auth0-angular を使用して、Angular アプリケーションに認証機能を追加します。
auth0-quickstart スキルを使用してくださいauth0-react-native、Ionic の場合はネイティブ SDK を使用してくださいnpm install @auth0/auth0-angular
Auth0 CLI を使った自動セットアップの場合、完全なスクリプトは セットアップガイド を参照してください。
手動セットアップの場合:
src/environments/environment.ts を更新します:
export const environment = {
production: false,
auth0: {
domain: 'your-tenant.auth0.com',
clientId: 'your-client-id',
authorizationParams: {
redirect_uri: window.location.origin
}
}
};
スタンドアロンコンポーネントの場合 (Angular 14 以降):
src/app/app.config.ts を更新します:
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
})
]
};
NgModule ベースのアプリの場合:
src/app/app.module.ts を更新します:
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 {}
src/app/app.component.ts を更新します:
import { Component } from '@angular/core';
import { AuthService } from '@auth0/auth0-angular';
@Component({
selector: 'app-root',
template: `
<div *ngIf="auth.isLoading$ | async; else loaded">
<p>Loading...</p>
</div>
<ng-template #loaded>
<ng-container *ngIf="auth.isAuthenticated$ | async; else loggedOut">
<div *ngIf="auth.user$ | async as user">
<img [src]="user.picture" [alt]="user.name" />
<h2>Welcome, {{ user.name }}!</h2>
<button (click)="logout()">Logout</button>
</div>
</ng-container>
<ng-template #loggedOut">
<button (click)="login()">Login</button>
</ng-template>
</ng-template>
`
})
export class AppComponent {
constructor(public auth: AuthService) {}
login(): void {
this.auth.loginWithRedirect();
}
logout(): void {
this.auth.logout({ logoutParams: { returnTo: window.location.origin } });
}
}
開発サーバーを起動して、ログインフローをテストします:
ng serve
| 間違い | 対処法 |
|---|---|
| Auth0 ダッシュボードにリダイレクト URI を追加し忘れた | Auth0 ダッシュボードの「Allowed Callback URLs」に、アプリケーションの URL(例: http://localhost:4200、https://app.example.com)を追加してください |
| AuthModule が正しく設定されていない | NgModule では AuthModule.forRoot()、スタンドアロン構成では provideAuth0() を必ず呼び出してください |
| 初期化前に auth にアクセスしている | isLoading$ Observable を使用して、SDK の初期化完了を待機してください |
| トークンを手動で保存している | トークンを手動で保存しないでください。SDK が安全なストレージを自動的に管理します |
| API にトークンが送信されない | トークンの自動付与には authHttpInterceptorFn、手動制御には getAccessTokenSilently() を使用してください。詳細は インテグレーションガイド を参照 |
| ルートガードがルートを保護していない | ルーティング設定の保護対象ルートに AuthGuard(または authGuardFn)を適用してください |
auth0-quickstart — Auth0 の基本セットアップauth0-migration — 他の認証プロバイダーからの移行auth0-mfa — 多要素認証 (MFA) の追加auth0-cli — ターミナルからの Auth0 リソース管理主要サービス:
AuthService — メインの認証サービスisAuthenticated$ — ユーザーのログイン状態を確認する Observableuser$ — ユーザープロファイル情報の ObservableloginWithRedirect() — ログインの開始logout() — ユーザーのログアウトgetAccessTokenSilently() — アクセストークンの手動取得(HTTP インターセプターの代替手段)よくあるユースケース:
Add authentication to Angular applications using @auth0/auth0-angular.
auth0-quickstart skill firstauth0-react-native for React Native or native SDKs for Ionicnpm install @auth0/auth0-angular
For automated setup with Auth0 CLI, see Setup Guide for complete scripts.
For manual setup:
Update src/environments/environment.ts:
export const environment = {
production: false,
auth0: {
domain: 'your-tenant.auth0.com',
clientId: 'your-client-id',
authorizationParams: {
redirect_uri: window.location.origin
}
}
};
For standalone components (Angular 14+):
Update src/app/app.config.ts:
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:
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 {}
Update src/app/app.component.ts:
import { Component } from '@angular/core';
import { AuthService } from '@auth0/auth0-angular';
@Component({
selector: 'app-root',
template: `
<div *ngIf="auth.isLoading$ | async; else loaded">
<p>Loading...</p>
</div>
<ng-template #loaded>
<ng-container *ngIf="auth.isAuthenticated$ | async; else loggedOut">
<div *ngIf="auth.user$ | async as user">
<img [src]="user.picture" [alt]="user.name" />
<h2>Welcome, {{ user.name }}!</h2>
<button (click)="logout()">Logout</button>
</div>
</ng-container>
<ng-template #loggedOut">
<button (click)="login()">Login</button>
</ng-template>
</ng-template>
`
})
export class AppComponent {
constructor(public auth: AuthService) {}
login(): void {
this.auth.loginWithRedirect();
}
logout(): void {
this.auth.logout({ logoutParams: { returnTo: window.location.origin } });
}
}
Start your dev server and test the login flow:
ng serve
| 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 |
| No token sent to API | Use either authHttpInterceptorFn for automatic token attachment, or getAccessTokenSilently() for manual control — see Integration Guide |
| Route guard not protecting routes | Apply AuthGuard (or authGuardFn) to protected routes in routing config |
auth0-quickstart - Basic Auth0 setupauth0-migration - Migrate from another auth providerauth0-mfa - Add Multi-Factor Authenticationauth0-cli - Manage Auth0 resources from the terminalCore Services:
AuthService - Main authentication serviceisAuthenticated$ - Observable check if user is logged inuser$ - Observable user profile informationloginWithRedirect() - Initiate loginlogout() - Log out usergetAccessTokenSilently() - Get access token manually (alternative to HTTP interceptor)Common Use Cases:
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。