Colección de citas famosas - Slogan de motivación - Artículos|Agregar contraseña al llaveroArtículo|Agregar contraseña al llavero

Artículos|Agregar contraseña al llaveroArtículo|Agregar contraseña al llavero

Agregue credenciales de red al llavero en nombre del usuario.

Añade la contraseña de red al llavero del usuario.

Utiliza el servicio de Llaveros para almacenar las contraseñas de los usuarios de forma sencilla y segura. De esta manera, evita pedir repetidamente al usuario su contraseña y no tiene que implementar su propio cifrado, que puede ser propenso a errores.

Los servicios de llavero permiten a los usuarios almacenar contraseñas de forma sencilla y segura. Esto elimina la necesidad de pedir constantemente a los usuarios sus contraseñas y la necesidad de cifrarlas usted mismo, lo que a menudo es propenso a errores.

Primero, definimos una estructura para contener las credenciales a medida que se mueven en la memoria:

Primero, definimos una estructura para contener el nombre de usuario y la contraseña.

A continuación, defina una enumeración de Error que pueda usarse para comunicar los resultados de Acceso a Llaveros:

Luego, defina una enumeración de Error que pueda usar con "Acceso a Llaveros" El valor de retorno se comunica.

Luego, identifique el servidor que está utilizando su aplicación:

Luego, defina el servidor al que accede su aplicación:

Utilice las constantes de instancia y servidor de la estructura de credenciales , Puede crear una consulta de adición:

Cree una consulta de adición utilizando una instancia de estructura de credenciales y constantes del servidor:

El primer par clave-valor del diccionario de consulta indica que el elemento es una contraseña de Internet, según De esta contraseña, el "Servicio de llavero" infiere que los datos son confidenciales y deben cifrarse. Esto también garantiza que el elemento tenga propiedades que lo distingan de otras contraseñas de Internet, como el servidor y la cuenta a la que se aplica. De hecho, los siguientes dos pares clave-valor de la consulta proporcionan esta información, junto con el nombre de usuario obtenido del usuario como cuenta y el nombre de dominio correspondiente a la contraseña como servidor.

El primer par clave-valor en el diccionario de consulta identifica el tipo de este elemento de llavero como Contraseña de red. Según este tipo, el Servicio de Llavero infiere que los datos son privados y deben cifrarse, y garantiza que el elemento contenga atributos que distingan las contraseñas de otras redes, como el servidor y la cuenta a la que se aplica la contraseña. Los siguientes dos pares clave-valor proporcionan esta información, el nombre de usuario como cuenta y el nombre de dominio como servidor.

Nota:

El "Servicio de llavero" también proporciona la clase de proyecto relacionada kSecClassGenericPassword. Las contraseñas universales son similares a las contraseñas de Internet en la mayoría de los aspectos, pero carecen de algunos atributos específicos para el acceso remoto (por ejemplo, no tienen el atributo kSecAttrServer). Utilice una contraseña universal cuando no necesite estas propiedades adicionales.

El servicio de llavero también proporciona elementos de llavero de tipo kSecClassGenericPassword. Las contraseñas universales son idénticas a las contraseñas de red en muchos aspectos, pero las contraseñas universales carecen de atributos específicos que indiquen acceso remoto (por ejemplo, no tienen el atributo kSecAttrServer). Si no necesita estas propiedades, utilice una contraseña universal.

Aunque no es necesario en este caso, puede caracterizar aún más la contraseña especificando propiedades adicionales como el número de puerto o el protocolo de red. Por ejemplo, si necesita almacenar diferentes credenciales FTP y HTTP para el mismo usuario que trabaja en el mismo servidor, puede agregar el atributo kSecAttrProtocol para diferenciarlas.

Aunque no es necesario en este ejemplo, puede describir mejor la contraseña especificando propiedades adicionales como un número de puerto o un protocolo de red. Por ejemplo, si necesita almacenar la contraseña FTP y la contraseña HTTP del mismo usuario en el mismo servidor, debe agregar el atributo kSecAttrProtocol para distinguirlas.

Finalmente, la consulta contiene la contraseña del usuario, codificada como una instancia de datos.

Finalmente, la consulta contiene la contraseña del usuario, codificada como tipo NSData.

Una vez completada la consulta, simplemente pásala a la función SecItemAdd:

La consulta ha sido creada, ahora solo necesitas pasarla a la función SecItemAdd:

