Comprender credenciales nombradas heredadas
Una credencial nombrada heredada especifica la URL del extremo de una llamada y sus parámetros de autenticación obligatorios en una sola definición. Las credenciales nombradas heredadas están desusadas y se interrumpirán en una versión futura.
Ediciones necesarias
| Disponible en: Salesforce Classic (no disponible en todas las organizaciones) y Lightning Experience |
| Disponible en: todas las ediciones |
Para simplificar la configuración de llamadas autenticadas, especifique una credencial nombrada heredada como el extremo de la llamada. Si en su lugar especifica una URL como el extremo de la llamada, puede registrar esa URL en la configuración del sitio remoto de su organización y controlar usted mismo la autenticación. Por ejemplo, para una llamada Apex, su código controla la autenticación, lo que puede ser menos seguro y especialmente complicado para implementaciones con OAuth.
Salesforce gestiona toda la autenticación para llamadas que especifican una credencial nombrada heredada como el extremo de la llamada, para que usted no tenga que hacerlo. También puede omitir las configuraciones del sitio remoto, que de lo contrario son obligatorias para llamadas a sitios externos, para el sitio definido en la credencial nombrada heredada.
Las credenciales nombradas heredadas se admiten en estos tipos de definiciones de llamadas:
- Llamadas de Apex
- Fuentes de datos externas de estos tipos:
- Salesforce Connect: OData 2.0
- Salesforce Connect: OData 4.0
- Salesforce Connect: Personalizados (desarrollados con el Marco del conector de Apex)
- Salesforce Connect: Amazon DynamoDB
- Servicios externos
Las credenciales nombradas heredadas también incluyen un campo OutboundNetworkConnection que puede utilizar para enrutar llamadas a través de una conexión privada. Mediante la separación de la autenticación y la URL de la definición de la llamada, las credenciales nombradas heredadas facilitan el mantenimiento de las llamadas. Por ejemplo, si una URL de extremo cambia, solo tiene que actualizar la credencial nombrada heredada. Todas las llamadas que hacen referencia a credenciales nombradas heredadas simplemente siguen funcionando.
Si dispone de varias organizaciones, puede crear una credencial nombrada heredada con el mismo nombre pero con una URL de extremo diferente en cada organización. A continuación, puede empaquetar e implementar (en todas las organizaciones) una definición de llamada que hace referencia al nombre compartido de esas credenciales nombradas heredadas. Por ejemplo, la credencial nombrada heredada en cada organización puede tener una URL de extremo diferente para dar cabida a diferencias en entornos de desarrollo y producción. Si una llamada de Apex especifica el nombre compartido de esas credenciales nombradas heredadas, las clase de Apex que define la llamada se puede empaquetar e implementar en todas esas organizaciones sin comprobar el entorno de forma programática.
Los protocolos de autenticación de credencial nombrada heredada incluyen la autenticación de contraseña básica, OAuth 2.0, JWT, JWT Token Exchange y AWS Signature Versión 4. Puede configurar cada credencial nombrada heredada para utilizar una autenticación por usuario o principal nombrada de toda la organización. Una autenticación principal nombrada aplica la misma configuración de autenticación o credencial para toda la organización, mientras que la autenticación pro usuario proporciona el control de acceso a nivel del usuario individual.
Para hacer referencia a una credencial nombrada heredada desde una definición de llamada, utilice la dirección URL de la credencial nombrada heredada. Una URL de credencial nombrada heredada contiene el callout: del esquema, el nombre de la credencial nombrada heredada y una ruta opcional. Por ejemplo: callout:Mi_credencial_nombrada/, alguna_ruta.
Puede adjuntar una cadena de consulta a una dirección URL de una credencial nombrada heredada. Utilice una interrogación (?) como el separador entre la dirección URL de una credencial nombrada heredada y la cadena de consulta. Por ejemplo: callout:Mi_credencial_nombrada/, alguna_ruta?format=json.
Si transmite información confidencial como datos de cuidados sanitarios o datos de tarjeta de crédito, se requieren credenciales nombradas heredadas autenticadas. Recomendamos que los clientes proporcionen sus propios certificados para seguridad adicional en las transmisiones de datos confidenciales.
HttpRequest req = new HttpRequest();
req.setEndpoint('callout:My_Named_Credential/some_path');
req.setMethod('GET');
Http http = new Http();
HTTPResponse res = http.send(req);
System.debug(res.getBody());
La credencial nombrada heredada a la que se hace referencia especifica la URL del extremo y la configuración de la autenticación.
Si utiliza OAuth en vez de la autenticación por contraseña, el código Apex sigue siendo el mismo. La configuración de la autenticación difiere en la credencial nombrada heredada, que hace referencia a un proveedor de autenticación que está definido en la organización.
En cambio, veamos la apariencia del código Apex sin una credencial nombrada heredada. Fíjese en que el código se vuelve más complejo para controlar la autenticación, incluso si nos ajustamos a la autenticación básica por contraseña. La codificación con OAuth es incluso más compleja y es un caso de uso idóneo para credenciales nombradas heredadas.
HttpRequest req = new HttpRequest();
req.setEndpoint('https://my_endpoint.example.com/some_path');
req.setMethod('GET');
// Because we didn't set the endpoint as a legacy named credential,
// our code has to specify:
// - The required username and password to access the endpoint
// - The header and header information
String username = 'myname';
String password = 'mypwd';
Blob headerValue = Blob.valueOf(username + ':' + password);
String authorizationHeader = 'BASIC ' +
EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);
// Create a new http object to send the request object
// A response object is generated as a result of the request
Http http = new Http();
HTTPResponse res = http.send(req);
System.debug(res.getBody());
- Definir una credencial nombrada heredada
Cree una credencial nombrada heredada para especificar la URL del extremo de una llamada y sus parámetros de autenticación obligatorios en una sola definición. A continuación puede especificar las credenciales nombradas heredadas como un extremo de una llamada de Apex para permitir a Salesforce gestionar toda la autenticación. También puede omitir las configuraciones del sitio remoto, que de lo contrario son obligatorias para llamadas a sitios externos, para el sitio definido en la credencial nombrada heredada. - Otorgar el acceso a configuración de autenticación para credenciales nombradas heredadas
Para las credenciales nombradas heredadas que utilizan la autenticación por usuario, otorgue el acceso a usuarios mediante perfiles y conjuntos de permisos. Esto permite a los usuarios configurar y gestionar sus propios parámetros de autenticación para acceder al sistema externo.

