கடவுச்சொற்கள் கணக்கு பாதுகாப்பில் பலவீனமான இணைப்பு. அவை ஃபிஷ் செய்யப்படலாம், கசியலாம், மீண்டும் பயன்படுத்தப்படலாம் அல்லது மறக்கப்படலாம். அதனால்தான் WebAuthn passkeys க்கான ஆதரவை நாங்கள் சேர்த்துள்ளோம் - ஃபிஷிங்-எதிர்ப்பு, கடவுச்சொல் இல்லா அங்கீகார முறை, இது மிகவும் பாதுகாப்பானது மற்றும் வசதியானது.

Passkeys என்றால் என்ன?

Passkeys என்பது உங்கள் சாதனத்தில் (தொலைபேசி, மடிக்கணினி, பாதுகாப்பு விசை) சேமிக்கப்படும் கிரிப்டோகிராஃபிக் நற்சான்றிதழ்கள், இவை அங்கீகாரத்திற்கான கடவுச்சொற்களை மாற்றுகின்றன. அவை WebAuthn தரநிலையைப் (FIDO2 இன் பகுதி) பயன்படுத்துகின்றன மற்றும் பல நன்மைகளை வழங்குகின்றன:

  • ஃபிஷிங்-எதிர்ப்பு - Passkeys வலைத்தளத்தின் டொமைனுடன் இணைக்கப்பட்டுள்ளன, எனவே போலி தளங்களில் பயன்படுத்த முடியாது
  • கசிய இரகசியங்கள் இல்லை - சர்வரில் பொது விசை மட்டுமே சேமிக்கப்படுகிறது
  • சாதன-இணைப்பு - தனிப்பட்ட விசை உங்கள் சாதனத்திலிருந்து வெளியேறாது
  • பயோமெட்ரிக்-பாதுகாப்பு - பொதுவாக Face ID, Touch ID அல்லது Windows Hello மூலம் பாதுகாக்கப்படுகிறது
  • குறுக்கு-சாதன ஒத்திசைவு - நவீன தளங்கள் iCloud, Google அல்லது Microsoft கணக்குகள் வழியாக சாதனங்கள் முழுவதும் passkeys ஐ ஒத்திசைக்கின்றன

எங்கள் செயல்படுத்தல்

எங்கள் தற்போதைய django-allauth அங்கீகார அடுக்கில் WebAuthn passkey ஆதரவை ஒருங்கிணைத்தோம், வலை மற்றும் மொபைல் API இறுதிப்புள்ளிகளை வழங்குகிறோம்.

பதிவு ஓட்டம்

ஒரு பயனர் புதிய passkey ஐப் பதிவு செய்யும்போது, ஓட்டம் இவ்வாறு செயல்படுகிறது:

  1. கிளையன்ட் பதிவு விருப்பங்களைக் கோருகிறது சர்வரிலிருந்து
  2. சர்வர் சவாலை உருவாக்குகிறது பயனர் மற்றும் சார்ந்திருக்கும் தரப்பு தகவலுடன்
  3. உலாவியின் WebAuthn API பயனரைத் தூண்டுகிறது (பயோமெட்ரிக் அல்லது பாதுகாப்பு விசை)
  4. கிளையன்ட் நற்சான்றிதழை அனுப்புகிறது சர்வருக்கு
  5. சர்வர் சரிபார்த்து சேமிக்கிறது பொது விசையை
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# பதிவைத் தொடங்க API இறுதிப்புள்ளி
class WebAuthnRegistrationOptionsView(APIView):
    permission_classes = [IsAuthenticated]

    def get(self, request):
        from allauth.mfa.webauthn.internal import auth as webauthn_auth

        # நற்சான்றிதழ் உருவாக்க விருப்பங்களை உருவாக்கு
        creation_options = webauthn_auth.begin_registration(
            request.user,
            passwordless=False  # 2FA ஆகப் பயன்படுத்து, கடவுச்சொல் இல்லாமல் அல்ல
        )

        return Response({
            "success": True,
            "creation_options": creation_options,
        })

