Manual de Desarrollador - Autenticación Automática SII
Documento base: autenticacion.pdf
Nombre original: Manual de Desarrollador - Autenticación Automática
Código: OI2007_AUTAUTOM_MDE_1.9
Institución: Servicio de Impuestos Internos - Subdirección Informática
Versión: 1.9 del 18/11/2007
Nota de conversión: este archivo Markdown corresponde a una versión estructurada y limpia del contenido técnico del manual de autenticación automática del SII. Está orientado a uso de implementación de API, integración, pruebas y certificación. Se mantuvieron los elementos técnicos relevantes: flujo, WSDL, parámetros, estados, XML de entrada/salida y endpoints de certificación/producción.
Índice
- Introducción
- Capítulo 1 - Análisis del sistema
- Capítulo 2 - Visión general del sistema
- Capítulo 3 - WSDL de autenticación automática
- Capítulo 4 - Parámetros de entrada
- Capítulo 5 - Parámetros de salida
- Capítulo 6 - Ejemplos XML de respuesta
- Capítulo 7 - Guía para realizar pruebas
- Capítulo 8 - Cómo firmar una semilla
- Anexo 1 - Ejemplo de token
- Checklist técnico para una API de integración con SII
Introducción
El método de autenticación automática, denominado AUTAUTOM, corresponde a un mecanismo mediante el cual el SII verifica el uso de la llave privada del certificado digital del cliente a través de Web Services.
Para cumplir su objetivo, AUTAUTOM entrega dos Web Services principales:
CrSeedGetTokenFromSeed
Mediante estos servicios se obtiene:
- Un texto aleatorio o semilla.
- Un token de autenticación.
Estos elementos son requisitos para autenticar a una aplicación frente al SII y luego poder consumir otros servicios asociados a factura electrónica u otros procesos habilitados.
El documento está dirigido a desarrolladores que deben utilizar y probar los servicios CrSeed y GetTokenFromSeed.
Para acceder a los servicios del SII se utiliza WSDL, es decir, Web Services Definition Language, lenguaje descriptor basado en XML que permite conocer la ubicación, formato, tipos de datos, funciones, parámetros de entrada y salida de un Web Service.
WSDL principales en producción
https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL
https://palena.sii.cl/DTEWS/GetTokenFromSeed.jws?WSDL
Requisitos de uso
Para utilizar este manual se requiere conocimiento previo de:
- XML.
- Web Services.
- Certificado digital.
- Firma XML.
Capítulo 1 - Análisis del sistema
El sistema permite implementar autenticación automática mediante Web Services y certificado digital.
AUTAUTOM está implementado bajo una lógica B2B, que permite que las aplicaciones se comuniquen entre sí mediante llamadas de programa a programa.
A grandes rasgos, el flujo es el siguiente:
- El cliente remoto solicita al SII un texto aleatorio llamado semilla.
- El SII genera la semilla y la entrega al cliente.
- El cliente firma la semilla con la llave privada de su certificado digital.
- El cliente envía la semilla firmada al SII.
- El SII valida:
- La firma.
- La vigencia de la semilla.
- El certificado digital.
- Si la validación es correcta, el SII entrega un token.
- El token permite acceder a otras aplicaciones del SII sin autenticarse nuevamente.
1.1 Quiénes pueden utilizar esta aplicación
Puede ser utilizada por personas o empresas que tengan registrada una clave secreta en las bases de datos del SII.
El sistema permite autenticarse mediante certificado digital válido para el SII.
1.2 Objetivo de la aplicación
El objetivo de la aplicación es entregar una solución de autenticación automática frente al SII.
1.3 Características de la aplicación
- Autenticación programa a programa.
- Autenticación sin intervención humana por parte del servidor.
- Desarrollo en base a Web Services.
- Autenticación mediante certificado digital.
- El cliente debe estar registrado en las bases del SII como contribuyente habilitado para ingresar a aplicaciones autenticadas de Internet.
Capítulo 2 - Visión general del sistema
El flujo general de autenticación es:
sequenceDiagram
participant Cliente as Aplicación Cliente
participant CrSeed as WS CrSeed.jws
participant Token as WS GetTokenFromSeed.jws
participant SII as SII
Cliente->>CrSeed: Request Semilla
CrSeed-->>Cliente: Response Semilla
Cliente->>Cliente: Firma semilla con certificado digital
Cliente->>Token: Envía semilla firmada
Token->>SII: Valida XML, semilla, certificado y firma
alt Validación OK
Token-->>Cliente: Envía Token
else Validación fallida
Token-->>Cliente: Error XML
end
Para autenticarse, el cliente debe solicitar una semilla mediante un request al Web Service CrSeed.jws.
El Web Service genera automáticamente una semilla en formato XML. La semilla es almacenada en una base de datos y luego enviada al cliente.
La semilla es un número único y aleatorio, utilizado como identificador de sesión, y tiene una duración de 2 minutos.
Una vez recibida la semilla, el cliente debe firmarla y enviarla en formato XML estándar al SII mediante el Web Service GetTokenFromSeed.jws.
El SII valida:
- Que el XML cumpla el formato solicitado.
- Que la semilla esté vigente.
- Que el certificado digital sea válido.
- Que la firma sea válida.
Si la validación es correcta, se genera un token. Si falla, el Web Service responde con un mensaje de error en XML.
Información que debe contener el XML de semilla firmada
- Semilla.
- Firma.
- Módulo de la llave pública.
- Certificado digital.
Capítulo 3 - WSDL de autenticación automática
AUTAUTOM entrega dos Web Services:
CrSeedGetTokenFromSeed.jws
3.1.1 WSDL de CrSeed.jws
CrSeed entrega el método getSeed, que permite obtener una semilla.
Endpoint producción
https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL
Fragmento WSDL relevante
<wsdl:definitions targetNamespace="https://palena.sii.cl/DTEWS/CrSeed.jws"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="https://palena.sii.cl/DTEWS/CrSeed.jws"
xmlns:intf="https://palena.sii.cl/DTEWS/CrSeed.jws"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types/>
<wsdl:message name="getSeedRequest" />
<wsdl:message name="getSeedResponse">
<wsdl:part name="getSeedReturn" type="xsd:string" />
</wsdl:message>
<wsdl:portType name="CrSeed">
<wsdl:operation name="getSeed">
<wsdl:input message="impl:getSeedRequest" name="getSeedRequest" />
<wsdl:output message="impl:getSeedResponse" name="getSeedResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CrSeedSoapBinding" type="impl:CrSeed">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="getSeed">
<wsdlsoap:operation soapAction="" />
<wsdl:input name="getSeedRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="https://palena.sii.cl/DTEWS/CrSeed.jws"
use="encoded" />
</wsdl:input>
<wsdl:output name="getSeedResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="https://palena.sii.cl/DTEWS/CrSeed.jws"
use="encoded" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CrSeedService">
<wsdl:port binding="impl:CrSeedSoapBinding" name="CrSeed">
<wsdlsoap:address location="https://palena.sii.cl/DTEWS/CrSeed.jws" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
3.1.2 WSDL de GetTokenFromSeed.jws
GetTokenFromSeed entrega el método getToken, que permite obtener un token.
Endpoint producción
https://palena.sii.cl/DTEWS/GetTokenFromSeed.jws?WSDL
Operaciones relevantes
getVersiongetToken
El método getToken recibe como parámetro pszXml, que corresponde al XML de la semilla firmada.
<wsdl:message name="getTokenRequest">
<wsdl:part name="pszXml" type="xsd:string" />
</wsdl:message>
Capítulo 4 - Parámetros de entrada
4.1.1 Parámetros de entrada para CrSeed.jws
CrSeed.jws no tiene parámetros de entrada.
4.1.2 Ejemplo SOAP para solicitar semilla
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:getSeed xmlns:m="https://palena.sii.cl/DTEWS/CrSeed.jws" />
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
4.1.3 Parámetros de entrada para GetTokenFromSeed.jws
Los parámetros de entrada de GetTokenFromSeed.jws corresponden a un string formado por los campos del XML que envía la semilla firmada.
4.1.4 Ejemplo SOAP para obtener token
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:getToken xmlns:m="https://palena.sii.cl/DTEWS/GetTokenFromSeed.jws">
<pszXml xsi:type="xsd:string">String</pszXml>
</m:getToken>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
4.1.5 XML de entrada para semilla firmada
El XML debe contener la semilla y la firma bajo el estándar XML Digital Signature.
<?xml version="1.0"?>
<getToken>
<item>
<Semilla>10</Semilla>
</item>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>...</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...</SignatureValue>
<KeyInfo>
<KeyValue>
<RSAKeyValue>
<Modulus>...</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
</KeyValue>
<X509Data>
<X509Certificate>...</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</getToken>
Capítulo 5 - Parámetros de salida
5.1.1 Parámetros de salida
La salida de los servicios corresponde a un string XML codificado según estándar XML. Por lo tanto, el cliente debe decodificar el string y llevarlo a su formato XML original.
Los campos de retorno son:
ESTADOGLOSADATOS, que puede corresponder aSEED,SEMILLAoTOKENsegún el servicio.
| Campo | Tipo | Largo | Detalle | Obligatorio |
|---|---|---|---|---|
ESTADO | String alfanumérico | 1-8 | Código de estado | Sí |
GLOSA | String alfanumérico | 1-1 | Detalle del estado | Sí |
DATOS | String numérico | 1-5 | Nombre del tag variable según dato solicitado | Sí |
5.2.2 Estados de salida de CrSeed
| Estado | Detalle |
|---|---|
00 | OK, genera semilla |
-1 | No se registró línea en el archivo de configuración |
-2 | Error de retorno |
Errores asociados al estado -2:
ERROR RETORNONO PUEDO CREAR O ACT. TOKEN
5.2.2 Estados de salida de GetTokenFromSeed
| Estado | Detalle |
|---|---|
00 | Token creado |
01 | XML inválido, IOException, función valSignedXml |
02 | XML inválido, SAXException, función valSignedXml |
03 | XML inválido, ParserConfigurationException, función valSignedXml |
04 | XML inválido, elemento Signature no existe, función valSignedXml |
05 | XML inválido, firma inválida, función valSignedXml |
06 | XML inválido, elemento Semilla no existe, función getSeed |
07 | Error MessageException |
08 | Error de retorno |
09 | Error MessageException |
10 | Error de retorno |
11 | XML inválido, elemento Certificate no existe, función getCertificado |
12 | Error MessageException |
21 | Firma inválida; la llave pública no coincide con la del certificado |
-3 | Error en autenticación |
-07 | Error de parse en validación de RUT; verificar que el usuario esté registrado en el SII con autenticación mediante certificado digital |
Errores asociados al estado 08:
PARAMETROS INCORRECTOSTIME-OUT DEL SEEDNO GENERA TOKEN func:CreaTokenNO PUEDO ACT. SEED CON TOKENNO Existe SEED
Errores asociados al estado 10:
ERROR RETORNO DATOSNO PUEDO CREAR O ACT. TOKEN
5.2.3 Ejemplo de salida codificada de CrSeed.jws
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:getSeedResponse
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="https://palena.sii.cl/DTEWS/CrSeed.jws">
<getSeedReturn xsi:type="xsd:string">
<?xml version="1.0" encoding="UTF-8"?>
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/XMLSchema">
<SII:RESP_HDR><ESTADO>00</ESTADO></SII:RESP_HDR>
<SII:RESP_BODY><SEMILLA>000000000078</SEMILLA></SII:RESP_BODY>
</SII:RESPUESTA>
</getSeedReturn>
</ns1:getSeedResponse>
</soapenv:Body>
</soapenv:Envelope>
Salida decodificada de CrSeed.jws
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/XMLSchema">
<SII:RESP_HDR>
<ESTADO>00</ESTADO>
</SII:RESP_HDR>
<SII:RESP_BODY>
<SEMILLA>000000000078</SEMILLA>
</SII:RESP_BODY>
</SII:RESPUESTA>
Ejemplo salida codificada de GetTokenFromSeed.jws
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:getTokenResponse
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://palena.sii.cl/DTEWS/GetTokenFromSeed.jws">
<getTokenReturn xsi:type="xsd:string">
<?xml version="1.0" encoding="UTF-8"?>
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/XMLSchema">
<SII:RESP_HDR><ESTADO>00</ESTADO><GLOSA>Token Creado</GLOSA></SII:RESP_HDR>
<SII:RESP_BODY><TOKEN>XAuSbYXiNh9Ik</TOKEN></SII:RESP_BODY>
</SII:RESPUESTA>
</getTokenReturn>
</ns1:getTokenResponse>
</soapenv:Body>
</soapenv:Envelope>
Salida decodificada de GetTokenFromSeed.jws
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/XMLSchema">
<SII:RESP_HDR>
<ESTADO>00</ESTADO>
<GLOSA>Token Creado</GLOSA>
</SII:RESP_HDR>
<SII:RESP_BODY>
<TOKEN>XAuSbYXiNhIk</TOKEN>
</SII:RESP_BODY>
</SII:RESPUESTA>
Capítulo 6 - Ejemplos XML de respuesta
6.1 Ejemplo salida genera semilla
Estado 00 - genera semilla
<?xml version="1.0" encoding="UTF-8"?>
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>00</ESTADO>
</SII:RESP_HDR>
<SII:RESP_BODY>
<SEED>00000000064</SEED>
</SII:RESP_BODY>
</SII:RESPUESTA>
Estado -1 - error no genera semilla
<?xml version="1.0" encoding="UTF-8"?>
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>-1</ESTADO>
<GLOSA>Error : (Message Exception)</GLOSA>
</SII:RESP_HDR>
</SII:RESPUESTA>
Estado -2 - error BD / retorno
<?xml version="1.0" encoding="UTF-8"?>
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>-2</ESTADO>
<GLOSA>ERROR RETORNO</GLOSA>
</SII:RESP_HDR>
</SII:RESPUESTA>
6.2 Ejemplo salida genera token
Estado 00 - genera token
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>00</ESTADO>
<GLOSA>Token Creado</GLOSA>
</SII:RESP_HDR>
<SII:RESP_BODY>
<TOKEN>AB82001ABRT</TOKEN>
</SII:RESP_BODY>
</SII:RESPUESTA>
Estado 01 - XML inválido, IOException
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>01</ESTADO>
<GLOSA>XML invalido (IOException), función valSignedXml</GLOSA>
</SII:RESP_HDR>
</SII:RESPUESTA>
Estado 02 - XML inválido, SAXException
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>02</ESTADO>
<GLOSA>XML Invalido (SAXException), funcion valSignedXml</GLOSA>
</SII:RESP_HDR>
</SII:RESPUESTA>
Estado 08 - time-out del seed
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>08</ESTADO>
<GLOSA>TIME-OUT DEL SEED</GLOSA>
</SII:RESP_HDR>
</SII:RESPUESTA>
Estado 09 - MessageException
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>09</ESTADO>
<GLOSA>ERROR (MessageException)</GLOSA>
</SII:RESP_HDR>
</SII:RESPUESTA>
Estado 10 - error retorno datos
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>10</ESTADO>
<GLOSA>ERROR RETORNO DATOS</GLOSA>
</SII:RESP_HDR>
</SII:RESPUESTA>
Estado 11 - elemento Certificate no existe
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>11</ESTADO>
<GLOSA>XML Invalido, elemento Certificate no existe, función getCertificado</GLOSA>
</SII:RESP_HDR>
</SII:RESPUESTA>
Estado 12 - MessageException
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>12</ESTADO>
<GLOSA>ERROR (12) (MessageException)</GLOSA>
</SII:RESP_HDR>
</SII:RESPUESTA>
Estado -3 - error en autenticación
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/xxx">
<SII:RESP_HDR>
<ESTADO>-3</ESTADO>
<GLOSA>Error en Autenticación</GLOSA>
</SII:RESP_HDR>
</SII:RESPUESTA>
Capítulo 7 - Guía para realizar pruebas
Para probar los Web Services de autenticación automática se deben seguir estos pasos:
- Obtener una semilla invocando el servicio
CrSeed.jws. - Firmar la semilla mediante un cliente, usando el formato XML de entrada.
- Invocar
GetTokenFromSeed.jws, enviando el XML con la semilla firmada. - Obtener el token.
Producción
https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL
https://palena.sii.cl/DTEWS/GetTokenFromSeed.jws?WSDL
Certificación
Para ambiente de certificación se reemplaza palena.sii.cl por maullin.sii.cl.
https://maullin.sii.cl/DTEWS/CrSeed.jws?WSDL
https://maullin.sii.cl/DTEWS/GetTokenFromSeed.jws?WSDL
Capítulo 8 - Cómo firmar una semilla
Para firmar una semilla se deben seguir los siguientes pasos:
- Obtener una semilla invocando
CrSeed.jwsen certificación o producción. - Leer la respuesta XML.
- Extraer el campo que contiene la semilla.
- Construir el objeto
getTokencon la semilla. - Firmar dicho objeto con XML Digital Signature.
- Enviar el XML firmado al servicio
GetTokenFromSeed.jws.
Ejemplo respuesta CrSeed.jws
<?xml version="1.0" encoding="UTF-8"?>
<SII:RESPUESTA xmlns:SII="http://www.sii.cl/XMLSchema">
<SII:RESP_BODY>
<SEMILLA>000002360958</SEMILLA>
</SII:RESP_BODY>
<SII:RESP_HDR>
<ESTADO>00</ESTADO>
</SII:RESP_HDR>
</SII:RESPUESTA>
Campo a firmar
<SEMILLA>000002360958</SEMILLA>
Objeto getToken
<getToken>
<item>
<Semilla>000002360958</Semilla>
</item>
</getToken>
Pasos criptográficos
Una vez integrado el objeto getToken con la semilla, se deben realizar los siguientes pasos:
- Aplicar transformación y canonicalización al objeto.
- Calcular el hash del objeto para crear
DigestValue. - Crear el elemento
SignedInfo. - Canonicalizar y calcular la firma.
- Crear
SignatureValuecon el valor de la firma. - Generar la información de claves en
KeyInfo.
Estos pasos pueden ser realizados manualmente o mediante una librería de firma XML.
Ejemplo estructura final firmada
<?xml version="1.0"?>
<getToken>
<item>
<Semilla>000002248802</Semilla>
</item>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>...</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...</SignatureValue>
<KeyInfo>
<KeyValue>
<RSAKeyValue>
<Modulus>...</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
</KeyValue>
<X509Data>
<X509Certificate>...</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</getToken>
El elemento Signature corresponde al parámetro de entrada requerido por el Web Service GetTokenFromSeed.jws para generar el token.
Anexo 1 - Ejemplo de token
TOKEN=gd43dh6sfE34Kd3
Checklist técnico para una API de integración con SII
Para que una API esté preparada para iniciar integración y certificación contra SII, debería contemplar al menos estos módulos internos:
Autenticación SII
- Endpoint para solicitar semilla a
CrSeed.jws. - Parser de respuesta XML de semilla.
- Firma XML de semilla usando certificado digital.
- Endpoint para solicitar token a
GetTokenFromSeed.jws. - Cache de token.
- Manejo de expiración y renovación.
- Trazabilidad de errores de autenticación.
Certificado digital
- Carga segura de certificado.
- Custodia segura de llave privada.
- Soporte para PFX/P12 o formato usado por el proveedor.
- Validación de vigencia del certificado.
- Registro del RUT autorizado para operar.
Ambientes
- Configuración de ambiente de certificación.
- Configuración de ambiente de producción.
- Cambio parametrizable entre
maullin.sii.clypalena.sii.cl.
SOAP/XML
- Cliente SOAP compatible con RPC/encoded.
- Serialización y deserialización XML.
- Decodificación de respuestas XML codificadas como string.
- Manejo de namespaces.
- Manejo de XML Digital Signature.
Manejo de errores
- Interpretación de estados
CrSeed. - Interpretación de estados
GetTokenFromSeed. - Reintentos controlados.
- Control del timeout de semilla de 2 minutos.
- Logs técnicos con request/response sanitizados.
Endpoints internos sugeridos
POST /sii/auth/seed
POST /sii/auth/token
GET /sii/auth/token/status
POST /sii/auth/sign-seed
GET /sii/health/certificado
GET /sii/health/wsdl
Endpoints SII relevantes para autenticación
Certificación
https://maullin.sii.cl/DTEWS/CrSeed.jws?WSDL
https://maullin.sii.cl/DTEWS/GetTokenFromSeed.jws?WSDL
Producción
https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL
https://palena.sii.cl/DTEWS/GetTokenFromSeed.jws?WSDL
Observaciones para implementación actual
Este documento cubre únicamente la autenticación automática. Para completar una API de facturación electrónica DTE ante el SII también deberías revisar e implementar, además:
- Envío automático de DTE.
- Consulta de estado de envío.
- Consulta de estado de DTE.
- Manejo de CAF y folios.
- Firma de DTE.
- Timbre electrónico TED.
- Generación de PDF/timbre PDF417.
- Intercambio entre contribuyentes.
- Acuse de recibo.
- Aceptación o rechazo comercial.
- Bitácora, auditoría y respaldo.