Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Especificacion Tecnica WSAA
Especificacion Tecnica WSAA
EspecificacinTcnicadel
WebServicedeAutenticacin
yAutorizacin
ndicedecontenido
Introduccin.....................................................................................................................................3
Propsito.....................................................................................................................................3
DescripcinGeneraldelServicio...............................................................................................3
Referencias..................................................................................................................................4
InvocacindelWSAA.....................................................................................................................4
SincronizacindeClocks............................................................................................................4
WSDLdelWSAA.......................................................................................................................4
FlujoPrincipal.............................................................................................................................6
GeneracindeldocumentodelTRA(LoginTicketRequest.xml)...............................................6
GeneracindelTicketdeRequerimientodeAcceso(TRA)......................................................7
CodificacinenBase64elTRA..................................................................................................7
EnvidelTRAalWSAA............................................................................................................8
ExtraccinyvalidacindelTA................................................................................................10
RequerimientosdeloscertificadospertenecientesalosCOE.......................................................11
Introduccin
Propsito
ElsiguientedocumentodescribelosaspectostcnicosdelserviciodeAutenticaciny
AutorizacindeWebServices(WSAA)pertenecientealaAFIP.Dichoservicioesnecesarioparaque
EntesExternosalaAFIP(EE)accedanalosWebServicesdeNegocio(WSN)ofrecidosporlaAFIP.
DescripcinGeneraldelServicio
ElWSdeAutenticacinyAutorizacinesunservicioB2B(BusinesstoBusiness)quepermite
queloscomputadorespertenecientesalaAFIPyEntesExternosalaAFIPintercambieninformacin
enformadirectasinintervencindeoperadores.Endichatareaintervienenlossiguientes
componentes:
UnclientedeWSdesarrolladoporunEEsiguiendolasespecificacionesdeestedocumento.
ElWSAA,WSpublicadoporlaAFIPqueimplementalaautenticacindeloscomputadoresdel
EE(CEE)mediantecertificadosdigitalesX.509ylaautorizacindelmismocomoconsumidor
deundeterminadoWebServicedeNegocio(WSN).
Alusarespecificacionesyprotocolosestndares(PKI,XML,CMS,WSDLySOAP)elcliente
puedeserdesarrolladoconcualquierlenguajedeprogramacinmoderno.
ParaqueunEnteExternoalaAFIP(EE)estautorizadoausarunWSNdeAFIP,deber
realizaruntramiteadministrativoprevio,cuyadescripcinestafueradelalcancedeestedocumento.
Unavezfinalizadoexitosamentedichotrmite,elqueincluyeelaltadelosCEE,elEEquedar
registradoenelserviciodeautorizacindeAFIPcomoentidadautorizadaparausarelWSN.
ParaqueunCEEpuedautilizarefectivamenteunWSN,debersolicitarunTicketdeAcceso
(TA)pormediodelWSdeAutenticacinyAutorizacin(WSAA).Dichorequerimientoserealiza
medianteelenvideun"TicketdeRequerimientodeAcceso"(TRA)delCEEalWSAA,mediante
mensajeraSOAP.
ElWSAArealizalaverificacindelTRAysielrequerimientoescorrecto,devuelveunmensaje
quecontieneelTAquehabilitaalCEEautilizarelWSNsolicitado.ElTAdeberserutilizadoporel
CEEparaaccederalWSN.
Enlaactualidad,losWebServicesdelaAFIP,noestnincluidosenunUDDI(Universal
DescriptionDiscoveryIntegration)deaccesoexterno,porlotantoparaaccederalosserviciosque
ofrecelaAFIP,esnecesarioutilizarWSDL(WebServicesDefinitionLanguage)segnlaURLdefinida
porAFIP.ApartirdelWSDLelEEpuedeconstruirunCliente,parapoderconsumirelWSN
correspondiente.
Entrminosgenerales,elpresentedocumentodetallalasoperacionesarealizarpara:
Generarun"TicketdeRequerimientodeAcceso"(TRA)
Invocarel"WebServicedeAutenticacinyAutorizacin"(WSAA)
InterpretarelmensajederespuestadelWSAAyobtenerel"TicketdeAcceso"(TA)
Referencias
Paramejorentendimientodelapresenteespecificacin,serecomiendaestarfamiliarizadocon
lossiguientesestndares:
PKI,http://www.pki.org
XML,http://www.w3.org/TR/XML/
SOAP,http://www.w3.org/TR/soap/
WSDL,http://www.w3.org/TR/wsdl/
CMS,http://www.ietf.org/rfc/rfc3852.txt
NTP,http://www.ntp.org
InvocacindelWSAA
SincronizacindeClocks
LafechayhoradelcomputadorquegeneraelTRAyrecibeelTAdeberestarsincronizada.
DichasincronizacinsepodrrealizaratravsdelprotocoloNTPconelservidortime.afip.gov.aru
otroservidorqueprestedichoservicio.
WSDLdelWSAA
Acontinuacin,seexponeelWSDLpertenecientealWSAA.Elmismoestardisponibleenuna
URLpertenecientealaAFIP.Elqueseexponeperteneceaunequipodehomologacin.
FlujoPrincipal
AcontinuacinsedescribenlospasosquesedebernseguirparasolicitarunTAalWSAA.
Cadaunodelospuntosesexplicadodetalladamenteenlosapartadossiguientes.
1. GenerarelmensajedelTRA(LoginTicketRequest.xml)
2. GenerarunCMSquecontengaelTRA,sufirmaelectrnicayelcertificadoX.509
(LoginTicketRequest.xml.cms)
3. CodificarenBase64elCMS(LoginTicketRequest.xml.cms.bse64)
4. InvocarWSAAconelCMSyrecibirLoginTicketResponse.xml
5. Extraeryvalidarlainformacindeautorizacin(TA).
GeneracindeldocumentodelTRA(LoginTicketRequest.xml)
ElprimerpasoparasolicitarunTAespreparareldocumentodelTRA(denominado
LoginTicketRequest.xml).SepuedeutilizarunaestructuraXMLyadefinidaquepuedeserobtenidade
unarchivoexternoodeclaradacomoconstanteenelpropiocdigo.Elesquema(schema,XSD)que
describedichoXMLeselsiguiente:
<?xmlversion="1.0"encoding="UTF8"?>
<xsd:schemaxmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentationxml:lang="es">
EsquemadeTicketdepedidodeaccesoaunWSN
porpartedeunCEE.
NrorevisionSVN:$Rev:1869$
</xsd:documentation>
</xsd:annotation>
<xsd:elementname="loginTicketRequest"type="loginTicketRequest"/>
<xsd:complexTypename="loginTicketRequest">
<xsd:sequence>
<xsd:elementname="header"type="headerType"minOccurs="1"maxOccurs="1"/>
<xsd:elementname="service"type="serviceType"minOccurs="1"maxOccurs="1"/>
</xsd:sequence>
<xsd:attributename="version"type="xsd:decimal"use="optional"default="1.0"/>
</xsd:complexType>
<xsd:complexTypename="headerType">
<xsd:sequence>
<xsd:elementname="source"type="xsd:string"minOccurs="0"maxOccurs="1"/>
<xsd:elementname="destination"type="xsd:string"minOccurs="0"maxOccurs="1"/>
<xsd:elementname="uniqueId"type="xsd:unsignedInt"minOccurs="1"maxOccurs="1"/>
<xsd:elementname="generationTime"type="xsd:dateTime"minOccurs="1"maxOccurs="1"/>
<xsd:elementname="expirationTime"type="xsd:dateTime"minOccurs="1"maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleTypename="serviceType">
<xsd:restrictionbase="xsd:string">
<xsd:patternvalue="[az,AZ][az,AZ,\,_,09]*"/>
<xsd:minLengthvalue='3'/>
<xsd:maxLengthvalue='32'/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Acontinuacinsedetallaladescripcindelosatributos.Losmismosdebenrespetarelformato
definidoenelXSD:
source:Campoopcional.IndicaelDNdelcertificadoqueserutilizadoporWSAApara
verificarlafirmaelectrnicadelTRAgeneradoporelcomputador(CEE)querealizael
requerimiento.Sinoseincluye,seutilizarelprimercertificadodefirmaincluidoenelCMS.Si
seincluye,debercorresponderaunodeloscertificadosdefirmaincluidosenelCMS.
destination:Campoopcional.IndicaelDNdelWSAA,Encasodeutilizarse,deberser
"cn=wsaa,o=afip,c=ar,serialNumber=CUIT33693450239"paraelambientedeproducciny
"cn=wsaahomo,o=afip,c=ar,serialNumber=CUIT33693450239"paraelambientede
homologacin.
uniqueId:Enterode32bitssinsignoquejuntocongenerationTimeidentificael
requerimiento.
generationTime:Momentoenquefuegeneradoelrequerimiento.Latoleranciadeaceptacin
serdehasta24horaspreviasalrequerimientodeacceso.
expirationTime:Momentoenelqueexpiralasolicitud.Latoleranciadeaceptacinserde
hasta24horasposterioresalrequerimientodeacceso.
service:IdentificacindelWSNparaelcualsesolicitaelTA.
ElsiguienteesunejemplodeldocumentoLoginTicketRequest.xmlgeneradoporlaEE
EmpresaSAcuyaCUITes30123456789yelDNdelCEEescn=srv1,ou=facturacion,o=empresa
s.a.,c=ar,serialNumber=CUIT30123456789solicitandoaccesoalWSNwsfe:
<?xmlversion="1.0"encoding="UTF8"?>
<loginTicketRequestversion="1.0">
<header>
<source>cn=srv1,ou=facturacion,o=empresas.a.,c=ar,serialNumber=CUIT30123456789</source>
<destination>cn=wsaa,o=afip,c=ar,serialNumber=CUIT33693450239</destination>
<uniqueId>4325399</uniqueId>
<generationTime>20011231T12:00:0003:00</generationTime>
<expirationTime>20011231T12:10:0003:00</expirationTime>
</header>
<service>wsfe</service>
</loginTicketRequest>
GeneracindelTicketdeRequerimientodeAcceso(TRA)
SedebergenerarunmensajeCMSdeltipoSignedDataquecontengaelmensaje
anteriormentegenerado(LoginTicketRequest.xml)ysufirmaelectrnicautilizandoSHA1+RSA.De
estaforma,seobtieneelTRA(LoginTicketRequest.xml.cms).
CodificacinenBase64elTRA
ParapoderenviarelTRAalWSAA,elmismodebersercodificadoenBase64
(LoginTicketRequest.xml.cms.bse64)
EnvidelTRAalWSAA
SedebeinvocarelmtodoLoginCMSdelWSAA.Elmismorecibecomoparmetrounacadena
correspondientealacodificacinenBase64delTRA(LoginTicketRequest.xml.cms.base64)ydevuelve
unacadenadenominadaLoginTicketResponse.xml.DeestaltimasedeberextraerelTicketde
Acceso(TA).
Encasodeencontrarsealgnerror,elmensajeSOAPdevolverunSoapFaultconteniendo
cdigoydescripcindelerrorproducido.Ladescripcinpodrconteneradicionalmentedetallesmas
especficosdelerror(ej:elXMLexpirhace10minutos).Lasiguientetablalistaloscdigosdeerrores
ysucorrespondientedescripcin.EncasodequelaAFIPconsiderenecesario,nuevoscdigosde
erroresysudescripcinsernagregados.
Cdigo
Descripcin
coe.notAuthorized
cms.bad
El CMS no es valido
cms.bad.base64
cms.cert.notFound
cms.sign.invalid
cms.cert.expired
Certificado expirado
cms.cert.invalid
cms.cert.untrusted
xml.bad
xml.source.invalid
xml.destination.invalid
xml.version.notSupported
xml.generationTime.invalid
xml.expirationTime.expired
xml.expirationTime.invalid
wsn.unavailable
wsn.notFound
wsaa.unavailable
wsaa.internalError
ExtraccinyvalidacindelTA
LoginTicketResponse.xmlesdescriptoenelsiguienteesquema(schema,XSD):
<?xmlversion="1.0"encoding="UTF8"?>
<xsd:schemaxmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentationxml:lang="es">
EsquemadeTicketderespuestaalpedidodeaccesoaun
WSNporpartedeunCEE
NrorevisionSVN:$Rev:695$
</xsd:documentation>
</xsd:annotation>
<xsd:elementname="loginTicketResponse"type="loginTicketResponse"/>
<xsd:complexTypename="loginTicketResponse">
<xsd:sequence>
<xsd:elementname="header"type="headerType"minOccurs="1"maxOccurs="1"/>
<xsd:elementname="credentials"type="credentialsType"minOccurs="1"maxOccurs="1"/>
</xsd:sequence>
<xsd:attributename="version"type="xsd:decimal"use="optional"default="1.0"/>
</xsd:complexType>
<xsd:complexTypename="headerType">
<xsd:sequence>
<xsd:elementname="source"type="xsd:string"minOccurs="1"maxOccurs="1"/>
<xsd:elementname="destination"type="xsd:string"minOccurs="1"maxOccurs="1"/>
<xsd:elementname="uniqueId"type="xsd:unsignedInt"minOccurs="1"maxOccurs="1"/>
<xsd:elementname="generationTime"type="xsd:dateTime"minOccurs="1"maxOccurs="1"/>
<xsd:elementname="expirationTime"type="xsd:dateTime"minOccurs="1"maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexTypename="credentialsType">
<xsd:sequence>
<xsd:elementname="token"type="xsd:string"minOccurs="1"maxOccurs="1"/>
<xsd:elementname="sign"type="xsd:string"minOccurs="1"maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Losdatosincluidossonlossiguientes:
source:DNcorrespondientealWSAAquegenereldocumento(produccin/homologacin)
destination:DNcorrespondientedelCEEautenticadoporelWSAA
uniqueId:Enterode32bitssinsignoquejuntoagenerationTimeidentificaalrequerimiento.
generationTime:MomentoenquefuegeneradoelTA.
expirationTime:MomentoenelqueexpiraelTA.
tokenysign:cadenasdecaracteresquedebenserinformadasalWSN(comovariables
TOKENySIGN).LasmismascomponenelTA.Elformatointernodeestascadenaspuede
diferirdeunservicioaotroysuinformacincontenidaesinterpretadaporelWSN.
Sedeberverificarqueelmensajederespuesta,queincluyealTA,noseencuentreexpirado
mediantelavariableexpirationTimeysumomentodegeneracinseavlidomediantelavariable
generationTime.
Unejemploderespuestaalrequerimientoexpuestoanteriormenteeselsiguiente:
<?xmlversion="1.0"encoding="UTF8"?>
<loginTicketResponseversion="1.0">
<header>
<source>cn=wsaa,o=afip,c=ar,serialNumber=CUIT33693450239</source>
<destination>cn=srv1,ou=facturacion,o=empresas.a.,c=ar,serialNumber=CUIT30123456789</destination>
<uniqueId>383953094</uniqueId>
<generationTime>20011231T12:00:0203:00</generationTime>
<expirationTime>20020101T00:00:0203:00</expirationTime>
</header>
<credentials>
<token>cES0SSuWIIPlfe5/dLtb0Qeg2jQuvYuuSEDOrz+w2EnAQiEeS86gzYf7ehiU3UaYit5FRb9z/3zq</token>
<sign>a6QSSZBgLf0TTcktSNteeSg3qXsMVjo/F5py/Gtw7xucTrUWbsrVCdIoGE8Cm1bixpuVPlr58k6n</sign>
</credentials>
</loginTicketResponse>
NotarqueeltiempodevidadelTApresenteenesteejemploesde12horas.ElCEEpodrautilizar
esteTAsinnecesidaddesolicitarotro,indistintamentedelacantidaddevecesqueconsumael
servicioalcualsolicitoacceso.ParaelaccesoaunWSNparaelcualunCEEposeaunTAvalido,se
recomiendautilizardichoTAynosolicitarunonuevo.
RequerimientosdeloscertificadospertenecientesalosCOE
LaautenticacindelosCEE,serealizaramediantecertificadosX.509v3.Losmismosdebern
cumplirconlossiguientesrequerimientos:
1. SeremitidoporunaautoridadcertificantereconocidaporAFIP.
2. ElDNdeberenmarcarsedentrodelaRFC2253(http://www.ietf.org/rfc/rfc2253.txt)
3. ElcontenidodelDNsedebecumplirlossiguientesrequisitosestablecidosporlaOficina
NacionaldeTecnologasdeInformacin(ONTI),disponibleen
http://www.sgp.gov.ar/contenidos/onti/productos/docs/infraestructura/Anexo_III_Perfil_Minimo_
de_Certificados_y_CRLs_v1.pdf
4. Loscamposobligatoriossonlossiguientes:
Campo'commonName':DEBEcorresponderalnombredelserviciooaplicacin(ej.Sistemade
Consulta)oalnombredelaunidadoperativaresponsabledelservicio(ej.Gerenciade
Compras).
Campo'serialNumber'(OID2.5.4.5:Nrodeserie):DEBEcontenerelnmerodeidentificacin
delaPersonaJurdicaPblicaoPrivada,expresadocomotextoyrespetandoelsiguiente
formatoycodificacin:"CUITnumero_de_cuit"
(ej:CUIT20123456780)
Campo'organizationName':DEBEcoincidirconelnombredelaPersonaJurdicaPblicao
Privada.
Campo'countryName':DEBErepresentarelpasenelcualestconstituidalaPersona
Jurdica,codificadosegnelestndar[ISO3166].