Overview
El proveedor de autenticación de ID de Apple permite a los usuarios iniciar sesión con sus credenciales de ID de Apple a través de Iniciar sesión con AppleEste método de autenticación utiliza el protocolo de autorización OAuth.estándar 2 de la industria.0
Cuando un usuario inicia sesión correctamente a través de Iniciar sesión con Apple, Apple devuelve un objeto de credencial que incluye un token web JSON que el proveedor del ID de Apple utiliza para autenticar al usuario. Si el usuario ha otorgado permisos a la app, el objeto de credencial también puede incluir su nombre y dirección de correo electrónico.
For additional information on how to implement Sign in with Apple, check out:
La documentación oficial de Iniciar sesión con Apple en el Portal para desarrolladores de Apple
La Presentación de Iniciar sesión con Apple sesión de WWDC 2019
La aplicación de referencia asociada.
Nota
La aplicación iOS que utiliza autenticación con Apple ID debe estar dirigida a iOS 13 o posterior.
El siguiente diagrama muestra el flujo lógico de OAuth:

Qué necesitarás
Before you can implement Apple ID authentication you will need the following:
Una cuenta activa del Programa para desarrolladores de Apple.
Xcode 11 o más reciente.
Configurar la autenticación de ID de Apple
Al usar Iniciar sesión con Apple con Atlas App Services, puede configurar el proveedor de autenticación de Apple para una aplicación móvil o una aplicación web.
Si desea usar Iniciar sesión con Apple para ambos, puede configurar su propio flujo manual de Iniciar sesión con Apple para la web o la app móvil. Luego, use el JWT que devuelve el proveedor de autenticación JWT personalizado. En los SDK de Realm, puede vincular las identidades de usuario de cada proveedor de autenticación a un solo usuario.
To use Sign in with Apple exclusively with either a web or a mobile application, choose your application type and follow this guide.
Añade Iniciar sesión con Apple a tu aplicación
Su aplicación debe tener el derecho de Iniciar sesión con Apple para poder utilizar esta capacidad.
Selecciona el destino de tu aplicación en Xcode.
Ir a la Signing & Capabilities pestaña y seleccione + Capability.
Busque la función Iniciar sesión con Apple y selecciónela.
Luego, confirme que esté habilitado en el Portal para desarrolladores de Apple.
Vaya a la Certificates, Identifiers and Profiles página del Portal para desarrolladores de Apple.
Selecciona el identificador de tu aplicación en el menú desplegable. Esto te llevará al panel App ID Configuration.
Desplácese hacia abajo hasta que vea la casilla Sign In with Apple. Si no está seleccionada, selecciónela. Si ha realizado cambios, pulse el botón Save.
Toma nota del Bundle ID de tu aplicación. Necesitarás el Bundle ID cuando crees un secreto de cliente y cuando configures Sign in con Apple en Servicios de aplicación.
Crear una clave privada
La clave secreta para Iniciar sesión con Apple es un JSON Web Token que tú creas y firmas con una llave privada. Debes generar la clave privada a través del Portal de desarrolladores de Apple.
Haga clic en Keys en el menú de navegación de la izquierda.
Haga clic en el ícono más azul junto a Keys.
En la página Register a New Key, introduce un Key Name descriptivo y desplázate hacia abajo hasta encontrar la fila Sign in with Apple. Marca la casilla para activar "Iniciar sesión con Apple" y haz clic en Configure.
En la página Configure Key, seleccione el ID de la aplicación para su aplicación como Primary App ID y luego haga clic en Save.
Haz clic en Continue para revisar tu configuración de claves. Cuando estés seguro de haber configurado la clave correctamente, haz clic en Register.
Copie el valor Key ID en algún lugar al que pueda acceder más tarde y luego haga clic en Download para descargar la clave como
.p8Archivo de texto. Lo usarás para generar el secreto del cliente.Importante
Guardar la clave
Solo puedes descargar la clave una vez. Asegúrate de guardarla en un lugar seguro por si la necesitas de nuevo. Si la pierdes, tendrás que generar una nueva.
Crear el JWT secreto del cliente
Ahora puedes crear el JWT secreto de cliente para el proveedor de autenticación de Apple ID. Asegúrate de tener la siguiente información:
El Bundle ID de tu aplicación. Lo usarás como
client_iden el script a continuación.La Key ID de la clave que creaste y el archivo
.p8que contiene la clave.Tu ID de equipo de Apple. Lo encontrarás en la esquina superior derecha del Portal para desarrolladores de Apple.
Una vez que hayas confirmado que tienes toda la información requerida, puedes usar un script para generar el JWT. Puedes definir tu propio script o utilizar el script en este paso.
Para generar el JWT, utilizaremos la gema jwt. Para instalarlo, ejecuta lo siguiente:
gem install jwt
Cree un nuevo archivo llamado generate_client_secret.rb y copie el siguiente bloque de código en el archivo.
# Source: https://developer.okta.com/blog/2019/06/04/what-the-heck-is-sign-in-with-apple require 'jwt' # Update these values with your app's information team_id = '<Apple Team ID>' client_id = '<Bundle ID or Services ID>' key_id = '<Apple Key ID>' key_file = '<Key File Path>' # Define the JWT's headers and claims headers = { # The token must be signed with your key 'kid' => key_id } claims = { # The token is issued by your Apple team 'iss' => team_id, # The token applies to Apple ID authentication 'aud' => 'https://appleid.apple.com', # The token is scoped to your application 'sub' => client_id, # The token is valid immediately 'iat' => Time.now.to_i, # The token expires in 6 months (maximum allowed) 'exp' => Time.now.to_i + 86400*180, } # Read in the key and generate the JWT ecdsa_key = OpenSSL::PKey::EC.new IO.read key_file token = JWT.encode claims, ecdsa_key, 'ES256', headers # Print the JWT to stdout puts token
Actualice los valores de team_id, client_id, key_id y key_file para que coincidan con la información de su aplicación y guarde el archivo. Cuando esté listo para generar el JWT, ejecute el script en su shell:
ruby generate_client_secret.rb >> client_secret.txt
Importante
Salvar el JWT
El script generate_client_secret.rb genera la salida estándar. Al llamarlo, la agregamos a un archivo llamado client_secret.txt. Necesitará el JWT para configurar el proveedor de Apple ID en App Services.
Configurar el proveedor en App Services
En este punto, ha configurado una aplicación de Apple y generado las credenciales OAuth 2.0 necesarias. Ahora puede configurar el proveedor de autenticación de ID de Apple con las credenciales para permitir que los usuarios de la aplicación cliente de App Services inicien sesión.
Haga clic en Authentication en el menú de navegación de la izquierda y luego haga clic en Apple ID.
Active la palanca Provider Enabled.
Para los Client ID Servicios de la Aplicación, ingresa tu Bundle ID de la aplicación.
Para,Client Secret cree un nuevo secreto con un nombre descriptivo y asigne Client Secret Value a la cadena JWT generada. También puede seleccionar un secreto preexistente que contenga el JWT.
Haga clic en Save para terminar de configurar el proveedor. Para que el proveedor esté disponible para las aplicaciones cliente, debe implementar los cambios. Haga clic en Review & Deploy Changes y luego en Deploy.
Para habilitar y configurar el proveedor de autenticación de Apple con servicios de aplicaciones, defina un objeto de configuración para él /auth/providers.json en.
Las configuraciones del proveedor de Apple tienen el siguiente formato:
{ "oauth2-apple": { "name": "oauth2-apple", "type": "oauth2-apple", "disabled": <boolean>, "config": { "clientId": "<Bundle ID>" }, "secret_config": { "clientSecret": "<Secret Name>" }, "redirect_uris": ["<string>", ...] } }
Campo | Descripción |
|---|---|
Client ID config.clientId | Obligatorio. De tu aplicación Bundle ID. |
Client Secret secret_config.clientSecret | Obligatorio. El nombre de un secreto que almacena el Client Secret JWT que generó. |
Redirect URIs redirect_uris | Requerido para aplicaciones web. No se requiere para aplicaciones móviles. |
Una vez que hayas creado el archivo de configuración, puedes hacer que el proveedor de autenticación de Apple ID esté disponible para las aplicaciones cliente implementando tu aplicación.
Para implementar un borrador de aplicación con la CLI de App Services:
appservices push
Para implementar un borrador de aplicación con implementación automática de GitHub:
git add ./auth/providers.json git commit -m "Configure and Enable Apple ID Authentication" git push origin <branch name>
Crea una ID de la aplicación
Un ID de la aplicación de Apple representa tu aplicación y te permite acceder a servicios como Iniciar sesión con Apple. Para configurar el proveedor de ID de Apple, debes crear un nuevo ID de la aplicación.
Vaya a la Certificates, Identifiers and Profiles página del Portal para desarrolladores de Apple.
Haga clic en Identifiers en el menú de navegación de la izquierda.
Haga clic en el ícono más azul junto a Identifiers.
En la página Register a New Identifier, seleccione App IDs y luego haga clic en Continue.
En la Register an App ID página, seleccione el Platform en el que se ejecuta su aplicación y luego ingrese un breve Description y una notación DNS Bundle ID inversa.
Desplácese por la página Register an App ID hasta ver la función Sign in with Apple. Marque la casilla para activarla.
Pulsa el botón Continue en la parte superior de la página. Completa cualquier otro paso de configuración que aplique a tu aplicación y luego pulsa el botón Register.
Crear un ID de servicios
Un ID de servicios de Apple representa una sola aplicación y le permite configurar una URL de devolución de llamada de autorización y definir una clave privada para la aplicación.
Haga clic en Identifiers en el menú de navegación de la izquierda.
Haga clic en el ícono más azul junto a Identifiers.
En la página Register a New Identifier, seleccione Services IDs y luego haga clic en Continue.
En la Register a Services ID página, ingrese un breve Description y una notación DNS Identifier inversa.
Importante
Guardar el identificador
El valor Identifier del ID de servicios es el Client ID de tu aplicación. Necesitarás este valor más adelante para configurar el proveedor Apple ID en Atlas App Services.
Press the Continue button. Confirm the details, and then press Register.
Click into the service you just created. Check the checkbox to enable Sign in with Apple and then click Configure. Select the App ID that you created as the Primary App ID.
Enter your domains, subdomains, and return URLs for the Services ID. Press the Next button.
Click Continue and then click Save. Confirm that you have correctly configured the Services ID and then click Register.
Crear una clave privada
La clave secreta para Iniciar sesión con Apple es un JSON Web Token que tú creas y firmas con una llave privada. Debes generar la clave privada a través del Portal de desarrolladores de Apple.
Haga clic en Keys en el menú de navegación de la izquierda.
Haga clic en el ícono más azul junto a Keys.
En la página Register a New Key, introduce un Key Name descriptivo y desplázate hacia abajo hasta encontrar la fila Sign in with Apple. Marca la casilla para activar "Iniciar sesión con Apple" y haz clic en Configure.
En la página Configure Key, seleccione el ID de la aplicación que creó como Primary App ID y luego haga clic en Save.
![La página Configurar clave en el Portal para desarrolladores de Apple]()
Haz clic en Continue para revisar tu configuración de claves. Cuando estés seguro de haber configurado la clave correctamente, haz clic en Register.
Copia el valor de Key ID en un lugar que puedas acceder más adelante y luego haz clic en Download para descargar la clave como un archivo de texto
.p8. Los utilizarás para generar el secreto del cliente.Importante
Guardar la clave
Solo puedes descargar la clave una vez. Asegúrate de guardarla en un lugar seguro por si la necesitas de nuevo. Si la pierdes, tendrás que generar una nueva.
Crear el JWT secreto del cliente
Ahora puedes crear el JWT secreto de cliente para el proveedor de autenticación de Apple ID. Asegúrate de tener la siguiente información:
El Services ID que creaste. Vas a utilizar esto como el
client_iden el siguiente script.- El Key ID de la clave que creaste y el
.p8 - file that contains the key.
- El Key ID de la clave que creaste y el
- Your Apple Team ID. You can find this in the top right of the Apple
- Portal de desarrolladores.

