AppleAuth es una biblioteca muy simple para .NET que encapsula la lógica para comunicarse con la API REST de Apple para iniciar sesión con Apple. El objetivo principal es facilitar la implementación de Iniciar sesión con Apple para cualquier aplicación web.
Para instalar el paquete, ejecute el siguiente comando en su Consola del Administrador de paquetes:
PM > Install - Package AppleAuth . NETO, alternativamente, simplemente instale el paquete usando el administrador de paquetes de Nuget. El proyecto se puede encontrar aquí: Enlace a NuGet
Para utilizar Iniciar sesión con Apple, debe inscribirse en el Programa de desarrolladores de Apple. Una vez que se haya inscrito en el programa, vaya a Ayuda de la cuenta de desarrollador y navegue hasta Configurar capacidades de la aplicación > Iniciar sesión con Apple. Allí puede encontrar la información para configurar Iniciar sesión con Apple para su aplicación.
También puede consultar mi publicación de blog para obtener más información sobre cómo configurar los ajustes en su cuenta de desarrollador para implementar Iniciar sesión con Apple.
A continuación, debes configurar tu página web para Iniciar sesión con Apple. Siga las pautas de la documentación oficial. También puede consultar este enlace para ver cómo configurar los estilos de los botones.
Si está implementando su aplicación en una aplicación web de Azure, asegúrese de agregar la siguiente configuración: WEBSITE_LOAD_USER_PROFILE = 1 , para que IIS pueda acceder al almacenamiento de claves privadas en el almacén de cuentas de usuario. Puede aplicar esto desde Azure Portal desde Configuración > Configuración de la aplicación, o puede ejecutar el siguiente comando en Cloud Shell:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1 .
También es importante tener en cuenta que esta configuración está disponible solo para niveles de precios no compartidos.
Si está implementando su aplicación en su propio servidor web, ejecutando Microsoft IIS, deberá habilitar "Cargar perfil de usuario" en "Configuración avanzada" en su grupo de aplicaciones. De lo contrario, obtendrá una CryptographicException que dice "El sistema no puede encontrar el archivo especificado".
AppleAuthProvider.cs Cree una nueva instancia de AppleAuthProvider , pase los parámetros requeridos y estará listo. Utilice el método GetAuthorizationToken para obtener un token de autorización de Apple; Utilice el método GetRefreshToken para verificar si un usuario todavía utiliza 'Iniciar sesión con Apple' para iniciar sesión en su sistema; Utilice el método GetButtonHref para obtener una cadena de consulta para el botón "Iniciar sesión con Apple".
Después de que el usuario haga clic en el botón "Iniciar sesión con Apple" en su página, será redirigido a https://appleid.apple.com/. Después de que proporcionen sus credenciales, Apple realizará una solicitud POST a la URL que haya especificado como URL de redireccionamiento. Puede manejar la solicitud utilizando InitialTokenResponse.cs . Para recuperar un token de autorización, primero debe crear una nueva instancia de AppleAuthProvider con los parámetros requeridos. Después de eso, simplemente llame al método GetAuthorizationToken() pasando code de su objeto InitialTokenResponse y su clave privada. Aquí hay una implementación de muestra en C#:
[ HttpPost ]
public async Task HandleResponseFromApple ( AppleAuth . TokenObjects . InitialTokenResponse response )
{
string privateKey = System . IO . File . ReadAllText ( "path/to/file.p8" ) ;
AppleAuth . AppleAuthProvider provider = new AppleAuth . AppleAuthProvider ( "MyClientID" , "MyTeamID" , "MyKeyID" , "MyRedirectUrl" , "SomeState" ) ;
AppleAuth . TokenObjects . AuthorizationToken authorizationToken = await provider . GetAuthorizationToken ( response . code , privateKey ) ;
} Tenga en cuenta que los tokens devueltos por Apple son de corta duración, por lo que debe crear una sesión o un usuario en su sistema utilizando el objeto AppleAuth.TokenObjects.AuthorizationToken devuelto. Después de eso, puedes verificar si el usuario todavía ha iniciado sesión usando "Iniciar sesión con Apple" recuperando un token de actualización usando el método GetRefreshToken :
[ HttpPost ]
public async Task < bool > IsUserUsingAppleID ( )
{
string privateKey = System . IO . File . ReadAllText ( "path/to/file.p8" ) ;
AppleAuth . AppleAuthProvider provider = new AppleAuthProvider ( "MyClientID" , "MyTeamID" , "MyKeyID" , "https://myredirecturl.com/HandleResponseFromApple" , "SomeState" ) ;
AppleAuth . TokenObjects . AuthorizationToken refreshToken = await provider . GetRefreshToken ( authorizationToken . RefreshToken , privateKey ) ;
return refreshToken != null ;
}Eres más que bienvenido a contribuir al proyecto y mejorarlo. Al contribuir, intente mantener una actitud estrictamente profesional, respetuosa y amigable. También asegúrese de comunicar el cambio que desea realizar mediante un problema o cualquier otro método a los propietarios de este repositorio.
No tenemos pautas estrictas para crear solicitudes de extracción, pero puede utilizar el flujo de GitHub ya conocido para obtener pautas generales.
Este proyecto tiene la licencia MIT; consulte LICENSE.md para obtener más detalles.