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);