அங்கீகார ஓட்டம்

passkey ஐப் பயன்படுத்தி இரண்டு-காரணி அங்கீகாரத்திற்கு:

  1. பயனர் முதன்மை அங்கீகாரத்தை முடிக்கிறார் (பயனர்பெயர்/கடவுச்சொல் அல்லது சமூக உள்நுழைவு)
  2. சர்வர் சவாலை திருப்பி அனுப்புகிறது WebAuthn சரிபார்ப்புக்கு
  3. உலாவி தூண்டுகிறது passkey க்கு (பயோமெட்ரிக் தொடுதல்)
  4. நற்சான்றிதழ் சரிபார்க்கப்படுகிறது சேமிக்கப்பட்ட பொது விசைக்கு எதிராக
  5. பயனர் முழுமையாக அங்கீகரிக்கப்படுகிறார்
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
class WebAuthnVerifyView(APIView):
    def post(self, request):
        credential = request.data.get("credential")

        # அங்கீகாரத்தை முடித்து நற்சான்றிதழை சரிபார்
        authenticator = webauthn_auth.complete_authentication(
            request.user,
            credential
        )

        # பாதுகாப்பு கண்காணிப்புக்கு பயன்பாட்டை பதிவு செய்
        authenticator.last_used_at = timezone.now()
        authenticator.save()

        return Response({"success": True})

Passkey மேலாண்மை

பயனர்கள் தங்கள் பதிவுசெய்த passkeys ஐ நிர்வகிக்கலாம்:

  • அனைத்து passkeys ஐயும் பட்டியலிடு பதிவு தேதி மற்றும் கடைசி பயன்பாட்டுடன்
  • passkeys ஐ மறுபெயரிடு எளிதான அடையாளத்திற்கு (எ.கா., “iPhone”, “MacBook”)
  • passkeys ஐ நீக்கு (கடைசி அங்கீகரிப்பாளரை அகற்றுவதில் பாதுகாப்புடன்)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class WebAuthnListView(APIView):
    def get(self, request):
        authenticators = Authenticator.objects.filter(
            user=request.user,
            type=Authenticator.Type.WEBAUTHN
        ).order_by("-created_at")

        return Response({
            "passkeys": [
                {
                    "id": auth.pk,
                    "name": auth.wrap().name,
                    "created_at": auth.created_at.isoformat(),
                    "last_used_at": auth.last_used_at.isoformat() if auth.last_used_at else None,
                }
                for auth in authenticators
            ]
        })

API இறுதிப்புள்ளிகள்

எங்கள் REST API மொபைல் பயன்பாட்டிற்கு முழு WebAuthn ஆதரவை வழங்குகிறது:

இறுதிப்புள்ளிமுறைவிளக்கம்
/api/webauthn/register/options/GETபதிவு சவாலைப் பெறு
/api/webauthn/register/complete/POSTபதிவை முடி
/api/webauthn/authenticate/options/GETஅங்கீகார சவாலைப் பெறு
/api/webauthn/verify/POST2FA க்கு நற்சான்றிதழை சரிபார்
/api/webauthn/GETபதிவுசெய்த passkeys ஐப் பட்டியலிடு
/api/webauthn/<id>/PATCHpasskey ஐ மறுபெயரிடு
/api/webauthn/<id>/DELETEpasskey ஐ நீக்கு

பாதுகாப்பு பரிசீலனைகள்

மீட்பு குறியீடுகள்

ஒரு பயனர் தங்கள் முதல் அங்கீகரிப்பாளரை (passkey அல்லது TOTP) பதிவு செய்யும்போது, மீட்பு குறியீடுகளை தானாக உருவாக்குகிறோம். மற்ற அனைத்து அங்கீகார முறைகளும் கிடைக்கவில்லை என்றால் இந்த ஒரு முறை பயன்பாட்டு குறியீடுகளைப் பயன்படுத்தலாம்:

