JS Web SDK 概要
はじめに
@authrim/web はAuthrimのブラウザ向けSDKです。Passkeyログイン、Email Code認証、ソーシャルログイン、セッション管理、そしてオプションのOAuth/OIDCフローをシンプルで統一されたAPIで提供します。
SDKは @authrim/core をラップし、ブラウザ固有の実装(Web Crypto API、Fetch API、ブラウザストレージ)を内部で処理するため、プロトコルの詳細を意識せずにアプリケーション開発に集中できます。
できること
- Passkey: WebAuthnを使ったサインアップ、サインイン、追加パスキー登録
- Email Code: メールによるワンタイムコードの送信と検証
- ソーシャルログイン: Google、GitHub、Apple等のプロバイダーによるポップアップまたはリダイレクトログイン
- セッション管理: 認証状態の確認、ユーザー情報の取得、セッションの更新・無効化
- OAuth / OIDC(オプション): ポップアップログイン、リダイレクトフロー、サイレント認証、クロスドメインSSO
アーキテクチャ
@authrim/web はアプリケーションコードとAuthrimサーバーの間に位置します:
flowchart TB
app["Webアプリケーション"]
web["@authrim/web
(ブラウザSDK)"]
core["@authrim/core
(プロトコル層)"]
server["Authrimサーバー"]
app --> web --> core --> server
@authrim/web— ブラウザ固有のAPI。createAuthrim()ファクトリ、名前空間ベースのメソッド、イベントシステムを提供。@authrim/core— プラットフォーム非依存のプロトコル実装。OAuth 2.0、OIDC、PKCE、DPoP、トークン管理を内部で処理。
@authrim/core を直接インポートしたり設定したりする必要はありません — @authrim/web が内部で処理します。
Direct Auth と OAuth / OIDC
@authrim/web は2つの認証モードをサポートしています:
| モード | ユースケース | 設定 |
|---|---|---|
| Direct Auth | Passkey、Email Code、ソーシャルログイン — OAuthリダイレクト不要 | デフォルト(追加設定不要) |
| OAuth / OIDC | 標準OAuthフロー、ポップアップログイン、サイレント認証、クロスドメインSSO | enableOAuth: true |
Direct Auth は最もシンプルな方法です。SDKがAuthrimサーバーのDirect Authエンドポイントと直接通信し、WebAuthnセレモニー、メールコード交換、ソーシャルプロバイダーのポップアップフローを内部で処理します。
OAuth / OIDC モードを有効にすると oauth 名前空間が追加され、標準の認可コードフロー(PKCE付き)、ポップアップベースのログイン、iframeサイレント認証、トップレベルナビゲーションによるクロスドメインSSOが利用可能になります。
両モードは併用可能です — enableOAuth の設定に関わらず、Direct Authメソッドは常に利用できます。
レスポンスパターン
すべての非同期メソッドは AuthResponse<T> オブジェクト — { data, error } の判別共用体を返します:
const { data, error } = await auth.passkey.login();
if (error) { // error: { code, error, message, retryable, severity } console.error(error.message); return;}
// ここでは data が non-null であることが保証されますconsole.log('ユーザー:', data.user);console.log('セッション:', data.session);このパターンはすべてのSDKメソッド(passkey、emailCode、social、session、oauth)で一貫しているため、エラーハンドリングの構造はどこでも同じです。
API名前空間
SDKはメソッドを名前空間で整理しています:
const auth = await createAuthrim({ issuer: 'https://auth.example.com', clientId: 'my-app',});
// Passkeyauth.passkey.login()auth.passkey.signUp({ email })auth.passkey.register()auth.passkey.isSupported()
// Email Codeauth.emailCode.send(email)auth.emailCode.verify(email, code)
// ソーシャルログインauth.social.loginWithPopup('google')auth.social.loginWithRedirect('github')auth.social.handleCallback()
// セッションauth.session.get()auth.session.isAuthenticated()auth.session.refresh()
// ショートカットauth.signIn.passkey()auth.signIn.social('google')auth.signUp.passkey({ email })auth.signOut()
// イベントauth.on('auth:login', (payload) => { ... })auth.on('session:expired', (payload) => { ... })enableOAuth: true を設定すると、oauth 名前空間も利用可能になります:
auth.oauth.popup.login()auth.oauth.silentAuth.check({ redirectUri })auth.oauth.trySilentLogin()auth.oauth.handleSilentCallback()ブラウザサポート
| ブラウザ | バージョン | 備考 |
|---|---|---|
| Chrome | 67+ | WebAuthn含むフルサポート |
| Firefox | 60+ | フルサポート |
| Safari | 14+ | フルサポート(WebAuthnは14以降) |
| Edge | 79+ | Chromiumベース、フルサポート |
次のステップ
- インストール&クイックスタート — パッケージのインストールと最初のログイン
- サンプルアプリ — 完全な動作サンプルのウォークスルー
- Passkey認証 — WebAuthnベースのパスワードレスログイン
- 設定リファレンス — すべてのオプション