@godai_dev/auth
v0.2.0
Published
GDI 共通認証基盤(gdi-auth)JWT 検証 SDK。RS256 / JWKS ベースで auth_token を検証し、クロスドメイン SSO ハンドオフ(PKCE)を補助する
Readme
@godai_dev/auth
GDI 共通認証基盤(gdi-auth)が発行する RS256 JWT を検証するための SDK です。 検証専用(署名鍵・secret は一切保持しません)。Cloudflare Workers を主対象としますが、 jose の Web 標準 API のみを使うため Node / Edge ランタイム全般で動作します。
インストール
npm install @godai_dev/auth設定
認証サービスの URL(AUTH_SERVICE_URL、例: https://auth.gdidatahub.net)を
環境変数等で用意してください。https スキームのみ許可されます。
セキュリティ上の注意(SSRF 防止):
authServiceUrlはハードコード、 または信頼できる環境変数の値に限定してください。リクエストパラメータや DB に保存された値から動的に構築しないでください。
使い方
Next.js middleware での利用
import { authMiddleware } from '@godai_dev/auth';
const checkAuth = authMiddleware(process.env.AUTH_SERVICE_URL!, '/login');
export async function middleware(request: Request) {
return (await checkAuth(request)) ?? NextResponse.next();
}現在のユーザーを取得する
import { getCurrentUser } from '@godai_dev/auth';
const user = await getCurrentUser(request, process.env.AUTH_SERVICE_URL!);
if (!user) {
// 未認証
}トークンを直接検証する(エラー種別が必要な場合)
import { verifyAuthToken, AuthError } from '@godai_dev/auth';
try {
const payload = await verifyAuthToken(token, process.env.AUTH_SERVICE_URL!);
} catch (err) {
if (err instanceof AuthError) {
// err.code: EXPIRED / INVALID_SIGNATURE / INVALID_ISSUER / NO_MATCHING_KID / JWKS_FETCH_FAILED 等
}
}セキュリティ上の注意(内部情報漏洩防止):
AuthError.messageは ログ出力用です。クライアントへのレスポンスにはAuthError.codeのみを 使用し、messageを含めないでください。
