Esdeveniment
Crear aplicacions i agents d'IA
17 de març, 21 - 21 de març, 10
Uneix-te a la sèrie de trobades per crear solucions d'IA escalables basades en casos d'ús del món real amb altres desenvolupadors i experts.
Registreu-vos-hi araAquest navegador ja no s’admet.
Feu l’actualització al Microsoft Edge per aprofitar les característiques més recents, les actualitzacions de seguretat i l’assistència tècnica.
En este artículo se muestra cómo configurar Azure App Service o Azure Functions para usar Iniciar sesión con Apple como un proveedor de autenticación.
Para completar el procedimiento de este artículo, debe haberse inscrito en el programa Apple Developer. Para inscribirse en el programa Apple Developer, vaya a developer.apple.com/programs/enroll.
Atenció
Al habilitar Iniciar sesión con Apple, se deshabilitará la característica de autenticación o autorización de App Service de la aplicación a través de algunos clientes, como Azure Portal, la CLI de Azure y Azure PowerShell. La característica se basa en una nueva superficie de API que, durante la versión preliminar, aún no se ha tomado en cuenta para todas las experiencias de administración.
Deberá crear un identificador de aplicación y un identificador de servicio en el portal de Apple Developer.
<app-url>/.auth/login/apple/callback
. Por ejemplo, https://contoso.azurewebsites.net/.auth/login/apple/callback
. Seleccione Agregar y Guardar.
Apple requiere que los desarrolladores de aplicaciones creen y firmen un token JWT como el valor de secreto de cliente. Para generar este secreto, primero genere y descargue una clave privada de curva elíptica desde el portal de Apple Developer. A continuación, use esa clave para firmar un JWT con una carga útil específica.
.p8
(PKCS#8): usará el contenido del archivo para firmar el JWT del secreto de cliente.Apple requiere que el secreto de cliente tenga la codificación de Base64 de un token JWT. El token JWT descodificado debe tener una carga útil con una estructura similar a la de este ejemplo:
{
"alg": "ES256",
"kid": "URKEYID001",
}.{
"sub": "com.yourcompany.app1",
"nbf": 1560203207,
"exp": 1560289607,
"iss": "ABC123DEFG",
"aud": "https://appleid.apple.com"
}.[Signature]
La versión codificada en Base64 de la carga útil anterior tiene el siguiente aspecto: eyJhbGciOiJFUzI1NiIsImtpZCI6IlVSS0VZSUQwMDEifQ.eyJzdWIiOiJjb20ueW91cmNvbXBhbnkuYXBwMSIsIm5iZiI6MTU2MDIwMzIwNywiZXhwIjoxNTYwMjg5NjA3LCJpc3MiOiJBQkMxMjNERUZHIiwiYXVkIjoiaHR0cHM6Ly9hcHBsZWlkLmFwcGxlLmNvbSJ9.ABSXELWuTbgqfrIUz7bLi6nXvkXAz5O8vt0jB2dSHTQTib1x1DSP4__4UrlKI-pdzNg1sgeocolPNTmDKazO8-BHAZCsdeeTNlgFEzBytIpMKFfVEQbEtGRkam5IeclUK7S9oOva4EK4jV4VmgDrr-LGWWO3TaAxAvy3_ZoKohvFFkVG
Nota: Apple no acepta tokens JWT de secreto de cliente con una fecha de expiración superior a seis meses después de la fecha de creación (o nfb). Esto significa que tendrá que girar el secreto de cliente, como mínimo, cada seis meses.
Puede encontrar más información sobre la generación y validación de tokens en la documentación para desarrolladores de Apple.
Usará el archivo .p8
que descargó anteriormente para firmar el JWT del secreto de cliente. Este es un archivo PCKS#8 que contiene la clave de firma privada en formato PEM. Hay muchas bibliotecas que pueden crear y firmar el JWT por usted.
Hay diferentes tipos de bibliotecas de código abierto disponibles en línea para crear y firmar tokens JWT. Para obtener más información sobre cómo generar tokens JWT, consulte JSON Web Token (JWT). Por ejemplo, una forma de generar el secreto de cliente es importar el paquete NuGet Microsoft.IdentityModel.Tokens y ejecutar una pequeña cantidad del código C# que se muestra a continuación.
using Microsoft.IdentityModel.Tokens;
public static string GetAppleClientSecret(string teamId, string clientId, string keyId, string p8key)
{
string audience = "https://appleid.apple.com";
string issuer = teamId;
string subject = clientId;
string kid = keyId;
IList<Claim> claims = new List<Claim> {
new Claim ("sub", subject)
};
CngKey cngKey = CngKey.Import(Convert.FromBase64String(p8key), CngKeyBlobFormat.Pkcs8PrivateBlob);
SigningCredentials signingCred = new SigningCredentials(
new ECDsaSecurityKey(new ECDsaCng(cngKey)),
SecurityAlgorithms.EcdsaSha256
);
JwtSecurityToken token = new JwtSecurityToken(
issuer,
audience,
claims,
DateTime.Now,
DateTime.Now.AddDays(180),
signingCred
);
token.Header.Add("kid", kid);
token.Header.Remove("typ");
JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
return tokenHandler.WriteToken(token);
}
.p8
en un editor de texto y copiar todo lo que haya entre -----BEGIN PRIVATE KEY-----
y -----END PRIVATE KEY-----
sin saltos de línea.Este token devuelto es el valor del secreto de cliente que se usará para configurar el proveedor de Apple.
Important
El secreto de cliente es una credencial de seguridad importante, No comparta este secreto con nadie ni lo distribuya en una aplicación cliente.
Agregue el secreto de cliente como una configuración de aplicación, con un nombre de configuración de su elección. Anote este nombre para usarlo más adelante.
Nota
La configuración necesaria está en un nuevo formato de API, que actualmente solo es compatible con la configuración basada en archivos (versión preliminar). Debe seguir los pasos que se indican a continuación para usar este tipo de archivo.
Esta sección le guiará a través de la actualización de la configuración para incluir su nuevo IDP. La siguiente es una configuración de ejemplo.
En el objeto identityProviders
, agregue un objeto apple
si todavía no existe ninguno.
Asigne un objeto a esa clave con un objeto registration
dentro y, opcionalmente, un objeto login
:
"apple" : {
"registration" : {
"clientId": "<client ID>",
"clientSecretSettingName": "APP_SETTING_CONTAINING_APPLE_CLIENT_SECRET"
},
"login": {
"scopes": []
}
}
a. En el objeto registration
, establezca clientId
en el identificador de cliente que ha recopilado.
b. En el objeto registration
, establezca clientSecretSettingName
en el nombre de la opción de configuración de la aplicación donde almacenó el secreto de cliente.
c. En el objeto login
, puede optar por establecer la matriz scopes
para que incluya una lista de los ámbitos utilizados al autenticarse con Apple, como "nombre" y "correo electrónico". Si los ámbitos están configurados, se solicitarán explícitamente en la pantalla de consentimiento cuando los usuarios inicien sesión por primera vez.
Una vez establecida esta configuración, está listo para usar el proveedor de Apple para autenticarse en la aplicación.
Una configuración completa podría ser similar a la siguiente (en el que el valor de APPLE_GENERATED_CLIENT_SECRET apunta a una opción de configuración que contiene un token JWT generado):
{
"platform": {
"enabled": true
},
"globalValidation": {
"redirectToProvider": "apple",
"unauthenticatedClientAction": "RedirectToLoginPage"
},
"identityProviders": {
"apple": {
"registration": {
"clientId": "com.contoso.example.client",
"clientSecretSettingName": "APPLE_GENERATED_CLIENT_SECRET"
},
"login": {
"scopes": []
}
}
},
"login": {
"tokenStore": {
"enabled": true
}
}
}
Esdeveniment
Crear aplicacions i agents d'IA
17 de març, 21 - 21 de març, 10
Uneix-te a la sèrie de trobades per crear solucions d'IA escalables basades en casos d'ús del món real amb altres desenvolupadors i experts.
Registreu-vos-hi araFormació
Mòdul
Autenticación de usuarios con Azure Static Web Apps - Training
Publique una aplicación de JavaScript de Angular, React, Svelte o Vue con API y autenticación mediante Azure Static Web Apps y Azure Functions. Implemente el código de GitHub en un sitio de ensayo mediante las direcciones URL de vista previa.
Certificació
Microsoft Certified: Identity and Access Administrator Associate - Certifications
Muestre las características de Microsoft Entra ID para modernizar las soluciones de identidad, implementar soluciones híbridas e implementar la gobernanza de identidades.