Как управлять паролем в iOS?

Разработка приложения, в котором несколько пользователей будут использовать одно и то же устройство и которое будет работать в автономном режиме. Найдена оболочка цепочки для ключей. Но настоящая проблема заключается в том, как управлять несколькими паролями пользователей в цепочке для ключей? У меня есть база данных sqlite для хранения всех зарегистрированных имен пользователей. Как лучше всего управлять паролем? И как ?


person Lithu T.V    schedule 12.06.2013    source источник
comment
знайте, что брелок не является полностью безопасным. Если устройство взломано, то кто-то может получить доступ к цепочке ключей в открытом виде. Если вы собираетесь использовать связку ключей, вам также следует реализовать обнаружение джейлбрейка.   -  person SpyMachine    schedule 12.06.2013


Ответы (3)


Вы можете хранить пароли в связке ключей.

Создайте словарь, который содержит имя пользователя в качестве ключей и пароли в качестве значений. Вы можете сохранить этот словарь в элементе цепочки для ключей, чтобы безопасно хранить все пароли.

person Amit    schedule 12.06.2013

Вы можете использовать обертку SFHFKeychainUtils и хранить разные пароли для разных сервисов.

Вы сохраняете пользователя в NSUserDefaults для каждой службы, а затем сохраняете и извлекаете пароль с помощью параметра serviceName.

     [SFHFKeychainUtils storeUsername:name andPassword:secret forServiceName:serviceName updateExisting:YES error:&error];
person gillyD    schedule 12.06.2013

Взгляните на этот проект с открытым исходным кодом на github. , получение паролей, установка паролей и удаление паролей.

Вставьте пароль в связку ключей:

NSError *error;
[SSKeychain setPassword:@"password"
             forService:@"example_name"
                account:@"account1"
                  error:&error];

В вашей ситуации я бы изменил переменную учетной записи для вашего второго пароля.

Чтобы восстановить пароли:

  NSError *error;
  NSLog(@"password1 is %@", [SSKeychain passwordForService:@"example_name" account:@"account1" error:&error]);
  NSLog(@"password2 is %@", [SSKeychain passwordForService:@"example_name" account:@"account2" error:&error]);
person Shams Ahmed    schedule 12.06.2013
comment
Это был бы простой подход, если бы вы хотели использовать класс Obj-c и не хотите входить в c api, однако, если вы решите, что хотите перейти в маршрут c api или даже изменить SSKeyChain, взгляните на kSecClassGenericPassword и kSecClassInternetPassword. Объект KeyChain хранится в словаре, поэтому ключи должны быть уникальными, но если вас двое, создайте два типа ключа, один общий, а другой интернет-пароль, который позволит использовать два пароля в одной цепочке ключей. - person Shams Ahmed; 14.06.2013