2016-12-05 2 views
0

Eine meiner App haben Login-Funktion mit E-Mail & Passwort und es funktioniert gut wie erwartet.Ich möchte meine App mit einer Kombination aus TouchID und E-Mail schützen

Nun, was mein Kunde will hier email + TouchID(ohne Passwort) müssen sich in App anmelden.

also meine erste Frage ist, kann ich das mit beiden Kombination von TouchID & email Login tun?

Ich habe Touch ID für einfache entsperren meine App, aber nie E-Mail mit touchid irgendeine Idee, wie kann ich das tun?

Ich habe Suche und viele viele Apps machen das gleiche, aber wie?

von einem Blog fand ich, dass mit Hilfe von MDM ich kann dies konfigurieren, aber ich habe nicht MDM (Mobile Device Management) verwenden, so nicht sicher dafür.

Vielen Dank im Voraus.

+0

Sie möchten die Touch-ID-Verbindung mit der E-Mail verknüpfen (wie die Touch-ID war das Passwort) und nicht mit (E-Mail + Passwort) + Touch-ID einloggen?Muss sicher sein – Makaille

+0

ja touchId ist mein Passwort – CodeChanger

+0

Es ist nicht möglich, dass Touch-ID ist nur Rückkehr Erfolg, dass ja oder nein. Sie können es also nicht mit E-Mail binden. @CodeChanger – KAR

Antwort

1

können Sie kSecAccessControlTouchIDCurrentSet verwenden E-Mail in Schlüsselanhänger der Registrierung zu dem Zeitpunkt zu speichern. Damit wird der Artikel, den Sie in den Schlüsselbund speichern, eine Kombination aus Current TouchID + Email sein. Zum Zeitpunkt der Anmeldung können Sie E-Mail von Keychain mit touchId abrufen und mit der eingegebenen E-Mail vergleichen.

Um E-Mail in Schlüsselbund zu speichern, verwenden Sie folgenden Code: (funktioniert auf iOS 9 und above-- Arbeit nicht auf iOS 8)

-(void)saveToKeyChain:(NSString*)email{ 
    CFErrorRef error = NULL; 

    SecAccessControlRef scaObject = SecAccessControlCreateWithFlags(kCFAllocatorDefault,kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly, kSecAccessControlTouchIDCurrentSet,   &error); 

    NSDictionary *attributes = @{ 
           (__bridge id)kSecClass:(__bridge id)kSecClassGenericPassword, 
           (__bridge id)kSecAttrService :@"ToucIdWithEmailExample", 
            (__bridge id)kSecValueData :[email dataUsingEncoding:NSUTF8StringEncoding], 
            (__bridge id)kSecUseNoAuthenticationUI :@YES, 

            (__bridge id)kSecAttrAccessControl : (__bridge_transfer id)scaObject 
           }; 

    OSStatus initialWriteStatus = SecItemAdd((__bridge CFDictionaryRef)attributes, nil); 

} 

kSecAccessControlTouchIDCurrentSet in above will take store Email with current authenticated touch. 

keychain Daten retrive, können Sie folgendes:

-(void)retriveKeyChainData{ 

    NSDictionary *querryAttributes = @{ 
           (__bridge id)kSecClass:(__bridge id)kSecClassGenericPassword, 
           (__bridge id)kSecAttrService :@"ToucIdWithEmailExample", 
           (__bridge id)kSecReturnData : @YES, 

           (__bridge id)kSecUseOperationPrompt : @"Authenticate" 
           }.mutableCopy; 

    CFTypeRef dataTypeRef = NULL; 
    OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)querryAttributes, &dataTypeRef); 


    if(status == errSecSuccess) 
    { 
     NSData *data = (__bridge NSData*)(dataTypeRef); 
    } 



} 

Diese Funktion ruft die E-Mail-ID ab, die Sie bei der Registrierung gespeichert haben. Sie können es mit der eingegebenen E-Mail vergleichen und bestätigen.

können Sie durch diese tutorial gehen - wenn Sie es im Detail verstehen wollen.

+0

Danke für die Antwort, die obige Sache wird mir helfen, wenn die Registrierung durch die mobile App gehen, aber in meinem Fall gibt es keine Registrierung von der mobilen App, gibt es also eine andere Möglichkeit, E-Mails mit 'touchId' zu speichern? – CodeChanger

+1

Wenn die Registrierung nicht von Mobile ist, dann Wie identifiziert man, ob die E-Mail-Adresse eingegeben in Mobile ist mit Benutzer verknüpft, die mit Touch authentifiziert hat? Wenn die Registrierung über das Internet erfolgt, muss ein Passwort vorhanden sein. Wenn der Nutzer zum ersten Mal zur App kommt, bitten Sie ihn, die E-Mail-Adresse und das Passwort einzugeben und auf dem Server zu validieren. – Darshana

+0

Ok Nette Idee, lass mich das in meiner App versuchen, Danke für deinen Kommentar und leitete mich auf dem richtigen Weg. – CodeChanger

0

Auf Ihrem Gerät können Sie mehrere Fingerabdruckmuster speichern. Aber vom OS bekommen Sie keine Antwort, welcher Finger in Ordnung ist. Nur wenn der eingegebene Finger in Ordnung ist oder nicht.

Es ist also nicht möglich, Benutzer (oder E-Mail-Adressen) basierend auf dem eingegebenen Finger zu identifizieren.

TouchID ist ein Zutrittskontrollmechanismus, kein Identifikationsmechanismus.

Verwandte Themen