1
2
if Authenticator.objects.filter(user=request.user).count() == 1:
    auto_generate_recovery_codes(request._request)

பூட்டுதலைத் தடுத்தல்

எந்த இரண்டு-காரணி அங்கீகார முறையும் இல்லாமல் விட்டுவிடும் என்றால் பயனர்கள் தங்கள் கடைசி passkey ஐ நீக்க முடியாது:

1
2
3
4
if not adapter.can_delete_authenticator(authenticator):
    return Response({
        "message": "நீக்க முடியாது - குறைந்தது ஒரு அங்கீகார முறை இருக்க வேண்டும்"
    }, status=400)

கண்காணிப்பு

பாதுகாப்பு கண்காணிப்புக்கு Datadog அளவீடுகள் வழியாக passkey பயன்பாட்டைக் கண்காணிக்கிறோம்:

1
2
3
increment("webauthn.registration.success")
increment("webauthn.verify.success")
increment("webauthn.verify.failed")

உலாவி ஆதரவு

அனைத்து நவீன உலாவிகளிலும் WebAuthn ஆதரிக்கப்படுகிறது:

  • Chrome 67+
  • Firefox 60+
  • Safari 13+
  • Edge 79+
  • மொபைல் Chrome, Safari, Firefox

பழைய உலாவிகளுக்கு, பயனர்கள் இன்னும் TOTP (அங்கீகரிப்பாளர் பயன்பாடுகள்) அல்லது மீட்பு குறியீடுகளைப் பயன்படுத்தலாம்.

பயனர் அனுபவம்

passkey ஐச் சேர்ப்பதற்கு சில விநாடிகள் மட்டுமே ஆகும்:

  1. அமைப்புகள் → பாதுகாப்பு → இரண்டு-காரணி அங்கீகாரம் க்குச் செல்லுங்கள்
  2. Passkey சேர் என்பதைக் கிளிக் செய்யுங்கள்
  3. உங்கள் சாதனத்திற்குப் பெயரிடுங்கள் (எ.கா., “iPhone 15”)
  4. Face ID / Touch ID / Windows Hello மூலம் அங்கீகரியுங்கள்
  5. முடிந்தது! உங்கள் passkey பதிவு செய்யப்பட்டது

எதிர்கால உள்நுழைவுகளுக்கு பயோமெட்ரிக் உறுதிப்படுத்தல் மட்டுமே தேவை - கடவுச்சொற்களை தட்டச்சு செய்வது அல்லது அங்கீகரிப்பாளர் பயன்பாடுகளிலிருந்து குறியீடுகளை நகலெடுப்பது இல்லை.

நாங்கள் ஏன் Passkeys ஐத் தேர்ந்தெடுத்தோம்

முறைஃபிஷிங் ஆபத்துபயனர் அனுபவம்மீட்பு
கடவுச்சொற்கள்உயர்வுமோசமானது (மறந்துவிட்டது, பலவீனமானது)மின்னஞ்சல் மீட்டமைப்பு
SMS 2FAநடுத்தரம் (SIM swap)சரிதொலைபேசி எண்
TOTP பயன்பாடுகள்குறைவுகைமுறை குறியீடு உள்ளீடுகாப்பு விசைகள்
Passkeysமிகக் குறைவுசிறந்ததுமீட்பு குறியீடுகள்

Passkeys அங்கீகாரத்தின் எதிர்காலத்தைக் குறிக்கின்றன. அவை ஏற்கனவே Apple, Google மற்றும் Microsoft தளங்களால் ஆதரிக்கப்படுகின்றன, இது கிட்டத்தட்ட எங்கள் அனைத்து பயனர்களுக்கும் அணுகக்கூடியதாக ஆக்குகிறது.


கடவுச்சொல் இல்லாமல் செல்ல தயாரா? உங்கள் பாதுகாப்பு அமைப்புகளில் passkeys ஐ இயக்குங்கள்!