Una vez que hayas confirmado que tienes toda la información requerida, puedes usar un script para generar el JWT. Puedes definir tu propio script o utilizar el script en este paso.
Para generar el JWT, utilizaremos la gema jwt. Para instalarlo, ejecuta lo siguiente:
gem install jwt
Cree un nuevo archivo llamado generate_client_secret.rb y copie el siguiente bloque de código en el archivo.
# Source: https://developer.okta.com/blog/2019/06/04/what-the-heck-is-sign-in-with-apple require 'jwt' # Update these values with your app's information team_id = '<Apple Team ID>' client_id = '<Bundle ID or Services ID>' key_id = '<Apple Key ID>' key_file = '<Key File Path>' # Define the JWT's headers and claims headers = { # The token must be signed with your key 'kid' => key_id } claims = { # The token is issued by your Apple team 'iss' => team_id, # The token applies to Apple ID authentication 'aud' => 'https://appleid.apple.com', # The token is scoped to your application 'sub' => client_id, # The token is valid immediately 'iat' => Time.now.to_i, # The token expires in 6 months (maximum allowed) 'exp' => Time.now.to_i + 86400*180, } # Read in the key and generate the JWT ecdsa_key = OpenSSL::PKey::EC.new IO.read key_file token = JWT.encode claims, ecdsa_key, 'ES256', headers # Print the JWT to stdout puts token
Actualice los valores de team_id, client_id, key_id y key_file para que coincidan con la información de su aplicación y guarde el archivo. Cuando esté listo para generar el JWT, ejecute el script en su shell:
ruby generate_client_secret.rb >> client_secret.txt
Importante
Salvar el JWT
El script generate_client_secret.rb genera la salida estándar. Al llamarlo, la agregamos a un archivo llamado client_secret.txt. Necesitará el JWT para configurar el proveedor de Apple ID en App Services.
Configurar el proveedor en App Services
En este punto, ha configurado una aplicación de Apple y generado las credenciales OAuth 2.0 necesarias. Ahora puede configurar el proveedor de autenticación de ID de Apple con las credenciales para permitir que los usuarios de la aplicación cliente de App Services inicien sesión.
Haga clic en Authentication en el menú de navegación de la izquierda y luego haga clic en Apple ID.
Active la palanca Provider Enabled.
Para los Servicios de aplicaciones Client ID, ingresa el Apple Services ID que obtuviste cuando creaste un Services ID en el paso 2 anterior.
Para,Client Secret cree un nuevo secreto con un nombre descriptivo y asigne Client Secret Value a la cadena JWT generada. También puede seleccionar un secreto preexistente que contenga el JWT.
Redirect URIsPara, haga clic Add Redirect URI en e introduzca la URL a la que App Services debe redirigir una vez finalizado el proceso de OAuth. Proporcione la URL de un dominio que controle y, a continuación, utilice un enlace universal para redirigir al usuario a su aplicación.
Haga clic en Save para terminar de configurar el proveedor. Para que el proveedor esté disponible para las aplicaciones cliente, debe implementar los cambios. Haga clic en Review & Deploy Changes y luego en Deploy.
To enable and configure the Apple authentication provider with appservices, define a configuration object for it in /auth/providers.json.
Las configuraciones del proveedor de Apple tienen el siguiente formato:
{ "oauth2-apple": { "name": "oauth2-apple", "type": "oauth2-apple", "disabled": <boolean>, "config": { "clientId": "<Apple Services ID>" }, "secret_config": { "clientSecret": "<Secret Name>" }, "redirect_uris": ["<string>", ...] } }
Campo | Descripción |
|---|---|
Client ID config.clientId | Obligatorio. El Services ID de Apple que creaste cuando completaste el paso 2 anterior. |
Client Secret secret_config.clientSecret | Obligatorio. El nombre de un secreto que almacena el Client Secret JWT que generó. |
Redirect URIs redirect_uris | Requerido para aplicaciones web. Lista de redirecciones permitidas. URIs. Una vez que un usuario completa el proceso de autenticación, App Services lo redirige a una URI de redirección específica o, si no se especifica ninguna, a la URL desde la que inició la solicitud de autenticación. App Services solo redirigirá al usuario a una URI que coincida exactamente con una entrada de esta lista, incluyendo el protocolo y las barras diagonales finales. Proporcione una URL para un dominio que usted controle y luego use un enlace universal para redirigir al usuario nuevamente a su aplicación. |
Una vez que hayas creado el archivo de configuración, puedes hacer que el proveedor de autenticación de Apple ID esté disponible para las aplicaciones cliente implementando tu aplicación.
Para implementar un borrador de aplicación con la CLI de App Services:
appservices push
Para implementar un borrador de aplicación con implementación automática de GitHub:
git add ./auth/providers.json git commit -m "Configure and Enable Apple ID Authentication" git push origin <branch name>
Ejemplos
For code examples that demonstrate how to register and log in using Apple authentication, see the documentation for the Realm SDKs:
