Skip to content

Authentication Providers

Authentication Provider คือระบบที่ให้บริการยืนยันตัวตน ซึ่งมีทั้งแบบที่เราสร้างเองและแบบ third-party

1. Custom Authentication Provider

ระบบยืนยันตัวตนที่เราพัฒนาขึ้นเอง มีความยืดหยุ่นสูงแต่ต้องดูแลความปลอดภัยเอง

javascript
// Example of custom auth provider
class CustomAuthProvider {
	async validateUser(email, password) {
		const user = await db.users.findUnique({ 
			where: { email } 
		});
		
		if (!user) return null;
		
		const isValid = await verifyPassword(
			password, 
			user.hashedPassword
		);
		
		return isValid ? user : null;
	}

	async createSession(userId) {
		const token = generateToken();
		await db.sessions.create({
			data: { userId, token }
		});
		return token;
	}
}

2. OAuth Providers

บริการยืนยันตัวตนจาก platform ยอดนิยม เช่น Google, Facebook, GitHub

javascript
// Example using multiple OAuth providers
import { OAuth2Client } from 'google-auth-library';
import { FacebookAuthProvider } from 'firebase/auth';

const authProviders = {
	google: new OAuth2Client({
		clientId: process.env.GOOGLE_CLIENT_ID,
		clientSecret: process.env.GOOGLE_CLIENT_SECRET
	}),
	
	facebook: new FacebookAuthProvider(),
	
	async verifyGoogleToken(token) {
		const ticket = await this.google.verifyIdToken({
			idToken: token,
			audience: process.env.GOOGLE_CLIENT_ID
		});
		return ticket.getPayload();
	}
};

3. Identity as a Service (IDaaS)

บริการจัดการ authentication แบบครบวงจร เช่น Auth0, Firebase Auth, Supabase Auth

javascript
// Example using Auth0
import { Auth0Provider } from '@auth0/auth0-react';

function App() {
	return (
		<Auth0Provider
			domain="your-domain.auth0.com"
			clientId="your-client-id"
			redirectUri={window.location.origin}
		>
			<YourApp />
		</Auth0Provider>
	);
}

// Example using Firebase Auth
import { initializeApp } from 'firebase/app';
import { getAuth } from 'firebase/auth';

const app = initializeApp({
	apiKey: "your-api-key",
	authDomain: "your-app.firebaseapp.com",
	// ...other config
});

const auth = getAuth(app);

Released under the MIT License