எத்திரியத்தில் அங்கீகாரம்
நீங்கள் பாரம்பரிய வலை மேம்பாட்டிலிருந்து வருகிறீர்கள் என்றால், பயனர் பெயர்/கடவுச்சொல் உள்நுழைவு, OAuth ஓட்டங்கள் மற்றும் அமர்வு குக்கீகளைப் பயன்படுத்தியிருப்பீர்கள். எத்திரியத்தில் அங்கீகாரம் வித்தியாசமாக செயல்படுகிறது—மேலும் பல வழிகளில், மிகவும் எளிமையாக.
எத்திரியத்தில், ஒரு பயனர் தங்கள் பணப்பையுடன் ஒரு செய்தியில் கையொப்பமிடுவதன் மூலம் தங்கள் அடையாளத்தை நிரூபிக்கிறார். சேமிக்க கடவுச்சொல் இல்லை. கசியவிட நற்சான்றிதழ்களின் தரவுத்தளம் இல்லை. குறியாக்கவியல் மட்டுமே.
இது வெப்2 இலிருந்து எவ்வாறு வேறுபடுகிறது?
| வெப்2 | எத்திரியம் |
|---|---|
| பயனர் பெயர் + கடவுச்சொல் | பணப்பை முகவரி + கையொப்பம் |
| சேவையகம் நற்சான்றிதழ்களைச் சேமிக்கிறது | பயனர் தனிப்பட்ட திறவுகோலை வைத்திருக்கிறார் |
| அமர்வுகள் குக்கீகள் / JWT மூலம் நிர்வகிக்கப்படுகின்றன | அமர்வுகள் புறச்சங்கிலி பணப்பை கையொப்பத்துடன் தொடங்குகின்றன |
| "Google உடன் உள்நுழைக" | "எத்திரியத்துடன் உள்நுழைக" |
| கடவுச்சொல் மீட்டமைப்பு ஓட்டங்கள் | விதைச் சொற்றொடர் மீட்பு |
அடிப்படை மாற்றம்: வெப்2 இல், ஒரு மையப்படுத்தப்பட்ட சேவையகம் உங்களை அங்கீகரிக்கிறது. எத்திரியத்தில், ஒரு குறிப்பிட்ட முகவரியை நீங்கள் கட்டுப்படுத்துகிறீர்கள் என்பதை நிரூபிப்பதன் மூலம் உங்களை நீங்களே அங்கீகரிக்கிறீர்கள்—மேலும் எவரும் அதைச் சுயாதீனமாகச் சரிபார்க்கலாம்.
முன்நிபந்தனைகள்
நீங்கள் புரிந்துகொண்டிருப்பதை உறுதிசெய்யவும்:
- எத்திரியம் கணக்குகள் மற்றும் அவை எவ்வாறு செயல்படுகின்றன
- பணப்பை என்றால் என்ன, அதை எவ்வாறு இணைப்பது
- பொது-தனிப்பட்ட திறவுகோல் குறியாக்கவியல் அடிப்படைகள்
பணப்பை அடிப்படையிலான அங்கீகாரம் எவ்வாறு செயல்படுகிறது
முக்கிய ஓட்டம் எளிமையானது:
- உங்கள் பரவலாக்கப்பட்ட செயலி (dapp) பயனரைத் தங்கள் பணப்பையை இணைக்கக் கேட்கிறது (மெட்டாமேஸ்க், Rainbow, WalletConnect போன்றவற்றின் மூலம்)
- பணப்பை பயனரின் எத்திரியம் முகவரியைப் பகிர்கிறது - இது அவர்களின் பொது அடையாளங்காட்டி
- உங்கள் dapp ஒரு தனித்துவமான செய்தியை உருவாக்குகிறது (ஒரு நான்ஸ் அல்லது சவால்)
- பயனர் செய்தியில் கையொப்பமிடுகிறார் அவர்களின் தனிப்பட்ட திறவுகோலுடன் (பணப்பையின் உள்ளே நடக்கிறது)
- உங்கள் பின்தளம் கையொப்பத்தைச் சரிபார்க்கிறது கோரப்பட்ட முகவரிக்கு எதிராக
- செல்லுபடியானால், பயனர் அங்கீகரிக்கப்படுகிறார்
எந்தக் கடவுச்சொல்லும் தட்டச்சு செய்யப்படவில்லை, சேமிக்கப்படவில்லை அல்லது அனுப்பப்படவில்லை.
எத்திரியத்துடன் உள்நுழைக (EIP-4361)
EIP-4361 (புதிய தாவலில் திறக்கப்படும்) எத்திரியம் உள்நுழைவுக்கான நிலையான செய்தி வடிவமைப்பை வரையறுக்கிறது, இது பொதுவாக SIWE (Sign-In with Ethereum) என்று அழைக்கப்படுகிறது. இது தற்காலிகச் செய்தி கையொப்பமிடுதலைக் கட்டமைக்கப்பட்ட, பாதுகாப்பான தரநிலையுடன் மாற்றுகிறது.
ஒரு SIWE செய்தி இப்படி இருக்கும்:
example.com wants you to sign in with your Ethereum account:
0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B
I accept the Terms of Service: https://example.com/tos
URI: https://example.com/login
Version: 1
Chain ID: 1
Nonce: 32891757
Issued At: 2024-06-12T14:30:00Z
SIWE இன் முக்கிய அம்சங்கள்:
- களப் பிணைப்பு (Domain binding) - செய்தியில் களம் (domain) அடங்கும், இது ஃபிஷிங்கைத் தடுக்கிறது
- சங்கிலி ஐடி (Chain ID) - கையொப்பம் எந்தப் பிணையத்திற்குச் செல்லுபடியாகும் என்பதைக் குறிப்பிடுகிறது
- நான்ஸ் - மறுஇயக்கத் தாக்குதல்களைத் (replay attacks) தடுக்கிறது
- காலாவதி - செல்லுபடியாகும் சாளரத்தைக் கட்டுப்படுத்தும் விருப்ப நேரமுத்திரை
- வளங்கள் - வரையறுக்கப்பட்ட அணுகலுக்கான விருப்ப URIகள்
SIWE நிரலகங்கள்
- siwe (புதிய தாவலில் திறக்கப்படும்) - Spruce இன் அதிகாரப்பூர்வ TypeScript செயலாக்கம்
- siwe-rs (புதிய தாவலில் திறக்கப்படும்) - Rust செயலாக்கம்
- siwe-go (புதிய தாவலில் திறக்கப்படும்) - Go செயலாக்கம்
எடுத்துக்காட்டு: siwe உடன் கிளையன்ட் பக்க உள்நுழைவு
import { SiweMessage } from 'siwe'
import { BrowserProvider } from 'ethers'
async function signIn() {
const provider = new BrowserProvider(window.ethereum)
const signer = await provider.getSigner()
const address = await signer.getAddress()
// 1. உங்கள் பின்தளத்திலிருந்து ஒரு நான்ஸ்-ஐப் பெறவும்
const { nonce } = await fetch('/api/auth/nonce').then(r => r.json())
// 2. SIWE செய்தியை உருவாக்கி கையொப்பமிடவும்
const message = new SiweMessage({
domain: window.location.host,
address,
statement: 'Sign in to My Dapp',
uri: window.location.origin,
version: '1',
chainId: 1,
nonce,
})
const signature = await signer.signMessage(message.prepareMessage())
// 3. சரிபார்ப்புக்கு பின்தளத்திற்கு அனுப்பவும்
await fetch('/api/auth/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ message, signature }),
})
}
எடுத்துக்காட்டு: சேவையகப் பக்க சரிபார்ப்பு (Node.js)
import { SiweMessage, generateNonce } from 'siwe'
// ஒரு நான்ஸ்-ஐ வழங்கி அதை அமர்வில் சேமிக்கவும், அதனால் /verify பின்னர் அதைச் சரிபார்க்க முடியும்
app.get('/api/auth/nonce', (req, res) => {
req.session.nonce = generateNonce()
res.json({ nonce: req.session.nonce })
})
app.post('/api/auth/verify', async (req, res) => {
try {
const { message, signature } = req.body
const siweMessage = new SiweMessage(message)
const { success, data } = await siweMessage.verify({
signature,
nonce: req.session.nonce,
})
if (success) {
// data.address என்பது சரிபார்க்கப்பட்ட எத்திரியம் முகவரி ஆகும்
// பயனருக்காக ஒரு அமர்வு அல்லது JWT-ஐ உருவாக்கவும்
req.session.address = data.address
res.json({ ok: true, address: data.address })
}
} catch {
res.status(401).json({ error: 'Invalid signature' })
}
})
பணப்பை இணைப்பு நிரலகங்கள்
அங்கீகரிப்பதற்கு முன், பயனர் தங்கள் பணப்பையை இணைக்க வேண்டும். இந்த நிரலகங்கள் அதை எளிதாக்குகின்றன:
- RainbowKit (புதிய தாவலில் திறக்கப்படும்) - அழகான UI உடன் பயன்படுத்தத் தயாராக உள்ள React கூறு
- ConnectKit (புதிய தாவலில் திறக்கப்படும்) - எளிதாகச் சேர்க்கக்கூடிய பணப்பை இணைப்பு மாதிரி (modal)
- AppKit (WalletConnect) (புதிய தாவலில் திறக்கப்படும்) - உள்ளமைக்கப்பட்ட SIWE உடன் பல-சங்கிலி பணப்பை இணைப்பு
- wagmi (புதிய தாவலில் திறக்கப்படும்) -
useAccount,useConnectஉடன் React Hooks நிரலகம்
கையொப்பங்களை கைமுறையாகச் சரிபார்த்தல்
நீங்கள் SIWE ஐப் பயன்படுத்த விரும்பவில்லை என்றால், கையொப்பங்களை நேரடியாகச் சரிபார்க்கலாம்:
import { verifyMessage } from 'ethers'
// பயனர் கையொப்பமிட்ட செய்தி
const message = `Sign in to My Dapp. Nonce: ${storedNonce}`
// கையொப்பத்திலிருந்து கையொப்பமிட்டவரின் முகவரியை மீட்டெடுக்கவும்
const recoveredAddress = verifyMessage(message, signature)
// கோரப்பட்ட முகவரியுடன் ஒப்பிடவும்
if (recoveredAddress.toLowerCase() === claimedAddress.toLowerCase()) {
// அங்கீகாரம் வெற்றிகரமானது
}
முக்கியமான பாதுகாப்புக் குறிப்புகள்
- எப்போதும் ஒரு நான்ஸைப் பயன்படுத்தவும் - பழைய கையொப்பம் மீண்டும் பயன்படுத்தப்படும் மறுஇயக்கத் தாக்குதல்களைத் தடுக்கிறது
- களத்தைச் சேர்க்கவும் - வெவ்வேறு தளங்களில் கையொப்பங்கள் செல்லுபடியாவதைத் தடுக்கிறது
- காலாவதியைச் சரிபார்க்கவும் - கையொப்பங்கள் வரையறுக்கப்பட்ட செல்லுபடியாகும் சாளரத்தைக் கொண்டிருக்க வேண்டும்
- முடிந்தவரை SIWE (EIP-4361) ஐப் பயன்படுத்தவும் - இது உங்களுக்காக மேற்கண்ட அனைத்தையும் கையாளுகிறது
- தனிப்பட்ட திறவுகோல்களை ஒருபோதும் வெளிப்படுத்த வேண்டாம் - கையொப்பமிடுதல் பணப்பையின் உள்ளே நடக்கிறது; உங்கள் செயலி முடிவை மட்டுமே பார்க்கிறது
அமர்வு மேலாண்மை
அங்கீகரிக்கப்பட்டதும், வெப்2 ஐப் போலவே உங்களுக்கும் அமர்வுகள் தேவை. பொதுவான வடிவங்கள்:
- JWT டோக்கன்கள் - கையொப்பத்தைச் சரிபார்த்த பிறகு JWT ஐ வழங்கவும், API கோரிக்கைகளுக்குப் பயன்படுத்தவும்
- சேவையகப் பக்க அமர்வுகள் - சரிபார்க்கப்பட்ட முகவரியை அமர்வு குக்கீயில் சேமிக்கவும்
- வளங்களுடன் SIWE - குறிப்பிட்ட URIகளுடன் இணைக்கப்பட்ட வரையறுக்கப்பட்ட அணுகல் டோக்கன்களை வரையறுக்கவும்
வெப்2 இலிருந்து முக்கிய வேறுபாடு: பயனரின் எத்திரியம் முகவரி அவர்களின் நிலையான அடையாளமாகும். புதிய கணக்கை உருவாக்காமல் எந்தவொரு dapp இலும் அவர்கள் அதைப் பயன்படுத்தலாம்.
பரவலாக்கப்பட்ட அடையாளம்
எத்திரியம் அங்கீகாரம் என்பது சுய-இறையாண்மை அடையாளத்தை (self-sovereign identity) நோக்கிய ஒரு பரந்த இயக்கத்தின் ஒரு பகுதியாகும். இந்த இடத்தில் உள்ள தரநிலைகள் மற்றும் திட்டங்கள் பின்வருமாறு:
- எத்திரியம் பெயர் சேவை (ENS) (புதிய தாவலில் திறக்கப்படும்) - முகவரிகளுக்குத் தீர்க்கப்படும் மனிதர்கள் படிக்கக்கூடிய பெயர்கள் (எ.கா.,
vitalik.eth) - எத்திரியம் சான்றளிப்பு சேவை (EAS) (புதிய தாவலில் திறக்கப்படும்) - அடையாளம் மற்றும் நற்சான்றிதழ்கள் பற்றிய சங்கிலிசார் சான்றளிப்புகள்
- W3C பரவலாக்கப்பட்ட அடையாளங்காட்டிகள் (DIDs) (புதிய தாவலில் திறக்கப்படும்) - சரிபார்க்கக்கூடிய பரவலாக்கப்பட்ட அடையாளத்திற்கான உலகளாவிய தரநிலை
- Ceramic Network (புதிய தாவலில் திறக்கப்படும்) - ஒரு DID உடன் இணைக்கப்பட்ட பரவலாக்கப்பட்ட தரவு ஸ்ட்ரீம்கள்
மேலும் படிக்க
- EIP-4361: எத்திரியத்துடன் உள்நுழைக (புதிய தாவலில் திறக்கப்படும்)
- SIWE ஆவணங்கள் (புதிய தாவலில் திறக்கப்படும்)
- Auth0 இல் எத்திரியத்துடன் உள்நுழைக (புதிய தாவலில் திறக்கப்படும்)
- Reown AppKit அங்கீகார ஆவணங்கள் (புதிய தாவலில் திறக்கப்படும்)
- ENS ஆவணங்கள் (புதிய தாவலில் திறக்கப்படும்)