Aunque normalmente ignoraría los datos devueltos proporcionados por referencia en el segundo parámetro de una operación de adición (como se muestra aquí), siempre verifique el estado de retorno de una función para asegurarse de que la operación haya sido exitosa. Por ejemplo, la operación puede fallar si ya existe un elemento con un atributo determinado.

Aunque los datos devueltos a los que hace referencia el segundo parámetro generalmente se ignoran en la operación de agregar, aún necesitamos verificar el estado de retorno de la función para asegurarnos de que la operación sea exitosa. La operación puede fallar, por ejemplo, si ya existe un elemento con las mismas propiedades.

Nota:

Si desea devolver datos, recuerde que la función SecItemAdd se comporta de manera muy similar a la función SecItemCopyMatching en este sentido. Para obtener más información, consulte Búsqueda de elementos del llavero.

Si necesita los datos devueltos, debe tener en cuenta que la función SecItemAdd es muy similar a la función SecItemCopyMatching. Para obtener más información, consulte Buscar elementos de llavero para elementos de llavero.

Para poder encontrar el objeto más adelante, utilizarás tu conocimiento de sus propiedades. En este caso, los servidores y las cuentas son los elementos diferenciadores del proyecto. Para propiedades constantes (aquí el servidor), se utiliza el mismo valor durante el proceso de búsqueda. Por el contrario, el atributo de cuenta es dinámico porque contiene un valor proporcionado por el usuario en tiempo de ejecución. Siempre que su aplicación nunca agregue elementos similares con propiedades diferentes (como contraseñas para diferentes cuentas en el mismo servidor), puede omitir estas propiedades dinámicas como parámetros de búsqueda y, en su lugar, recuperarlas junto con el elemento. Entonces, cuando buscas la contraseña, también obtienes el nombre de usuario correspondiente.

Para encontrar el artículo más tarde, debes usar las propiedades del artículo. En este caso, los servidores y las cuentas son las características que distinguen este proyecto de otros proyectos. Para propiedades constantes (propiedades del servidor en este caso), utilice el mismo valor al realizar la consulta. Por el contrario, el atributo de cuenta es dinámico porque lo proporciona el usuario en tiempo de ejecución. Siempre que su aplicación no agregue elementos similares con diferentes propiedades (como contraseñas para diferentes cuentas en el mismo servidor), puede omitir estas propiedades dinámicas y juntarlas con los elementos del llavero. Esto da como resultado que cuando consulte la contraseña, también obtendrá el nombre de usuario correspondiente.

Si su aplicación agrega elementos con diferentes propiedades dinámicas, necesitará una forma de seleccionarlos durante la recuperación. Una opción es registrar la información del artículo de otra manera. Por ejemplo, si guarda un registro de usuario en el modelo de datos principal, almacenará el nombre de usuario allí después de usar los servicios de llavero para almacenar el campo de contraseña. Posteriormente, calificará la búsqueda de contraseñas utilizando nombres de usuario extraídos del modelo de datos.

Si agrega elementos con diferentes propiedades dinámicas a su aplicación, necesita una forma de seleccionar lo que necesita en su búsqueda. Una opción es registrar la información del artículo de otra manera. Por ejemplo, si usa CoreData para guardar registros de usuarios, sus colegas guardarán los nombres de usuario después de usar el servicio Keychain. Después de eso, utilizará el nombre de usuario que obtuvo en el modelo de datos para encontrar la contraseña.

En otros casos, puede tener sentido caracterizar aún más el elemento añadiendo más atributos. Por ejemplo, puede incluir el atributo kSecAttrLabel en la consulta de adición original para proporcionar una cadena para etiquetar elementos con un propósito específico. Luego puede utilizar esta propiedad para limitar su búsqueda más adelante.

En otros casos, tiene sentido agregar más propiedades para describir mejor el elemento del llavero. Por ejemplo, puede agregar el atributo kSecAttrLabel a la consulta original, que proporciona una cadena para etiquetar la funcionalidad específica del elemento. Más adelante, podrá limitar el alcance de su consulta a través de esta propiedad.

Agrega uno o más elementos al llavero.

Guarda uno o más elementos del llavero en el llavero.

Especifique la categoría del elemento del llavero.

Especifica el tipo de elemento del llavero.

Especifique las propiedades del elemento del llavero.

Especifique las propiedades del elemento del llavero.