Government Gateway Developer Guide to Authentication and

advertisement
Developer Guide to A&A Web Services
Government Gateway 1.6.3
Government Gateway
Developer Guide to Authentication and Authorisation Web
Services – Secure and Public
Version 1.6.3 (17.04.03)
-1-
Developer Guide to A&A Web Services
Government Gateway 1.6.3
Table of Contents
Government Gateway
1
Developer Guide to Authentication and Authorisation Web Services – Secure and Public 1
1
Introduction
1.1
Document Scope & Audience
1.2
Terms and Abbreviations
1.3
References
4
4
4
4
2
Architecture
2.1
Background Overview
2.2
Scope
2.3
Assumptions
2.3.1
A Note on Identifiers
2.4
Interfaces
2.4.1
External Interfaces – Consumed / Dependant
2.5
Schema
2.5.1
<TicketBook>
2.5.2
<Base64Encode>
2.5.3
<CallerSignature>
2.5.4
<Credential>
2.5.5
<CredentialChange>
2.5.6
<CredentialIdentifier>
2.5.7
<ServiceActivationList>
2.5.8
<ServiceAuthenticateList>
2.5.9
<ServiceList>
2.5.10
<ServiceValidationList>
2.5.11
<UserDetails>
2.5.12
<UserDetailsGet>
2.5.13
<UserDetailsSet>
2.5.14
<UserIdentifier>
2.5.15
<LoginDocument>
2.5.16
<SignedInfoBlock>
2.5.17
<Password>
2.6
Functional Decomposition
2.6.1
GsoRegisterAndEnrol (Implemented in: SecurePortal)
2.6.2
GsoEnrolOnly (Implemented in: SecurePortal)
2.6.3
GsoActivate (Implemented in: SecurePortal)
2.6.4
GsoAuthenticate (Implemented in: SecurePortal and InternetPublic)
2.6.5
GsoValidate (Implemented in: SecurePortal and InternetPublic)
2.6.6
GsoRefresh (Implemented in: SecurePortal and InternetPublic)
2.6.7
GsoDeEnrol (Implemented in: SecurePortal)
2.6.8
GsoGetUserDetails (Implemented in: SecurePortal)
2.6.9
GsoSetUserDetails (Implemented in: SecurePortal)
2.6.10
GsoGetLoginDocument (Implemented in: SecurePortal and
InternetPublic)
2.6.11
GsoLogOut (Implemented in: SecurePortal and InternetPublic)
-2-
5
5
5
5
5
6
6
7
7
8
9
9
11
12
13
14
17
18
20
21
23
24
24
24
24
25
25
26
27
27
29
30
30
30
31
31
31
Developer Guide to A&A Web Services
2.6.12
2.6.13
2.6.14
2.7
Data
2.7.1
2.7.2
2.7.3
2.7.4
Government Gateway 1.6.3
GsoSetPassword (Implemented in: SecurePortal)
GsoResetPassword (Implemented in: SecurePortal)
GsoUserIdResend (Implemented in: SecurePortal)
Persistent State
Data Flows / Transformations
Session State
Temporal State
31
31
32
32
32
32
32
32
3
Error & Exception Processing
3.1
Error Classifications
3.1.1
Business Recoverable Errors
3.1.2
Business Fatal Errors
3.1.3
System Recoverable Errors
3.1.4
System Fatal Errors
3.2
Exception Interface
3.2.1
Exception Types Thrown
3.2.2
Internal Exceptions
3.2.3
Exception Architecture / Policy
3.3
Security Considerations
3.3.1
Privacy
3.3.2
Authentication / Authorisation
33
33
33
33
34
34
34
34
34
34
34
34
35
4
Appendix A – WSDL
4.1
SecurePortal WSDL
4.2
InternetPublic WSDL
36
36
43
-3-
Developer Guide to A&A Web Services
1
Government Gateway 1.6.3
Introduction
1.1
Document Scope & Audience
This document is intended to provide developers with information about the web services
available from the Government Gateway for authentication and authorisation. It describes
the technical specifications for:
n
1.2
1.3
Authentication and Authorisation Web Services (restricted and public)
Terms and Abbreviations
Term or
Abbreviation
Definition
API
Application Program Interface
CA
Certification Authority
DAT
Department Activation Token
R&E
Government Gateway Registration and Enrolment
SOAP
Simple Object Access Protocol
WSDL
Web Services Description Language
WSML
Web Services Meta Language
XML
Extensible Markup Language
XSD
XML Schema Definition
XSL
Extensible Stylesheet Language
References
Document
Comment
GSOSoapSecurePortal and
GSOSoapInternetPublic SOAP Interface
1.5 master technical document (restricted)
Technical Specification – Consolidated
SecurePortal and InternetPublic SOAP
Interface
1.6.3 master technical document (restricted)
-4-
Developer Guide to A&A Web Services
2
Government Gateway 1.6.3
Architecture
2.1 Background Overview
The SOAP interface is required for portals, ISV applications and other applications to
interact programmatically with the Gateway without using the native Gateway web user
interface.
2.2 Scope
This document details the SOAP APIs for:
n
Authentication and Authorisation: the SecurePortal and InternetPublic interfaces
It includes the individual SOAP APIs, their parameters, the SOAP message formats, and
security and error conditions.
2.3 Assumptions
The following assumptions are made for the SecurePortal Web Services security:
n
The Gateway server terminating the client-side certificate HTTPS SSL session
will maintain a CTL (Certificate Trust List). Therefore, when a SOAP request
arrives at the web server hosting the R&E Web Services, no additional
connection authentication will be necessary.
n
All SOAP APIs will ignore the contents of the CallerSignature parameter,
although the XML structure will still be validated. This implementation of the
SOAP APIs will provide no caller authentication. The CallerSignature parameter
is only included as a placeholder for future development.
The following assumptions are made for the InternetPublic web services security:
n
2.3.1
The SSL session used to access the SOAP APIs exposed on the Internet will
only be encrypted by a server-side certificate. No additional client-side
authentication of the HTTPS connection will take place.
A Note on Identifiers
With the previous 1.5 SOAP interface, specifically the
GsoAuthenticate/Validate/Activate/EnrolOnly methods, service identifiers were only
returned (in <ServiceAuthenticateList>) if the state of the service enrolment was Acti ve. A
particular service enrolment was identified purely on Service Name, under the assumption
that a service would only be enrolled in once. Service identifiers were not returned by
GsoDeEnrol if a de-enrolment failed and the service state was Active after the attempted
de-enrolment.
With the 1.6 SOAP interface (which introduces multiple enrolments), service identifiers
will be returned where they exist and a service has been uniquely identified – either by
service name only or by service name and identifi ers, irrespective of service state for all
SOAP APIs. This applies whether or not the service is flagged for multiple enrolments, or
whether the user has enrolled multiple times or not. The logic behind this is that identifiers
are now needed to tie down the context of the service, for example the question: “Which
service am I enrolled for?” can no longer be answered by only returning “MOSW2”, it now
needs “MOSW2 MOSW2Reference=123”. Otherwise we could get into a situation where
a service cannot be activated because a user only knows what the known facts were at
enrolment time, not necessarily what the identifiers are now. In this case, the service
could not be activated as the user couldn’t specify the identifiers required to identify the
enrolment.
This is far cleaner and less ambiguous than before, and allows a portal to show identifiers
in the same manner as the R&E UI will. The impact to SOAP 1.5 users is that identifiers
may be returned (in the <Identifiers> element within <ServiceAuthenticateList>) where
-5-
Developer Guide to A&A Web Services
Government Gateway 1.6.3
they weren’t before: however the element in the XSD is optional so this should not cause
problems.
2.4 Interfaces
2.4.1
External Interfaces – Consumed / Dependant
Two separate SOAP interfaces are required in order to segment functionality and
partition security (one for secure portals and another for public internet access).
These separate SOAP interfaces will be partitioned along the following URLs:
•
SecurePortal
https://secure.gateway.gov.uk/soap/SecurePortal
•
Internet
http://secure.gateway.gov.uk/soap/ InternetPublic
The following table illustrates SOAP APIs exposed by the SecurePortal and
InternetPublic interfaces and their associated signatures:
SecurePortal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<TicketBook>
<CallerSignature>
<ServiceValidationList>
<UserDetails>
<Credential>
<TicketBook>
<CallerSignature>
<ServiceValidationList>
<TicketBook>
<CallerSignature>
<ServiceActivationList>
<TicketBook>
<CallerSignature>
<Credential>
<ServiceList>
<TicketBook>
<CallerSignature>
<ServiceList>
<TicketBook>
<CallerSignature>
<TicketBook>
<CallerSignature>
<ServiceList>
<TicketBook>
<CallerSignature>
<TicketBook>
<CallerSignature>
<UserDetailsSet>
<Base64Encode>
<TicketBook>
<CallerSignature>
<TicketBook>
<CallerSignature>
<CredentialChange>
<CallerSignature>
<UserIdentifier>
<ServiceValidationList>
<CallerSignature>
<Password>
<ServiceValidationList>
GsoRegisterAndEnrol
<TicketBook>
<UserIdentifier>
<CredentialIdentifier>
<ServiceAuthenticateList>
GsoEnrolOnly
<TicketBook>
<ServiceAuthenticateList>
GsoActivate
<TicketBook>
<ServiceAuthenticateList>
GsoAuthenticate
GsoValidate
GsoRefresh
GsoDeEnrol
GsoGetUserDetails
<TicketBook>
<ServiceAuthenticateList>
<CredentialIdentifier>
<UserDetailsGet>
<TicketBook>
<ServiceAuthenticateList>
<CredentialIdentifier>
<UserDetailsGet>
<TicketBook>
<TicketBook>
<ServiceAuthenticateList>
<TicketBook>
<UserDetailsGet>
<TicketBook>
GsoSetUserDetails
GsoGetLoginDocument
GsoLogOut
<LoginDocument>
<SignedInfoBlock>
<TicketBook>
<TicketBook>
GsoSetPassword
GsoResetPassword
GsoUserIdResend
InternetPublic
1
2
3
4
5
<TicketBook>
<CallerSignature>
<ServiceValidationList>
<UserDetails>
<Credential>
<TicketBook>
<CallerSignature>
<TicketBook>
<CallerSignature>
<ServiceList>
<Base64Encode>
<TicketBook>
<CallerSignature>
GsoAuthenticate
GsoRefresh
GsoValidate
GsoGetLoginDocument
GsoLogOut
<TicketBook>
<ServiceAuthenticateList>
<CredentialIdentifier>
<UserDetailsGet>
<TicketBook>
<TicketBook>
<ServiceAuthenticateList>
<CredentialIdentifier>
<UserDetailsGet>
<LoginDocument>
<SignedInfoBlock>
<TicketBook>
The SecurePortal interface will be secured at the Gateway with a Certificate Trust
List (CTL). The CTL will contain self-signed certificates, normally root or
intermediate Certification Authorities (CAs), of clients allowed to initiate an
-6-
Developer Guide to A&A Web Services
Government Gateway 1.6.3
HTTPS session with the Gateway. The Secure Portal URL will therefore only
allow SSL connections with explicitly trusted client-side certificates to access this
URL. All authorised portals will require certificates that are signed by a trusted CA
included in the CTL.
The InternetPublic interface will only be utilising a server-side certificate SSL
connection. No other authentication of the client connection will take place.
However, only subset of the SOAP APIs will be exposed by this URL.
The WSDL files for the SecurePortal and InternetPublic SOAP interfaces are
documented in Appendix A. The WSML files for the SecurePortal and
InternetPublic SOAP interfaces are also documented in Appendix A.
2.5
Schema
All of the parameters included in SOAP messages will be well formed XML
documents conforming to the XML Schema (XSD) defined below. This approach
was chosen in order to maximise re-use across SOAP APIs. In addition, XSD
Schema allow both the SOAP API consumer and provider to agree on the XML
document structures. This allows both parties to validate XML documents (sent
and received) according to a well defined standard.
One of the first tasks performed by a SOAP API is to validate the SOAP request
parameters according to these XML Schema. In addition, each SOAP API will
validate its output parameters prior to transmitting the SOAP response. Note that
the parameters in the WSDL are only defined as xsd:string. It is therefore the
responsibility of the SOAP consumer to make sure that the SOAP message
request parameters contain the proper character references so that the SOAP
message request remains a well-formed XML document. That is, in the actual
XML document that is the SOAP message the ‘<’ character is replaced with the
< character reference in the message parameter. That same applies to ‘>’
(>), ‘&’ (&), ‘’’ (') and ‘”’ (").
The following matrix illustrates the use and direction (Input / Output) of XML
documents across the SOAP APIs:
SecurePortal
GsoUserIdResend
GsoAuthenticate
GsoRefresh
GsoValidate
GsoGetLoginDocument
GsoLogOut
8 4 4 7 6 2 4 3 3 3 2 3
2
I
17 I
I
I
I
I
I
I
I
I
I
I
3 I
I
5 O
O O
1
I
2
O
1
I
8 O O O O O
O
5
I
I
I
4 I
I
2
O
15 IO IO IO IO IO IO IO IO IO
IO IO
1 I
5
O O
O
GsoResetPassword
GsoSetPassword
GsoLogOut
GsoGetLoginDocument
GsoSetUserDetails
GsoGetUserDetails
GsoDeEnrol
GsoRefresh
GsoValidate
GsoAuthenticate
GsoActivate
2.5.1
GsoEnrolOnly
<Base64Encode>
<CallerSignature>
<Credential>
<CredentialIdentifier>
<CredentialChange>
<LoginDocument>
<ServiceActivationList>
<ServiceAuthenticateList>
<ServiceList>
<ServiceValidationList>
<SignedInfoBlock>
<TicketBook>
<UserDetails>
<UserDetailsGet>
<Password>
<UserDetailsSet>
<UserIdentifier>
GsoRegisterAndEnrol
API Count
API Count
InternetPublic
3
3
7
2
6
3
I
2
I
I
I
I
O
I
I
0
I
O
O
O
I
I
O
I
I
O
IO IO IO
O
IO
O
I
1
2
I
O
I
<TicketBook>
This XML document is used to manage authentication and single-sign on across
secure portals. Note that the Authentication Manager silo does not differentiate
between A-Tickets issued by different URLs. Therefore an A-Ticket obtained from
the InternetPublic URL will be authenticated on the SecurePortal URL. No
-7-
Developer Guide to A&A Web Services
Government Gateway 1.6.3
distinction is made. The TicketBook must be presented to all SOAP APIs
excluding GsoGetLoginDocument. In addition, the TicketBook as returned in the
SOAP response must be persisted by the consumer as well. It cannot be
assumed that the TicketBook returned is exactly the same as the TicketBook
presented. Lastly, the A-Ticket’s contents will have no meaning to the consumers
of the SOAP APIs. Although there is a structure to the A-Ticket it will be
encrypted and only readable by the Ticket Management silo.
The XSD for a TicketBook is:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema
targetNamespace="urn:GSO-System-Services:external:soap:xsdTicketBook"
xmlns="urn:GSO-System-Services:external:soap:xsdTicketBook"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.44"
id="TicketBook">
<xsd:annotation>
<xsd:documentation>Ticket Book Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="TicketBook" type="TicketBookType" />
<xsd:complexType name="TicketBookType">
<xsd:sequence>
<xsd:element name="Ticket" type="TicketTYPE" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TicketTYPE">
<xsd:sequence>
<xsd:element name="ServiceName" type="xsd:string" minOccurs="1"
maxOccurs="1" />
<xsd:element name="TicketValue" type="xsd:string" minOccurs="1"
maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
The following XML document is a sample TicketBook:
<?xml version="1.0" encoding="utf-8" ?>
<TicketBook xmlns="urn:GSO-System-Services:external:soap:xsdTicketBook">
<Ticket>
<ServiceName>GsoSoapATicket</ServiceName>
<TicketValue>detpyrcnEmA1</TicketValue>
</Ticket>
<Ticket>
<ServiceName>SecureMessaging</ServiceName>
<TicketValue>nedd1HdnAdegnuM</TicketValue>
</Ticket>
</TicketBook>
2.5.2
<Base64Encode>
This XML document is used to indicate whether the login document to be
returned should be encoded in base64 or clear text.
The XSD for a Base64Encode is:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema
targetNamespace="urn:GSO-System-Services:external:soap:xsdBase64Encode"
xmlns="urn:GSO-System-Services:external:soap:xsdBase64Encode"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.44"
id="Base64Encode">
<xsd:annotation>
<xsd:documentation>Base64 Encode Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="Base64Encode">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Mode" minOccurs="1" maxOccurs="1">
-8-
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="base64" />
<xsd:enumeration value="clear" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
The following XML document is a sample Base64Encode:
<?xml version="1.0" encoding="utf-8" ?>
<Base64Encode xmlns="urn:GSO-SystemServices:external:soap:xsdBase64Encode">
<Mode>base64</Mode>
</Base64Encode>
2.5.3
<CallerSignature>
This XML document is used to contain the signature block used to sign the
TicketBook. This parameter is only used as a placeholder for future development
as signed TicketBooks are not within the scope of this implementation of the
SOAP APIs. Note that this XML document must only contain the root element
CallerSignature, no whitespace or any characters are allowed.
The XSD for a CallerSignature is:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema
targetNamespace="urn:GSO-SystemServices:external:soap:xsdCallerSignature"
xmlns="urn:GSO-System-Services:external:soap:xsdCallerSignature"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.44"
id="CallerSignature">
<xsd:annotation>
<xsd:documentation>Caller Signature Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="CallerSignature">
<xsd:complexType>
<xsd:complexContent>
<xsd:restriction base="xsd:anyType" />
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:schema>
The following XML document is a sample CallerSignature:
<?xml version="1.0" encoding="utf-8" ?>
<CallerSignature xmlns="urn:GSO-SystemServices:external:soap:xsdCallerSignature" />
2.5.4
<Credential>
The Credential parameter will leverage the existing GovTalk XSD definition. This
parameter will take a GovTalk message with a body comprising of
\UserAuthenticationRequest\Timestamp containing the timestamp data.
Credential information will be contained in the IDAuthentication element in the
Header. The IDAuthentication block will either contain the SenderID and Value
elements (containing UserID/Password) or the Value element (containing the
SignedInfoBlock). Note that the Method element can contain either clear or MD5
as the encoding of the password (for UserID/Password). Note MD5 hashes are
assumed to be derived from UTF-8 representations of the data. For certificates
the Value element will contain the SignedInfo block and Method will contain
W3CSigned.
(The XSD for Credential is not included to prevent maintenance of multiple copies
of the XML Schema).
-9-
Developer Guide to A&A Web Services
Government Gateway 1.6.3
The following XML document is a sample Credential for a UserID/Password login:
<?xml version="1.0" ?>
<GovTalkMessage
xmlns="implementation specific1">
<EnvelopeVersion>2.0c</EnvelopeVersion>
<Header>
<MessageDetails>
<Class>ADM-user-authentication-request</Class>
<Qualifier>request</Qualifier>
<Function>submit</Function>
<GatewayTimestamp>2002-02-07T15:01:00-00:00</GatewayTimestamp>
</MessageDetails>
<SenderDetails>
<IDAuthentication>
<SenderID>QB19957JW6VG</SenderID>
<Authentication>
<Method>clear</Method>
<Value>Password123</Value>
</Authentication>
</IDAuthentication>
</SenderDetails>
</Header>
<GovTalkDetails>
<Keys/>
</GovTalkDetails>
<Body>
<UserAuthenticationRequest>
<Timestamp>2002-02-07T15:01:00-00:00</Timestamp>
</UserAuthenticationRequest>
</Body>
</GovTalkMessage>
Note: The URI to be used for this implementation of GSO will be
http://www.govtalk.gov.uk/CM/envelope according to GovTalk XML Schema 2.0.
The following XML document is a sample Credential for Certificate based login:
<?xml version="1.0"?>
<GovTalkMessage>
<EnvelopeVersion>0.8</EnvelopeVersion>
<Header>
<MessageDetails>
<Class>ADM-user-authentication-request</Class>
<Qualifier>request</Qualifier>
<Function>submit</Function>
<GatewayTimestamp>2003-02-20T11:07:17-00:00</GatewayTimestamp>
</MessageDetails>
<SenderDetails>
<IDAuthentication>
<SenderID/>
<Authentication>
<Method>W3Csigned</Method>
<Role>Principal</Role>
<Value></Value>
<Signature>
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2000/WDxml-c14n-20001011"/>
<SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference>
<Transforms>
<Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath19991116">
<XPath>/GovTalkMessage/Body</XPath>
</Transform>
</Transforms>
<DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>Vl/ARuS47aUh1QIst2UPyU7dOOA=</DigestValue>
</Reference>
</SignedInfo>
1
Note: The URI to be used for this implementation of GSO will be
http://www.govtalk.gov.uk/CM/envelope according to GovTalk XML Schema 2.0c.
- 10 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<SignatureValue>Y0KSSyIOArVFhBA1L+YLtHlMhg4+MbR0St47g7vdPeOkyIDVuUW9aXwKf
iyR1VdB6BN1rpPK7BYc59V0pTmmVQ==</SignatureValue>
</Signature>
</Authentication>
</IDAuthentication>
<X509Certificate>MIIDYzCCAw2gAwIBAgIKXVYb1gAAAAAA5jANBgkqhkiG9w0BAQUFADBA
MQswCQYDVQQGEwJHQjENMAsGA1UEBxMEVUtHRzEPMA0GA1UEChMGVUtHRzE2MREwDwYDVQQDEwh
VS0dHMTZDQTAeFw0wMzAxMDcxMjQxNDJaFw0wNDAxMDcxMjUxNDJaMGsxJTAjBgkqhkiG9w0BCQ
EWFnYtZXJpY3dvQG1pY3Jvc29mdC5jb20xCzAJBgNVBAYTAkdCMQ0wCwYDVQQHEwRVS0dHMQ8wD
QYDVQQKEwZVS0dHMTYxFTATBgNVBAMTDFRlc3QgQWNjb3VudDBcMA0GCSqGSIb3DQEBAQUAA0sA
MEgCQQDZLdfKPEqD2R+NwydiI2FosGplnoanSdUmkX7qodAo6Gf5gwDcGMhXZRtDkSs1/S0D8QN
S8ccxUih0emLh6AAjAgMBAAGjggG8MIIBuDAOBgNVHQ8BAf8EBAMCBPAwEwYDVR0lBAwwCgYIKw
YBBQUHAwIwHQYDVR0OBBYEFDToSbgaiJue2ZW04DEbpFDJzF8QMHcGA1UdIwRwMG6AFCdJejd27
BQRhdeWXtAGfkdYDbEfoUSkQjBAMQswCQYDVQQGEwJHQjENMAsGA1UEBxMEVUtHRzEPMA0GA1UE
ChMGVUtHRzE2MREwDwYDVQQDEwhVS0dHMTZDQYIQLTw5+FRESr5PClYzCFA+QTBpBgNVHR8EYjB
gMC2gK6AphidodHRwOi8vdWtnZzE2Y2EvQ2VydEVucm9sbC9VS0dHMTZDQS5jcmwwL6AtoCuGKW
ZpbGU6Ly9cXHVrZ2cxNmNhXENlcnRFbnJvbGxcVUtHRzE2Q0EuY3JsMIGNBggrBgEFBQcBAQSBg
DB+MDwGCCsGAQUFBzAChjBodHRwOi8vdWtnZzE2Y2EvQ2VydEVucm9sbC91a2dnMTZjYV9VS0dH
MTZDQS5jcnQwPgYIKwYBBQUHMAKGMmZpbGU6Ly9cXHVrZ2cxNmNhXENlcnRFbnJvbGxcdWtnZzE
2Y2FfVUtHRzE2Q0EuY3J0MA0GCSqGSIb3DQEBBQUAA0EADQ/dGAcGTSOnvFEFkBbLJBQj+sRr/8
I06AkeNkTgpC2PZ4LwmQi4DEMh60e9DEsIr2PChH/sLlFroumQnTwC0g==</X509Certificate
>
<Email/>
</SenderDetails>
</Header>
<GovTalkDetails>
<Keys/>
</GovTalkDetails>
<Body>
<UserAuthenticationRequest>
<Timestamp>2003-Feb-20 11:07:17</Timestamp>
</UserAuthenticationRequest>
</Body>
</GovTalkMessage>
A detailed explanation of how to sign a document is provided in GG-SignXML.doc “UK Online XML Signing in the Government Gateway” available in the
Portal Pack supplied by The Office of the E-Envoy.
2.5.5
<CredentialChange>
This XML document is used to change a Level-1 (UserID/Password) user’s
password. The CredentialChange document includes the old and new password.
The old password can be optionally hashed with the MD5 algorithm but the new
password must be sent in clear text (in order to be able to administer a password
strength policy). Note MD5 hashes are assumed to be derived from UTF -8
representations of the data.
The XSD for CredentialChange is:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema
targetNamespace="urn:GSO-SystemServices:external:soap:xsdCredentialChange"
xmlns="urn:GSO-System-Services:external:soap:xsdCredentialChange"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.44"
id="CredentialChange">
<xsd:annotation>
<xsd:documentation>Credential Change Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="CredentialChange" type="CredentialChangeTYPE" />
<xsd:complexType name="CredentialChangeTYPE">
<xsd:sequence>
<xsd:element name="PasswordOld" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Mode" minOccurs="1" maxOccurs="1" >
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="clear" />
<xsd:enumeration value="MD5" />
- 11 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Password" type="xsd:string"
minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="PasswordNew" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Mode" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="clear" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Password" type="xsd:string"
minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
The following XML document is a sample CredentialChange:
<?xml version="1.0" encoding="utf-8" ?>
<CredentialChange xmlns="urn:GSO-SystemServices:external:soap:xsdCredentialChange">
<PasswordOld>
<Mode>MD5</Mode>
<Password>gnikooLxelpmoCyreV</Password>
</PasswordOld>
<PasswordNew>
<Mode>clear</Mode>
<Password>MyNewPassword123</Password>
</PasswordNew>
</CredentialChange>
2.5.6
<CredentialIdentifier>
This XML document will contain the new CredentialIdentifier. The Credential
Identifier will be used by external systems and applications to uniquely identify
users. The CredentialIdentifier value is guaranteed to be unique for each user
and will not change for that user. Note that the CredentialIdentifier has no
meaning to R&E. For example, it is not possible to use the CredentialIdentifier in
place of a UserID.
The XSD for CredentialIdentifier is:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema
targetNamespace="urn:GSO-SystemServices:external:soap:xsdCredentialIdentifier"
xmlns="urn:GSO-System-Services:external:soap:xsdCredentialIdentifier"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.44"
id="CredentialIdentifier">
<xsd:annotation>
<xsd:documentation>Credential Identifier Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="CredentialIdentifier">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="38" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:schema>
The following XML document is a sample CredentialIdentifier:
- 12 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<?xml version="1.0" encoding="utf-8" ?>
<CredentialIdentifier xmlns="urn:GSO-SystemServices:external:soap:xsdCredentialIdentifier">394830</CredentialIdentifie
r>
2.5.7
<ServiceActivationList>
This XML document is used to activate one or more services.
ServiceActivationList contains the name of the service and the activation key for
each service being activated.
RequestInputData is an optional Boolean which indicates whether the
ActivationKey and optional Identifiers should be included in the
ServiceAuthenticateList response.
Identifiers must be supplied if activating a service in which the credential is
multiply enrolled to uniquely identify the enrolment to be activated, otherwise they
are optional. If Identifiers are not supplied when they are required status
“Ambiguous” is returned.
The Service Sequence attribute is an optional client supplied attribute which can
be used instead of or in conjunction with the RequestInputData attribute to track
the response to each activation request. There are no restrictions on Service
Sequence except that it must be an integer greater than or equal to zero.
The XSD for ServiceActivationList is:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema targetNamespace="urn:GSO-SystemServices:external:soap:xsdServiceActivationList" xmlns="urn:GSO-SystemServices:external:soap:xsdServiceActivationList"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="1.44"
id="ServiceActivationList">
<xsd:annotation>
<xsd:documentation>Service Activation List Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="ServiceActivationList"
type="ServiceActivationListTYPE" />
<xsd:complexType name="ServiceActivationListTYPE">
<xsd:sequence>
<xsd:element name="Service" type="ServiceTYPE" minOccurs="1"
maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="RequestInputData" type="xsd:boolean"
use="optional" />
</xsd:complexType>
<xsd:complexType name="ServiceTYPE">
<xsd:sequence>
<xsd:element name="ServiceName" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ActivationKey" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="12" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Identifiers" type="IdentifiersTYPE"
minOccurs="0" maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="Sequence" type="xsd:integer" use="optional" />
</xsd:complexType>
<xsd:complexType name="IdentifiersTYPE">
<xsd:sequence>
<xsd:element name="Identifier" type="IdentifierTYPE"
minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="IdentifierTYPE">
- 13 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<xsd:simpleContent>
<xsd:extension base="IdentifierValueTYPE">
<xsd:attribute name="IdentifierType" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="IdentifierValueTYPE">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
The following XML document is a sample ServiceActivationList:
<?xml version="1.0" encoding="utf-8" ?>
<ServiceActivationList xmlns="urn:GSO-SystemServices:external:soap:xsdServiceActivationList" RequestInputData="true">
<Service Sequence="1">
<ServiceName>HMCE-PDDEVR</ServiceName>
<ActivationKey>N352QN6FB41Q</ActivationKey>
</Service>
<Service Sequence="2">
<ServiceName>IR-PAYE</ServiceName>
<ActivationKey>WSN9QJ5G381E</ActivationKey>
<Identifiers>
<Identifier IdentifierType="UTR">6660000075</Identifier>
</Identifiers>
</Service>
</ServiceActivationList>
2.5.8
<ServiceAuthenticateList>
This XML document is used whenever it is necessary to return a set of services in
response to a SOAP API authenticating a user, validating an A-Ticket in a
TicketBook or querying / modifying a user’s enrolment. Due to the generic nature
of ServiceAuthenticateList, the SOAP APIs that modify a user’s enrolment only
returns the status of the services that were requested in the input parameters
(either ServiceList or ServiceActivationList). It does not explicitly inform the SOAP
API consumer whether the attempted action was successful or nor (assuming
that no fatal business errors were encountered). The exception is GsoEnrol and
GsoRegisterAndEnrol which return “Not Enrolled” if enrolment failed, even if the
reason for the failure was that the enrolment request was a duplicate of a
previous successful enrolment. No fault elements are returned (again assuming
no fatal business errors were encountered). It is then up to the SOAP API
consumer to check the returned service statuses to check whether each state
indicates a success or failure within the context of the SOAP API called. A list of
which statuses should be considered as a success and which should be
considered as a failure is documented in further detail for each SOAP API. Again,
success or failure will not be explicitly stated by ServiceAuthenticateList. The
SOAP API consumer must determine success or failure within the SOAP API’s
context.
For the GsoActivate SOAP API, ServiceAuthenticateList will include the number
of activations that can be attempted before the user is automatically de-enrolled
from the service. The order of events for failed activation attempts will be
(Status/ActivateAttemptsLeft): Enrolled/2, Enrolled/1, Not Enrolled/0.
Status “Ambiguous” can be returned by GsoActivate and GsoDeEnrol if
insufficient information has been supplied to uniquely identify a service
enrolment. This occurs if a credential is multiply enrolled in a service. To uniquely
identify an enrolment instance the service Identifiers should be supplied.
The XSD for ServiceAuthenticateList is:
- 14 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema targetNamespace="urn:GSO-SystemServices:external:soap:xsdServiceAuthenticateList" xmlns="urn:GSO-SystemServices:external:soap:xsdServiceAuthenticateList"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="1.44"
id="ServiceAuthenticateList">
<xsd:annotation>
<xsd:documentation>Service Authenticate List
Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="ServiceAuthenticateList"
type="ServiceAuthenticateListTYPE" />
<xsd:complexType name="ServiceAuthenticateListTYPE">
<xsd:sequence>
<xsd:element name="Service" type="ServiceTYPE" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ServiceTYPE">
<xsd:sequence>
<xsd:element name="ServiceName" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ServiceState" type="ServiceStateTYPE"
minOccurs="1" maxOccurs="1" />
<xsd:element name="ActivateAttemptsLeft"
type="xsd:nonNegativeInteger" minOccurs="0" maxOccurs="1" />
<xsd:element name="Identifiers" type="IdentifiersTYPE"
minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="InputData" type="InputDataTYPE" minOccurs="0"
maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="Sequence" type="xsd:integer" use="optional" />
<xsd:attribute name="IsClientList" type="xsd:boolean"
use="optional" />
</xsd:complexType>
<xsd:simpleType name="ServiceStateTYPE">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Not Enrolled" />
<xsd:enumeration value="Enrolled" />
<xsd:enumeration value="Active" />
<xsd:enumeration value="HandedToAgent" />
<xsd:enumeration value="Suspended" />
<xsd:enumeration value="Ambiguous" />
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="IdentifiersTYPE">
<xsd:sequence>
<xsd:element name="Identifier" type="IdentifierTYPE"
minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="IdentifierTYPE">
<xsd:simpleContent>
<xsd:extension base="IdentifierValueTYPE">
<xsd:attribute name="IdentifierType" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="IdentifierValueTYPE">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="InputDataTYPE">
<xsd:sequence>
- 15 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<xsd:element name="KnownFacts" type="KnownFactsTYPE"
minOccurs="0" maxOccurs="1" />
<xsd:element name="Identifiers" type="IdentifiersTYPE"
minOccurs="0" maxOccurs="1" />
<xsd:element name="ActivationKey" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="12" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="KnownFactsTYPE">
<xsd:sequence>
<xsd:element name="KnownFact" minOccurs="1"
maxOccurs="unbounded">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="Sequence"
type="xsd:nonNegativeInteger" use="required" />
<xsd:attribute name="TransformAlgorithm"
use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
The following XML document is a sample ServiceAuthenticateList (note that the
example has been fleshed out to include a large number of possible Service
combinations from different SOAP APIs and is therefore not a typical, or possible,
response from any of the SOAP APIs):
<?xml version="1.0" encoding="utf-8" ?>
<ServiceAuthenticateList xmlns="urn:GSO-SystemServices:external:soap:xsdServiceAuthenticateList">
<Service>
<ServiceName>MOSW1</ServiceName>
<ServiceState>Active</ServiceState>
<Identifiers>
<Identifier IdentifierType="PostCode">TR5 7ZE</Identifier>
<Identifier IdentifierType="NINO">3234KDDDF8</Identifier>
</Identifiers>
</Service>
<Service>
<ServiceName>MOSW2</ServiceName>
<ServiceState>Active</ServiceState>
<Identifiers>
<Identifier IdentifierType="IDNo">3940P2</Identifier>
<Identifier IdentifierType="Shoesize">5</Identifier>
</Identifiers>
</Service>
<Service>
<ServiceName>ServiceThree</ServiceName>
<ServiceState>Not Enrolled</ServiceState>
</Service>
<Service>
<ServiceName>ServiceFour</ServiceName>
<ServiceState>Suspended</ServiceState>
</Service>
<Service>
<ServiceName>ServiceFive</ServiceName>
<ServiceState>HandedToAgent</ServiceState>
</Service>
<Service>
<ServiceName>ServiceSix</ServiceName>
- 16 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<ServiceState>Enrolled</ServiceState>
<ActivateAttemptsLeft>2</ActivateAttemptsLeft>
</Service>
<Service>
<ServiceName>ServiceSeven</ServiceName>
<ServiceState>Enrolled</ServiceState>
<ActivateAttemptsLeft>1</ActivateAttemptsLeft>
</Service>
<Service>
<ServiceName>ServiceEight</ServiceName>
<ServiceState>Not Enrolled</ServiceState>
<ActivateAttemptsLeft>0</ActivateAttemptsLeft>
</Service>
</ServiceAuthenticateList>
2.5.9
<ServiceList>
This document is used to supply none, one or more service names to the SOAP
APIs. The optional attribute RemoveAgent is used specifically for the
GsoSoapDeEnrol API call and is ignored by the other SOAP APIs that use
ServiceList.
RequestInputData is an optional Boolean which indicates whether the optional
Identifiers should be included in the ServiceAuthenticateList response.
Identifiers must be supplied if DeEnroling a service in which the credential is
multiply enrolled to uniquely identify the enrolment to be activated, otherwise they
are optional. If Identifiers are not supplied when they are required status
“Ambiguous” is returned.
The Service Sequence attribute is an optional client supplied attribute which can
be used instead of or in conjunction with the RequestInputData attribute to track
the response to each DeEnrol request. For other types of request Service
Sequence is ignored. There are no restrictions on Service Sequence except that
it must be an integer greater than or equal to zero.
The ClientListIndicator attribute controls whether the Boolean attribute IsClientList
will be attached to all service nodes in the output ServiceAuthenticateList.
ClientListIndicator is ignored by all methods except GsoAuthenticate and
GsoValidate. IsClientList is true if the current Service element is a Client List.
AllServices and AllClients is ignored by all methods except GsoAuthenticate and
GsoValidate. AllServices requests that all services associated with the credential
be included in the output ServiceAuthenticateList. Any service elements in the
ServiceList are ignored unless the service element has an ‘IncludeClients’
attribute in which case all client lists for the marked services are included in the
ServiceAuthenticateList.
AllClients indicates all client lists associated with services in the ServiceList
should be included in the output ServiceAuthenticateList (i.e. it is as if each
service in the ServiceList has IncludeClients = true). AllClients overrides
IncludeClients settings.
If both AllServices and AllClients are set to true, All clients associated with all
services associated with the credential will be output.
GroupIdentifiers is used by GsoAuthenticate and GsoValidate to indicate whether
the identifiers in client list services should be grouped. If True, each set of Client
Identifiers is bounded by its own <Identifiers> tag. If False or not present, all client
identifiers in a client list service are bounded by a single <Identifiers> tag.
The XSD for ServiceList is:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema targetNamespace="urn:GSO-SystemServices:external:soap:xsdServiceList" xmlns="urn:GSO-SystemServices:external:soap:xsdServiceList"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="1.44" id="ServiceList">
<xsd:annotation>
<xsd:documentation>Service List Schema</xsd:documentation>
- 17 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
</xsd:annotation>
<xsd:element name="ServiceList" type="ServiceListTYPE" />
<xsd:complexType name="ServiceListTYPE">
<xsd:sequence>
<xsd:element name="Service" type="ServiceTYPE" minOccurs="0"
maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="GroupIdentifiers" type="xsd:boolean"
use="optional" />
<xsd:attribute name="RequestInputData" type="xsd:boolean"
use="optional" />
<xsd:attribute name="ClientListIndicator" type="xsd:boolean"
use="optional" />
<xsd:attribute name="AllServices" type="xsd:boolean" use="optional" />
<xsd:attribute name="AllClients" type="xsd:boolean" use="optional" />
</xsd:complexType>
<xsd:complexType name="ServiceTYPE">
<xsd:sequence>
<xsd:element name="ServiceName" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Identifiers" type="IdentifiersTYPE"
minOccurs="0" maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="RemoveAgent" type="xsd:boolean"
use="optional"/>
<xsd:attribute name="IncludeClients" type="xsd:boolean"
use="optional"/>
<xsd:attribute name="Sequence" type="xsd:integer" use="optional" />
</xsd:complexType>
<xsd:complexType name="IdentifiersTYPE">
<xsd:sequence>
<xsd:element name="Identifier" type="IdentifierTYPE"
minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="IdentifierTYPE">
<xsd:simpleContent>
<xsd:extension base="IdentifierValueTYPE">
<xsd:attribute name="IdentifierType" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="IdentifierValueTYPE">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
2.5.10 <ServiceValidationList>
This XML document is used to enrol a user in one or more servi ces. This is either
done as part of a new or existing registration. In addition to specifying the
services for enrolment, this XML document includes the Known Facts required to
validate the user by the service owner. Each Known Fact must include a
Sequence attribute. This is the order in which the Known Facts are passed to the
service’s owner validation procedure. In addition, each Known Fact can have a
TransformAlgorithm specified. This is essentially the name of a predefined
algorithm that the Gateway will use to transform the Known Fact value into a
value type that the service owner expects. The Gateway will be offering a
standard suite of transform algorithms (such as MD5 hashing, SHA1 hashing,
whitespace stripping, etc.) that can be specified as well as custom transforms
- 18 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
created by the service owners. Note hashes are assumed to be derived from
UTF-8 representations of the data.
RequestInputData is an optional Boolean which indicates whether the known
facts should be included in the ServiceAuthenticateList response.
The Service Sequence attribute is an optional client supplied attribute which can
be used instead of or in conjunction with the RequestInputData attribute to track
the response to each Enrolment request. There are no restrictions on Service
Sequence except that it must be an integer greater than or equal to zero.
The SOAP methods GsoUserIdResend and GsoResetPassword accept a
ServiceValidationList but do not return a ServiceAuthenticateList so attributes
such as Service Sequence and RequestInputData are ignored for these methods.
The TransformAlgorithm attribute indicates that a supplied known fact must be
transformed before being matched against the service list of known facts. For
example, setting the TransformAlgorithm = “MD5_CS” allows a known fact to be
supplied in clear text but matched against an MD5 hash of the fact.
The set of available transformations is configurable. The method for configuration
of available transformations is outside the scope of this document. The set of
default available transformations is:
TransformAlgorithm
Description
MD5_CS
MD5 Hash Case Sensitive
SHA1_CS
SHA1 Hash Case Sensitive
MD5_CS_TRIMWS
MD5 Hash Case Sensitive Trim White Space
SHA1_CS_TRIMWS
SHA1 Hash Case Sensitive Trim White Space
MD5_CI
MD5 Hash Case Insensitive
SHA1_CI
SHA1 Hash Case Insensitive
MD5_CI_TRIMWS
MD5 Hash Case Insensitive Trim White Space
SHA1_CI_TRIMWS
SHA1 Hash Case Insensitive Trim White Space
The XSD for ServiceValidationList is:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema targetNamespace="urn:GSO-SystemServices:external:soap:xsdServiceValidationList" xmlns="urn:GSO-SystemServices:external:soap:xsdServiceValidationList"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="1.44"
id="ServiceValidationList">
<xsd:annotation>
<xsd:documentation>Service Validation List
Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="ServiceValidationList"
type="ServiceValidationListTYPE" />
<xsd:complexType name="ServiceValidationListTYPE">
<xsd:sequence>
<xsd:element name="Service" type="ServiceTYPE" minOccurs="1"
maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="RequestInputData" type="xsd:boolean"
use="optional" />
</xsd:complexType>
<xsd:complexType name="ServiceTYPE">
<xsd:sequence>
<xsd:element name="ServiceName" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
- 19 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<xsd:element name="KnownFacts" type="KnownFactsTYPE"
minOccurs="1" maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="Sequence" type="xsd:integer" use="optional" />
</xsd:complexType>
<xsd:complexType name="KnownFactsTYPE">
<xsd:sequence>
<xsd:element name="KnownFact" minOccurs="1"
maxOccurs="unbounded">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="Sequence"
type="xsd:nonNegativeInteger" use="required" />
<xsd:attribute name="TransformAlgorithm"
use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255" />
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
The following XML document is a sample ServiceValidationList:
<?xml version="1.0" encoding="utf-8" ?>
<ServiceValidationList xmlns="urn:GSO-SystemServices:external:soap:xsdServiceValidationList">
<Service Sequence="5">
<ServiceName>ServiceOne</ServiceName>
<KnownFacts>
<KnownFact Sequence="0"
TransformAlgorithm="MD5Hash">12</KnownFact>
<KnownFact Sequence="1">DK89 3DP</KnownFact>
</KnownFacts>
</Service>
<Service Sequence="6">
<ServiceName>ServiceTwo</ServiceName>
<KnownFacts>
<KnownFact Sequence="0">woNeMetavitcA</KnownFact>
</KnownFacts>
</Service>
</ServiceValidationList>
2.5.11 <UserDetails>
This XML document contains a user’s name, email address, registration category
(individual, organisation or agent) and the user’s description. If registering an
Agent the AgentID and AgentFriendlyName must also be supplied. If registering
an organisation or individual AgentID and AgentFriendlyName must not be
supplied. This XML document is for capturing registration details. Note that only
the registration category is mandatory. Email address and description are
optional. Name must not be included for Level-2 users, that is, users registering
with a certificate. A user’s name is extracted from the certificate. However, name
must be provided if the user is registering with a UserID/Password.
The AgentID is the agent specified portion of the Agent Group ID used by clients
to hand their enrolment to an agent. (The other portion, also known as the
AgentCode, is generated by R&E and resembles a UserID). For example, An
Agent Group ID may be FRED2-74IU9W8GNRLN, where FRED2 is the AgentID
(specified by the Agent) and 74IU9W8GNRLN is the AgentCode (generated by
R&E).
The AgentFriendlyName is the name displayed to clients when they confirm the
handing of an enrolment to an agent.
The XSD for UserDetails is:
- 20 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema targetNamespace="urn:GSO-SystemServices:external:soap:xsdUserDetails" xmlns="urn:GSO-SystemServices:external:soap:xsdUserDetails"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="1.44" id="UserDetails">
<xsd:annotation>
<xsd:documentation>User Details Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="UserDetails" type="UserDetailsTYPE" />
<xsd:complexType name="UserDetailsTYPE">
<xsd:all>
<xsd:element name="Name" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="64" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Email" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="RegistrationCategory" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Individual" />
<xsd:enumeration value="Organisation" />
<xsd:enumeration value="Agent" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Description" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="AgentID" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="([^\ -\/\:-\@\[\`{-Ÿ]){1,12}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="AgentFriendlyName" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value=".{1,64}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:schema>
The following XML document is a sample UserDetails:
<?xml version="1.0" encoding="utf-8" ?>
<UserDetails xmlns="urn:GSO-System-Services:external:soap:xsdUserDetails">
<Name>John Patterson</Name>
<Email>JohnP@hotmail.com</Email>
<RegistrationCategory>Individual</RegistrationCategory>
<Description>I am very pleased with this service.</Description>
</UserDetails>
2.5.12 <UserDetailsGet>
This XML document is used to retrieve a user’s details (name, email and
registration category). If retrieving the user details for an agent the AgentID,
AgentCode and AgentFriendlyName are also populated.
- 21 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
The AgentID is the agent specified component of the ID used by clients to hand
their enrolment to an agent.
The AgentCode is the Gateway generated component of the ID used by clients to
hand their enrolment to an agent.
The AgentFriendlyName is the name displayed to clients when they confirm the
handing of an enrolment to an agent.
The XSD for UserDetailsGet is:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema targetNamespace="urn:GSO-SystemServices:external:soap:xsdUserDetailsGet" xmlns="urn:GSO-SystemServices:external:soap:xsdUserDetailsGet"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="1.44" id="UserDetailsGet">
<xsd:annotation>
<xsd:documentation>User Details Get Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="UserDetailsGet" type="UserDetailsGetTYPE" />
<xsd:complexType name="UserDetailsGetTYPE">
<xsd:all>
<xsd:element name="Name" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="64" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Email" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Description" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="RegistrationCategory" minOccurs="1" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Individual" />
<xsd:enumeration value="Organisation" />
<xsd:enumeration value="Agent" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="AgentID" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="12" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="AgentCode" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="12" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="AgentFriendlyName" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="64" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:all>
</xsd:complexType>
- 22 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
</xsd:schema>
The following XML document is a sample UserDetailsGet:
<?xml version="1.0" encoding="utf-8" ?>
<UserDetailsGet xmlns="urn:GSO-SystemServices:external:soap:xsdUserDetailsGet">
<Name>John Walland</Name>
<Email>WallyJohn@email.com</Email>
<RegistrationCategory>Delegate</RegistrationCategory>
</UserDetailsGet>
2.5.13 <UserDetailsSet>
This XML document is used to change a user’s details. A user’s name and/or
email address and / or description can be changed. The name change must
contain at least one character. In addition, only a Level-1 user (UserID/Password)
can change his / her name. For Level-2 users (Certificates) the name associated
with the certificate is embedded within the X.509 certificate structure. Lastly,
these changes will be atomic, either all of the changes requested will be
performed or none will. For example, if a Level-2 user attempts to change his /
her name and email address, neither change will be applied.
Note there is no facility for changing AgentID, AgentCode or AgentFriendlyName.
The XSD for UserDetailsSet is:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema
targetNamespace="urn:GSO-System-Services:external:soap:xsdUserDetailsSet"
xmlns="urn:GSO-System-Services:external:soap:xsdUserDetailsSet"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.44"
id="UserDetailsSet">
<xsd:annotation>
<xsd:documentation>User Details Set Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="UserDetailsSet" type="UserDetailsSetTYPE" />
<xsd:complexType name="UserDetailsSetTYPE">
<xsd:all>
<xsd:element name="Name" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:maxLength value="64" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Email" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Description" minOccurs="0" maxOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:schema>
The following XML document is a sample UserDetailsSet:
<?xml version="1.0" encoding="utf-8" ?>
<UserDetailsSet xmlns="urn:GSO-SystemServices:external:soap:xsdUserDetailsSet">
<Name>Alan Patridge</Name>
<Email>Alan.Patridge@bbc.com</Email>
</UserDetailsSet>
- 23 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
2.5.14 <UserIdentifier>
This XML document is used to supply a UserID (e.g. GsoResetPassword) or
return the UserID of users that have successfully enrolled for at least one service
when calling the GsoRegisterAndEnrol SOAP API. Note that the UserID is only
returned for Level-1 (UserID/Password) users. Level-2 (Certificate) users have no
need for a UserID. The UserID is returned so that the user can be subsequently
authenticated on the Gateway before the user has activated his / her first service.
It is therefore important that the consumer of the SOAP API communicate the
UserID back to the user. Without it the user will not be able to authenticate on the
Gateway. Note that this UserID cannot be used to activate any services. This
activation key will be a different value and communicated to the user in the
standard secure fashion (unless the user enrolled in one or more services with a
DAT or the services are set to AutoActivate in which case those services will be
activated immediately).
The XSD for UserIdentifier:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema
targetNamespace="urn:GSO-System-Services:external:soap:xsdUserIdentifier"
xmlns="urn:GSO-System-Services:external:soap:xsdUserIdentifier"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.44"
id="UserIdentifier">
<xsd:annotation>
<xsd:documentation>User Identifier Schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="UserIdentifier">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="12" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:schema>
The following document is a sample UserIdentifier:
<?xml version="1.0" encoding="utf-8" ?>
<UserIdentifier xmlns="urn:GSO-SystemServices:external:soap:xsdUserIdentifier"> N352QN6FB41Q</UserIdentifier>
2.5.15 <LoginDocument>
This XML document will be a GovTalk message required for users authenticating
with a certificate (Level-2). It will conform to the existing GovTalk schema and
certificate signing standard. This document is obtained by SOAP API consumers
calling GsoGetLoginDocument. It will either be base64 encoded or in clear text,
according to the mode specified in Base64Encode.
2.5.16 <SignedInfoBlock>
This XML document will contain the SignedInfoBlock required for user
authenticating with a certificate. This document is obtained by SOAP API
consumers calling GsoGetLoginDocument. It will either be base64 encoded or in
clear text, according to the mode specified in Base64Encode.
2.5.17 <Password>
This XML document contains a user’s password. It is used by GsoResendUserId
to assist in identifying the Credential of the user whose UserID is to be resent.
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema targetNamespace="urn:GSO-System-Services:external:soap:xsdPassword"
xmlns="urn:GSO-System-Services:external:soap:xsdPassword"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified" version="1.44" id="Password">
<xsd:annotation>
<xsd:documentation>Password Schema</xsd:documentation>
</xsd:annotation>
- 24 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<xsd:element name="Password">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Mode">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="clear"/>
<xsd:enumeration value="MD5"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Value" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
2.6
Functional Decomposition
The SOAP interface will consist of the following APIs:
2.6.1
GsoRegisterAndEnrol
(Implemented in: SecurePortal)
This SOAP API allows a user to be registered according the <UserDetails> and
<Credential> information supplied. The <Credential> parameter will be a valid
GovTalk message as defined by the GovTalk XSD schema. It can contain either
the UserID/Password for a Level-1 user or the Signed Login Document signed by
a Level-2 user’s certificate. Utilising the existing GovTalk schema was chosen as
it is already widely used for portal authentication and submissions. Once the
credentials have been validated according to the predefined business rules
(password strength, trusted CAs etc.) the user will be enrolled for the services
specified in <ServiceValidationList>. Note that for Level-1 registrations, the
password contained in <Credential> must be in clear text and must meet the
password strength policy. If either of these conditions are not met then the
registration is aborted and the appropriate fault element returned to the SOAP
API consumer.
Enrolment for the specified services will be validated by the service owner
according to the Known Facts supplied in <ServiceValidationList>. The user must
be successfully validated by at least one service in order to complete the
registration. Failure to do so will result in the appropriate fault element being
returned to the SOAP API consumer and the registration and enrolment aborted.
If the user was enrolled for at least one service then the
<ServiceAuthenticateList> will be populated with all the services specified in
<ServiceValidationList>. Each service will include a status. It is important that the
SOAP API consumer check the status of each service as failure to enrol in a
service will be reflected in that service’s status. The SOAP API consumer should
regard the following service statuses as failure: “Not Enrolled”, “Suspended”,
“HandedToAgent”. The SOAP API consumer should regard the following service
statuses as success: “Enrolled”, “Active”.
The <UserDetails> is populated with the name, email address, description and
registration category. If registering and enrolling an agent (i.e.
RegistrationCategory Agent), the AgentID and AgentFriendlyName must also be
supplied. If they are specified for a RegistrationCategory other than Agent then
they will be ignored. Only registration category is mandatory in all cases. Name,
email address and description are optional. Name must be provided for Level-1
users, i.e. users registering with a UserID/Password. Level-2 users must not
provide a name. Their name is extracted from the certificate that they are
registering with. If a name is provided for a Level-2 user registration then the
registration is aborted and the appropriate fault element is returned. This SOAP
API will accept whatever the user provides as long as it conforms to the
prescribed XML Schema (XSD). Note that eligibility for enrolment in a service is
dependent on the registration category. That is, a service owner must specify
- 25 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
whether the service is for individuals, organisations or agents. If the
<ServiceValidationList> contains a service that the registration category specified
is not eligible for then this indicates that the SOAP API consumer does not have
the correct mapping of services to registration categories. In this case the entire
register and enrolment is aborted and the appropriate fault element is returned to
the SOAP API consumer.
If it was a Level-1 user that successfully registered and enrolled, the
<UserIdentifier> will contain that user’s Gateway generated UserID. This UserID
must be communicated back to the user as he / she will require it to authenticate
on the Gateway at a future date.
The <CredentialIdentifier> will contain the unique identifier generated for that
user. This is only provided for applications or portals that need to uniquely identify
each user. It is not for the user’s consumption nor can it be used to identify a user
to the Gateway (i.e. it cannot be substituted for UserID or used for
GsoGetUserDetails).
If the registration and enrolment was successful a valid A-Ticket will be present in
the TicketBook returned to the SOAP API consumer. This TicketBook can then
be presented to the Gateway for subsequent SOAP APIs that require an
authenticated user.
If the registration and enolment completed successfully an A-Ticket will be
generated and stored in the returned TicketBook. If an existing A-Ticket is found,
the existing A-Ticket will not be validated. It will only be replaced.
If RequestInputData was supplied as True the known facts supplied in the
ServiceValidationList are returned in the ServiceAuthenticateList.
If Service Sequence Numbers were supplied in the ServiceValidationList the
sequence number attributes are returned in the ServiceAuthenticateList.
2.6.2
GsoEnrolOnly
(Implemented in: SecurePortal)
This SOAP API enrols an authenticated user in one or more services. The
<ServiceValidationList> will contain one or more service names. Each service will
have a set of Known Facts that the service owner will use to validate the
enrolment. Each Known Fact must have the correct Sequence attribute. This
Sequence attribute is defined by the service owner and dictates the order in
which the Known Facts will be evaluated. In addition, the Transform attribute can
be specified for each Known Fact. This Transform will contain the name of a
transformation that the Gateway will apply to the Known Fact value before
presenting the Known Facts to the service owner.
Note that this SOAP API also makes use of <ServiceAuthenticateList> to
communicate the service status back to the SOAP API consumer. It is the
responsibility of the consumer to determine whether the service status returned
indicates success or failure within the context of this SOAP API. The SOAP API
consumer should regard the following service statuses as failure: “Not Enrolled”,
“Suspended”, “HandedToAgent”. The SOAP API consumer should regard the
following service statuses as success: “Enrolled”, “Active ”.
Status “Not Enrolled” means the enrolment attempt failed. A status of “Not
Enrolled” can be returned if the credential which attempted the enrolment is
already enrolled in a service with the supplied known facts (i.e. a duplicate
enrolment attempt returns “Not Enrolled”).
Note that eligibility for enrolment in a service is dependent on the registration
category. That is, a service owner must specify whether the service is for
representatives, delegates or agents. If the <ServiceValidationList> contains a
service that the registration category (that the user has previously registered with)
is not eligible for then this indicates that the SOAP API consumer does not have
the correct mapping of services to registration categories. In this case the entire
- 26 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
enrolment is aborted and the appropriate fault element is returned to the SOAP
API consumer.
Execution of this API requires a valid A-Ticket to be present in the presented
TicketBook. Note that if an A-Ticket is found that is valid (in structure and
contents) but that has either expired the rolling-time window or the fixed-time
window then a separate fault element (from authentication failure) is returned.
If RequestInputData was supplied as True the known facts supplied in the
ServiceValidationList are returned in the ServiceAuthenticateList.
If Service Sequence Numbers were supplied in the ServiceValidationList the
sequence number attributes are returned in the ServiceAuthenticateList.
2.6.3
GsoActivate
(Implemented in: SecurePortal)
This SOAP API will activate a service that the user has previously enrolled for.
The list of services that the user is activating are contained in
<ServiceActivationList> with the appropriate activation keys for each service.
Note that again <ServiceAuthenticationList> is used to communicate success or
failure back to the SOAP API consumer through each service’s status. The SOAP
API consumer should regard the following service statuses as failure: “Not
Enrolled”, “Enrolled”, “Suspended”, “HandedToAgent”, “Ambiguous”. Status
“Ambiguous” means the credential is multiply enrolled in the specified service and
Identifiers must be supplied to resolve which service enrolment is to be activated.
The SOAP API consumer should regard the following service statuses as
success: “Active”. Regardless of whether the activation attempt succeeded
Identifiers for the service will be returned if possible (i.e. if the service enrolment
instance exists and the reference is not ambiguous). For services that failed
activation due to an incorrect activation key or the enrolment did not exist, an
additional element is included in <ServiceAuthenticateList>. The
ActivationAttemptsLeft element will contain the number of times that the user will
be permitted to re-attempt to activate the enrolment before the user is
automatically de-enrolled from that service. If the user fails to activate a service
who’s last status in <ServiceAuthenticateList> was “Enrolled” and
ActivateAttemptsLeft was 1, then <ServiceAuthenticateList> will return a status of
“Not Enrolled” and ActivateAttemptsLeft as 0 for that service. This means that the
user cannot attempt to activate the enrolment anymore has he / she has been
automatically de-enrolled for the service as a security measure. Subsequent
attempts to activate the service will only return status “Not Enrolled” and no
ActivateAttemptsLeft element. If an enrolment is not found the status “Not
Enrolled” will be returned with 0 ActivateAttemptsLeft.
Execution of this API requires a valid A-Ticket to be present in the presented
TicketBook. Note that if an A-Ticket is found that is valid (in structure and
contents) but that has either expired the rolling-time window or the fixed-time
window then a separate fault element (from authentication failure) is returned.
If RequestInputData was supplied as True the supplied identifiers (if any) and
activation key supplied in the ServiceActivationList are returned in the
ServiceAuthenticateList.
If Service Sequence Numbers were supplied in the ServiceActivationList the
sequence number attributes are returned in the ServiceAuthenticateList.
2.6.4
GsoAuthenticate
(Implemented in: SecurePortal and InternetPublic)
This SOAP API authenticates a user according to the GovTalk message
presented as the <Credential> parameter. The GovTalk message will either
contain a UserID/Password for Level-1 users or the GovTalk message will be
signed by the user’s certificate for Level-2 users. The GovTalk message must
conform to the GovTalk XML schema. The contents of the GovTalk message will
then be authenticated. Should authentication fail for any reason (the password
- 27 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
specified was incorrect, the UserID specified does not exist, has been suspended
or has been deleted, the certificate was not registered) a generic fault element is
returned only indicating authentication failed. No further reason is offered. The
only exception to this rule is when a certificate user attempts to authenticate with
a login document where the timestamp in the login document has expired. This
expiry is returned as a separate fault element.
The <ServiceList> is used as a mechanism for the SOAP API consumer to
determine what a user’s enrolments are. <ServiceAuthenticateList> will contain
all the services specified in <ServiceList> with their associated statuses.
In addition, the user’s <CredentialIdentifier> will be returned for a successful
authentication. This <CredentialIdentifier> is supplied to allow the SOAP API
consumer to uniquely identify each user. It is guaranteed to be unique for each
user and will not change as a user’s enrolments may change. Note that
<CredentialIdentifier> cannot be presented to the Gateway to identify a user. The
<CredentialIdentifier> cannot be substituted for UserID or any other form of
identification. It is designed to only be of use to systems and applications external
to the Gateway that need a mechanism to identify returning users.
<UserDetailsGet> will contain the authenticated user’s name, email address,
description and registration category. If authenticating an Agent user the
UserDetailsGet will also contain the AgentID, AgentCode and
AgentFriendlyName. See the description of the <UserDetailsGet> document for a
full description of the Agent elements.
If an A-Ticket is found in the TicketBook it is not validated. It will be removed
without checking its contents. GsoLogOut and GsoRegisterAndEnrol are the only
other SOAP API’s that can remove A-Tickets from a TicketBook.
ClientListIndicator is an optional Boolean attribute on ServiceList which controls
whether the attribute “IsClientList” is present in Service nodes which are client
lists (lists of client identifiers associated with the agent credential currently being
authenticated).
IncludeClients is an optional Boolean attribute on ServiceList/Service which
controls whether the clients lists associated with an agent service should also be
listed in the output ServiceAuthenticateList.
GroupIdentifiers is used by GsoAuthenticate and GsoValidate to indicate whether
the identifiers in client list services should be grouped. If True, Each set of Client
Identifiers is bounded by its own <Identifiers> tag. If False or not present, All
client identifiers in a client list service are bounded by a single <Identifiers> tag.
AllServices requests that all services associated with the credential be included in
the output ServiceAuthenticateList. Any service elements in the ServiceList are
ignored unless the service element has an ‘IncludeClients’ attribute in which case
all client lists for the marked services are included in the ServiceAuthenticateList.
AllClients indicates all client lists associated with services in the ServiceList
should be included in the output ServiceAuthenticateList (i.e. it is as if each
service in the ServiceList has IncludeClients = true). AllClients overrides
IncludeClients settings.
If both AllServices and AllClients are set to true, All clients associated with all
services associated with the credential will be output.
The following matrix describes how the AllClients and AllServices attributes effect
the output of GsoAuthenticate and GsoValidate:
AllServices AllClients attribute
attribute
Results
False
false
Normal (backwardly -compatible) output as seen with UKGG 1.5
True
false
ALL enrolled services are returned, but NO client services with
identifiers are included EXCEPT where the “IncludeClients” attrbute is
- 28 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
specified on <Service> elements.
False
true
Client services with identifiers are included in all cases where the
agent service is explicitly given in the incoming list of services. There
is no need to use “IncludeClients” on any particular <Service>
element.
True
true
Everything returned; all services, with all client services containing
client identifiers. The equivalent of the current Portal Authentication
Service.
2.6.5
GsoValidate
(Implemented in: SecurePortal and InternetPublic)
This SOAP API is used to simulate the authentication of a user that has
previously been authenticated and issued an A-Ticket. This mechanism will be
used when the TicketBook is passed between consumers. The consumer
receiving the TicketBook can present this TicketBook and receive back all the
user information that is returned from a normal authentication. However, the
consumer of this SOAP API must present <ServiceList> to discover a user’s
enrolment in a specific set of services. In response this SOAP API will return all of
the services in <ServiceAuthenticateList> with the associated status for each
service. Note that the <ServiceList> does not need to contain any services at all.
It can be an empty XML document (but must still be a well-formed XML document
and conform to urn:GSO-System-Service:external:soap:xsdServiceList). In this
case all user information is returned as normal but the <ServiceAuthenticateList>
will be an empty XML document (but still be a well-formed XML document and
conform to urn:GSO-System-Service:external:soap:xsdServiceAuthenticateList.
<CredentialIdentifier> will contain the user’s CredentialIdentifier, and
<UserDetailsGet> will contain the user’s name, email address and registration
category. If validating an Agent user the UserDetailsGet will also contain the
AgentID, AgentCode and AgentFriendlyName. See the description of the
<UserDetailsGet> document for a full description of the Agent elements.
Execution of this API requires a valid A-Ticket to be present in the presented
TicketBook. Note that if an A-Ticket is found that is valid (in structure and
contents) but that has either expired the rolling-time window or the fixed-time
window then a separate fault element (from authentication failure) is returned.
ClientListIndicator is an optional Boolean attribute on ServiceList which controls
whether the attribute “IsClientList” is present in Service nodes which are client
lists (lists of client identifiers associated with the agent credential currently being
authenticated).
IncludeClients is an optional Boolean attribute on ServiceList/Service which
controls whether the clients lists associated with an agent service should also be
listed in the output ServiceAuthenticateList.
GroupIdentifiers is used by GsoAuthenticate and GsoValidate to indicate whether
the identifiers in client list services should be grouped. If True, Each set of Client
Identifiers is bounded by its own <Identifiers> tag. If False or not present, All
client identifiers in a client list service are bounded by a single <Identifiers> tag.
AllServices requests that all services associated with the credential be included in
the output ServiceAuthenticateList. Any service elements in the ServiceList are
ignored unless the service element has an ‘IncludeClients’ attribute in which case
all client lists for the marked services are included in the ServiceAuthenticateList.
AllClients indicates all client lists associated with services in the ServiceList
should be included in the output ServiceAuthenticateList (i.e. it is as if each
service in the ServiceList has IncludeClients = true). AllClients overrides
IncludeClients settings.
If both AllServices and AllClients are set to true, All clients associated with all
services associated with the credential will be output.
- 29 -
Developer Guide to A&A Web Services
2.6.6
Government Gateway 1.6.3
GsoRefresh
(Implemented in: SecurePortal and InternetPublic)
This SOAP API is used to refresh the expiry time of an A-Ticket. The expiry time
for an A-Ticket is for the SOAP interface as a whole (i.e. SecurePortal and
InternetPublic will share the same expiry times). This SOAP API only requires a
valid <TicketBook> and <CallerSignature> to be present.
Execution of this API requires a valid A-Ticket to be present in the presented
TicketBook. Note that if an A-Ticket is found that is valid (in structure and
contents) but that has either expired the rolling-time window or the fixed-time
window then a separate fault element (from authentication failure) is returned.
2.6.7
GsoDeEnrol
(Implemented in: SecurePortal)
This SOAP API is used to de-enrol a user from one or more service(s). The list of
services that the user that the user must be de-enrol for are contained in
<ServiceList>. The optional RemoveAgent attribute can be used to specify
whether the agent (if enrolled) should be removed from the enrolment as well. If
not specified the default will be that the agent will not be removed.
<ServiceAuthenticationList> is used to communicate success or failure back to
the SOAP API consumer through each service’s status. The SOAP API consumer
should regard the following service statuses as failure: “Enrolled”, “Suspended”,
“HandedToAgent”, “Active”, “Ambiguous”. Status “Ambiguous” means the
credential is multiply enrolled in the specified service and Identifiers must be
supplied to resolve which service enrolment is to be deenroled. The SOAP API
consumer should regard the following service statuses as success: “Not
Enrolled”. If identifiers are available they will be returned except for status
Ambiguous. Previously in GSO 1.5 identifiers were not returned if the
deenrolment failed but multiple enrolment functionality mandates their inclusion in
the response. Note that this SOAP API will use existing business layer
components to perform the actual de-enrolment. Any business rule specific logic
must be implemented at that layer and not within this SOAP API.
Execution of this API requires a valid A-Ticket to be present in the presented
TicketBook. Note that if an A-Ticket is found that is valid (in structure and
contents) but that has either expired the rolling-time window or the fixed-time
window then a separate fault element (from authentication failure) is returned.
If RequestInputData was supplied as True the identifiers (if any) supplied in the
ServiceList are returned in the ServiceAuthenticateList.
If Service Sequence Numbers were supplied in the ServiceList the sequence
number attributes are returned in the ServiceAuthenticateList.
2.6.8
GsoGetUserDetails
(Implemented in: SecurePortal)
This SOAP API is used to retrieve a user’s name, email address and registration
category through <UserDetailsGet>. If retrieving the details of an Agent user the
UserDetailsGet will also contain the AgentID, AgentCode and
AgentFriendlyName. See the description of the <UserDetailsGet> document for a
full description of the Agent elements. Even though UserDetails are returned
through the GsoAuthenticate and GsoValidate SOAP APIs, this API is provided
for applications that need to retrieve this user information sometime after
authentication.
Execution of this API requires a valid A-Ticket to be present in the presented
TicketBook. Note that if an A-Ticket is found that is valid (in structure and content)
but that has either expired the rolling-time window or the fixed-time window then a
separate fault element (from authentication failure) is returned.
- 30 -
Developer Guide to A&A Web Services
2.6.9
Government Gateway 1.6.3
GsoSetUserDetails
(Implemented in: SecurePortal)
This SOAP API is used to change a user’s name and / or email address. Note
that only Level-1 users (UserID/Password) can change their name. Level-2 users
(Certificate) cannot change their name as this information is extracted from their
X.509 certificate. This API is atomic, i.e. if both a new user name and email
address are supplied but the user is a Level-2 (Certificate) user then neither the
name nor email address will be changed. Only a fault element will be returned.
Note that the user cannot change their name to an empty string. At least one
character must be specified.
Execution of this API requires a valid A-Ticket to be present in the presented
TicketBook. Note that if an A-Ticket is found that is valid (in structure and
contents) but that has either expired the rolling-time window or the fixed-time
window then a separate fault element (from authentication failure) is returned.
2.6.10 GsoGetLoginDocument
(Implemented in: SecurePortal and InternetPublic)
This SOAP API receives <Base64Encode> that indicates whether the SOAP API
consumer requires the LoginDocument and SignedInfoBlock to be base64
encoded or in clear text.
This SOAP API does not accept a ticket book and therefore does not require an
A-Ticket.
2.6.11 GsoLogOut
(Implemented in: SecurePortal and InternetPublic)
This SOAP API provides a mechanism for SOAP API consumers to remove ATickets from their TicketBook. As the consumers should never attempt to inspect
or decode the TicketBook this API is necessary for cleaning up the A-Ticket
should the user want to authenticate with different credentials or the A-Ticket has
expired and the user wishes to re-authenticate. This API does not check the
validity of the A-Ticket. It only removes the elements in the TicketBook that were
put there by the Gateway.
2.6.12 GsoSetPassword
(Implemented in: SecurePortal)
This SOAP API allows a user to change his / her password. The password
change is contained in the <CredentialChange> XML document. Within
CredentialChange are PasswordOld and PasswordNew. The old password can
be supplied as an MD5 hash but the new password must be supplied as clear
text. This is necessary as the password strength policy must be applied to the
new password before the change is persisted. Note MD5 hashes are assumed to
be derived from UTF -8 representations of the data. A fault element is returned
indicating the password strength policy violation.
Execution of this API requires a valid A-Ticket to be present in the presented
TicketBook. Not e that if an A-Ticket is found that is valid (in structure and
contents) but that has either expired the rolling-time window or the fixed-time
window then a separate fault element (from authentication failure) is returned.
2.6.13 GsoResetPassword
(Implemented in: SecurePortal)
This SOAP API allows a user to reset his / her password. The User must supply
their UserID (via a UserIdentifier document) and a ServiceValidationList which
contains one service + known facts. These details are used to identify the User’s
Credential. If the user supplied correct information a new password which is
compliant with password strength rules is generated and sent to the user via
Secure Mail.
Note GsoResetPassword and GsoUserIdResend can only be called once within a
predefined time limit (stored in the GatewayProperties table ID 4). The default
- 31 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
time limit is 3 days. If GsoResetPassword or GsoUserIdResend is called less
than 3 days after a previous successful call to GsoResetPassword or
GsoUserIdResend an error is returned.
2.6.14 GsoUserIdResend
(Implemented in: SecurePortal)
This SOAP API allows a user to request their UserID be resent to him / her. The
user must supply their Password (via a <Password> document) and a
ServiceValidationList which contains one service + known facts. These details
are used to identify the User’s Credential. If the user supplied correct information
the UserID is sent to the user via Secure Mail.
Note GsoResetPassword and GsoUserIdResend can only be called once within a
predefined time limit (stored in the GatewayProperties table ID 4). The default
time limit is 3 days. If GsoResetPassword or GsoUserIdResend is called less
than 3 days after a previous successful call to GsoResetPassword or
GsoUserIdResend an error is returned.
2.7 Data
2.7.1
Persistent State
The Web Servi ces do not maintain A-Ticket state in the R&E database. All
authentication state is administered through the <TicketBook>. The SOAP API
consumer is required to present a TicketBook for every single SOAP API call.
However, depending on which SOAP API is called, a valid A-Ticket may or may
not be required. For example, GsoEnrolOnly requires a valid A-Ticket but
GsoRegisterAndEnrol does not. In addition, the SOAP API consumer is required
to persist the TicketBook included in a SOAP API response as the A-Ticket in this
TicketBook may not have the same value as the A-Ticket presented in the SOAP
API request.
Contained within the A-Ticket will be date time information of the last successful
SOAP API call. If the time period between the last successful SOAP API call and
the current SOAP API call is longer than the configured rolling-window expiry time
then the A-Ticket will be deemed invalid. In addition, the A-Ticket’s first issue time
is checked against the fixed-window expiry time. It will therefore be impossible for
a SOAP API consumer to keep refreshing an A-Ticket indefinitely. These timeout
periods apply to all SOAP API interfaces as a whole.
The time the User last successfully executed a GsoUserIdResend or
GsoResetPassword transaction is stored with the user’s Credential. This is
required to enforce the business rule that GsoUserIdResend and
GsoResetPassword can only be called once every 3 days (configurable).
2.7.2
Data Flows / Transformations
SOAP API messages will be formatted according to the
GsoSoapSecurePortal.wsdl and GsoSoapInternetPublic.wsdl definitions. These
Web Service Definition Language files conform to the Web Services Description
Language (WSDL) 1.1, W3C Note 15 March 2001 and Simple Object Access
Protocol (SOAP) 1.1, W3C Note 08 May 2000.
2.7.3
Session State
No session state will be maintained between the SOAP API consumer and
provider. Note that the TicketBook is not persisted in the session state.
2.7.4
Temporal State
The A-Ticket will be subject to an rolling-time and fixed-time expiry time interval.
See Persistent State for more information.
- 32 -
Developer Guide to A&A Web Services
3
Government Gateway 1.6.3
Error & Exception Processing
3.1 Error Classifications
3.1.1
Business Recoverable Errors
Due to the restriction of Fault elements in the SOAP specification, no business
recoverable errors are defined through fault elements. A SOAP response cannot
contain the response message as well as Fault elements. Therefore each of the
SOAP APIs is atomic, i.e. either the transaction took place as expected or the
transaction did not take place at all.
All business recoverable errors are interpreted through the
<ServiceAuthenticateList> XML document. These errors are not communicated
explicitly to the SOAP API consumer. It is the consumer’s responsibility to
interpret these service statuses and determine success or failure in the context of
the SOAP API’s business function. The following matrix documents the SOAP
APIs using the <ServiceAuthenticateList> in their response and how the service
status should be interpreted (Success, Failure, Not Applicable):
NA S
NA F
NA F
NA F
NA F
NA F
GsoValidate
NA
NA
NA
NA
NA
NA
GsoAuthenticate
GsoDeEnrol
F
F
S
F
F
F
GsoValidate
F
S
S
S
NA
NA
GsoAuthenticate
F
S
S
S
NA
NA
GsoActivate
3.1.2
GsoEnrolOnly
Not Enrolled
Enrolled
Active
HandedToAgent
Suspended
Ambiguous
GsoRegisterAndEnrol
ServiceAuthenticateList
Status
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
NA
Business Fatal Errors
The following matrix illustrates the possible business fatal errors. Business fatal
errors are returned as fault elements. Note that the fault elements are returned in
the namespace and schema defined by the Microsoft SOAP Toolkit 2.0 SP2. For
more information on how the SOAP Toolkit implements fault elements see
Understanding the SOAP Fault <detail> Contents. The <returnCode> will be the
HRESULT return value of the method in GsoSoapSecurePortal or
GsoSoapInternetPublic. For more information on the structure of an HRESULT
see Platform SDK: COM: Error Handling. Note that some of the error conditions
documented in the Functional Specification of Authentication and Authorisation
are implemented by the XML Schema (XS D) of the relevant XML document /
parameter. An example of this implementation is the passing of a new password
in CredentialChange as an MD5 hash. Note MD5 hashes are assumed to be
derived from UTF-8 representations of the data. The XSD of CredentialChange
(urn:GSO-System-Service:external:soap:xsdCredentialChange) does not allow
MD5 to be specified of the mode for PasswordNew.
Note that the HRESULT is calculated by offsetting the Error Code by
vbObjectError (-2147221504, 0x80040000), also known as SEVERITY_ERROR
with FACILITY_ITF.
- 33 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
SecurePortal
X
X
X
X
X
X
4
GsoLogOut
X
4
GsoGetLoginDocument
X
GsoValidate
X
GsoRefresh
12
X
GsoAuthenticate
7
X
GsoUserIdResend
8
X
GsoResetPassword
6
X
X
X
X
X
GsoSetPassword
12 10
X
GsoLogOut
8
X
GsoGetLoginDocument
GsoSetUserDetails
GsoDeEnrol
GsoGetUserDetails
GsoRefresh
GsoValidate
26 10
9
9
6
10 4
4
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Description
-2147210503
-2147210502
-2147210501
-2147210500
-2147210499
Authentication of Credential failed.
Certificate issuer not trusted.
Authentication of CallerSignature failed.
Timestamp in LoginDocument has expired.
Authentication of Certificate failed.
-2147209503
-2147209502
-2147209501
-2147129501
-2147209499
-2147209498
-2147209497
-2147209496
-2147209495
-2147209493
-2147209492
-2147209491
-2147209490
Name not supplied for Level-1 registration. Registration aborted.
-2147208503
-2147208502
-2147208501
-2147208500
-2147208499
-2147208498
-2147208497
-2147208496
-2147208495
-2147208494
-2147208493
-2147208492
-2147208491
Level-2 user cannot change name. UserDetailsSet aborted.
13
2
17
2
2
1
1
1
1
1
1
1
1
1
1
1
1
1
Failed enrolment for all services. Registration aborted.
Registration category not eligibile for a service. Registration aborted.
Registration category not eligible for a service. Enrolment aborted.
Password does not meet strength policy. Registration aborted.
Password must be supplied in clear text. Registration aborted.
Name supplied for Level-2 registration. Registration aborted.
Known facts supplied already in use. Registration aborted.
Known facts supplied already in use. Enrolment aborted.
User details or certificate not unique. Registration aborted.
Invalid email address. Registration aborted.
Invalid description. Registration aborted.
Invalid name. Registration aborted.
1
1
1
1
1
1
2
1
1
1
2
1
1
Cannot change name to empty string. UserDetailsSet aborted.
Password does not meet strength policy. SetPassword aborted.
Level-2 user cannot change password. SetPassword aborted.
Invalid email address. SetUserDetails aborted.
Old password supplied is incorrect. SetPassword aborted.
User specified not found. Transaction aborted.
Invalid name. SetUserDetails aborted.
Invalid description. SetUserDetails aborted.
This request occurred too soon after a previous attempt to perform this or a related operation.
The supplied ServiceValidationList contains too many services for the current operation.
AgentID must be specified for RegistrationCategory Agent. Registration aborted.
AgentFriendlyName must be specified for RegistrationCategory Agent. Registration aborted.
-2147207503 A-Ticket has expired.
10
-2147206503
-2147206502
-2147206501
-2147206500
-2147206499
-2147206498
-2147206497
-2147206496
-2147206495
-2147206494
-2147206493
-2147206492
-2147206491
-2147206490
-2147206489
-2147206488
-2147206487
2
17
3
3
1
2
1
8
5
4
2
15
1
5
1
2
1
Validation of Base64Encode structure failed.
Validation of CallerSignature structure failed.
Validation of Credential structure failed.
Validation of CredentialIdentifier structure failed.
Validation of CredentialChange structure failed.
Validation of LoginDocument structure failed.
Validation of ServiceActivationList structure failed.
Validation of ServiceAuthenticateList structure failed.
Validation of ServiceList structure failed.
Validation of ServiceValidationList structure failed.
Validation of SignedInfoBlock structure failed.
Validation of TicketBook structure failed.
Validation of UserDetails structure failed.
Validation of UserDetailsGet structure failed.
Validation of UserDetailsSet structure failed.
Validation of UserIdentifier structure failed..
Validation of Password structure failed..
-2147205503 An internal error occurred. Transaction aborted.
3.1.3
GsoAuthenticate
HRESULT
(Dec)
GsoActivate
HRESULT
(Hex)
GsoEnrolOnly
Error
Code
Authentication Faults
11001 80042AF9
11002 80042AFA
11003 80042AFB
11004 80042AFC
11005 80042AFD
Service Faults
12001 80042EE1
12002 80042EE2
12003 80042EE3
12004 80056763
12005 80042EE5
12006 80042EE6
12007 80042EE7
12008 80042EE8
12009 80042EE9
12011 80042EEB
12012 80042EEC
12013 80042EED
12014 80042EEE
User Faults
13001 800432C9
13002 800432CA
13003 800432CB
13004 800432CC
13005 800432CD
13006 800432CE
13007 800432CF
13008 800432D0
13009 800432D1
13010 800432D2
13011 800432D3
13012 800432D4
13013 800432D5
Ticket Faults
14001 800436B1
XML Faults
15001 80043A99
15002 80043A9A
15003 80043A9B
15004 80043A9C
15005 80043A9D
15006 80043A9E
15007 80043A9F
15008 80043AA0
15009 80043AA1
15010 80043AA2
15011 80043AA3
15012 80043AA4
15013 80043AA5
15014 80043AA6
15015 80043AA7
15016 80043AA8
15017 80043AA9
Internal Faults
16001 80043E81
GsoRegisterAndEnrol
API Count
Fault Count
InternetPublic
19
X
X
X
X
10
8
X
X
X
0
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
System Recoverable Errors
Not Applicable.
3.1.4
System Fatal Errors
Not Applicable.
3.2 Exception Interface
3.2.1
Exception Types Thrown
All exception processing will be done through SOAP fault elements.
3.2.2
Internal Exceptions
The only internal exception that will be returned to the SOAP API consumer will
be Error Code 16001 or HRESULT (0x80043E81 / -2147205503).
3.2.3
Exception Architecture / Policy
All exceptions will be returned as SOAP fault elements.
3.3 Security Considerations
3.3.1
Privacy
All HTTP traffic to the SecurePortal and InternetPublic will be protected by SSL.
In addition, SecurePortal will be protected by client-side certificates.
InternetPublic will only be secured by a server-side certificate. See the Interfaces
section for more detail.
- 34 -
Developer Guide to A&A Web Services
3.3.2
Government Gateway 1.6.3
Authentication / Authorisation
The GsoSoap Authentication and Authorisation implementation is discussed in
detail in the Interfaces section of this document.
- 35 -
Developer Guide to A&A Web Services
4
Government Gateway 1.6.3
Appendix A – WSDL and IDL
4.1 SecurePortal WSDL
The WSDL file for the SecurePortal SOAP interface
(https://secure.gateway.gov.uk/soap/SecurePortal) is as follows. Note that the
Namespace used in all XSDs for the SOAP APIs use parameter specific namespaces
urn:GSO-System-Services:external:soap:xsd<ParameterName>. The
GsoSoapSecurePortalService.wsdl file will be as follows:
<?xml version='1.0' encoding='UTF-8' ?>
<definitions
name='GsoSoapSecurePortalService'
targetNamespace='urn:GSO-System-Services:external:soap:wsdl:'
xmlns:wsdlns='urn:GSO-System-Services:external:soap:wsdl:'
xmlns:typens='urn:GSO-System-Services:external:soap:type'
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:stk='http://schemas.microsoft.com/soap-toolkit/wsdl-extension'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<types>
<schema
targetNamespace='urn:GSO-System-Services:external:soap:type'
xmlns='http://www.w3.org/2001/XMLSchema'
xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
elementFormDefault='qualified'>
</schema>
</types>
<message name='SecurePortal.GsoRegisterAndEnrol'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
<part name='ServiceValidationList' type='xsd:string'/>
<part name='UserDetails' type='xsd:string'/>
<part name='Credential' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoRegisterAndEnrolResponse'>
<part name='TicketBook' type='xsd:string'/>
<part name='UserIdentifier' type='xsd:string'/>
<part name='CredentialIdentifier' type='xsd:string'/>
<part name='ServiceAuthenticateList' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoEnrolOnly'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
<part name='ServiceValidationList' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoEnrolOnlyResponse'>
<part name='TicketBook' type='xsd:string'/>
<part name='ServiceAuthenticateList' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoActivate'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
<part name='ServiceActivationList' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoActivateResponse'>
<part name='TicketBook' type='xsd:string'/>
<part name='ServiceAuthenticateList' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoAuthenticate'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
<part name='Credential' type='xsd:string'/>
<part name='ServiceList' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoAuthenticateResponse'>
<part name='TicketBook' type='xsd:string'/>
<part name='ServiceAuthenticateList' type='xsd:string'/>
<part name='CredentialIdentifier' type='xsd:string'/>
<part name='UserDetailsGet' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoValidate'>
- 36 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
<part name='ServiceList' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoValidateResponse'>
<part name='TicketBook' type='xsd:string'/>
<part name='ServiceAuthenticateList' type='xsd:string'/>
<part name='CredentialIdentifier' type='xsd:string'/>
<part name='UserDetailsGet' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoRefresh'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoRefreshResponse'>
<part name='TicketBook' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoDeEnrol'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
<part name='ServiceList' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoDeEnrolResponse'>
<part name='TicketBook' type='xsd:string'/>
<part name='ServiceAuthenticateList' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoGetUserDetails'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoGetUserDetailsResponse'>
<part name='TicketBook' type='xsd:string'/>
<part name='UserDetailsGet' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoSetUserDetails'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
<part name='UserDetailsSet' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoSetUserDetailsResponse'>
<part name='TicketBook' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoGetLoginDocument'>
<part name='Base64Encode' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoGetLoginDocumentResponse'>
<part name='LoginDocument' type='xsd:string'/>
<part name='SignedInfoBlock' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoLogOut'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoLogOutResponse'>
<part name='TicketBook' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoSetPassword'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
<part name='CredentialChange' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoSetPasswordResponse'>
<part name='TicketBook' type='xsd:string'/>
</message>
<message name='SecurePortal.GsoUserIdResend'>
<part name='CallerSignature' type='xsd:string' />
<part name='Password' type='xsd:string' />
<part name='ServiceValidationList' type='xsd:string' />
</message>
<message name='SecurePortal.GsoUserIdResendResponse' />
<message name='SecurePortal.GsoResetPassword'>
<part name='CallerSignature' type='xsd:string' />
<part name='UserIdentifier' type='xsd:string' />
<part name='ServiceValidationList' type='xsd:string' />
</message>
<message name='SecurePortal.GsoResetPasswordResponse' />
<portType name='SecurePortalSoapPort'>
- 37 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<operation name='GsoRegisterAndEnrol' parameterOrder='TicketBook
CallerSignature ServiceValidationList UserDetails Credential UserIdentifier
CredentialIdentifier ServiceAuthenticateList'>
<input message='wsdlns:SecurePortal.GsoRegisterAndEnrol' />
<output message='wsdlns:SecurePortal.GsoRegisterAndEnrolResponse' />
</operation>
<operation name='GsoEnrolOnly' parameterOrder='TicketBook CallerSignature
ServiceValidationList ServiceAuthenticateList'>
<input message='wsdlns:SecurePortal.GsoEnrolOnly' />
<output message='wsdlns:SecurePortal.GsoEnrolOnlyResponse' />
</operation>
<operation name='GsoActivate' parameterOrder='TicketBook CallerSignature
ServiceActivationList ServiceAuthenticateList'>
<input message='wsdlns:SecurePortal.GsoActivate' />
<output message='wsdlns:SecurePortal.GsoActivateResponse' />
</operation>
<operation name='GsoAuthenticate' parameterOrder='TicketBook CallerSignature
Credential ServiceList ServiceAuthenticateList CredentialIdentifier
UserDetailsGet'>
<input message='wsdlns:SecurePortal.GsoAuthenticate' />
<output message='wsdlns:SecurePortal.GsoAuthenticateResponse' />
</operation>
<operation name='GsoValidate' parameterOrder='TicketBook CallerSignature
ServiceList ServiceAuthenticateList CredentialIdentifier UserDetailsGet'>
<input message='wsdlns:SecurePortal.GsoValidate' />
<output message='wsdlns:SecurePortal.GsoValidateResponse' />
</operation>
<operation name='GsoRefresh' parameterOrder='TicketBook CallerSignature'>
<input message='wsdlns:SecurePortal.GsoRefresh' />
<output message='wsdlns:SecurePortal.GsoRefreshResponse' />
</operation>
<operation name='GsoDeEnrol' parameterOrder='TicketBook CallerSignature
ServiceList ServiceAuthenticateList'>
<input message='wsdlns:SecurePortal.GsoDeEnrol' />
<output message='wsdlns:SecurePortal.GsoDeEnrolResponse' />
</operation>
<operation name='GsoGetUserDetails' parameterOrder='TicketBook CallerSignature
UserDetailsGet'>
<input message='wsdlns:SecurePortal.GsoGetUserDetails' />
<output message='wsdlns:SecurePortal.GsoGetUserDetailsResponse' />
</operation>
<operation name='GsoSetUserDetails' parameterOrder='TicketBook
CallerSignature UserDetailsSet'>
<input message='wsdlns:SecurePortal.GsoSetUserDetails' />
<output message='wsdlns:SecurePortal.GsoSetUserDetailsResponse' />
</operation>
<operation name='GsoGetLoginDocument' parameterOrder='Base64Encode
LoginDocument SignedInfoBlock'>
<input message='wsdlns:SecurePortal.GsoGetLoginDocument' />
<output message='wsdlns:SecurePortal.GsoGetLoginDocumentResponse' />
</operation>
<operation name='GsoLogOut' parameterOrder='TicketBook CallerSignature'>
<input message='wsdlns:SecurePortal.GsoLogOut' />
<output message='wsdlns:SecurePortal.GsoLogOutResponse' />
</operation>
<operation name='GsoSetPassword' parameterOrder='TicketBook CallerSignature
CredentialChange'>
<input message='wsdlns:SecurePortal.GsoSetPassword' />
<output message='wsdlns:SecurePortal.GsoSetPasswordResponse' />
</operation>
<operation name='GsoResetPassword' parameterOrder='CallerSignature
UserIdentifier ServiceValidationList'>
<input message='wsdlns:SecurePortal.GsoResetPassword' />
<output message='wsdlns:SecurePortal.GsoResetPasswordResponse' />
</operation>
<operation name='GsoUserIdResend' parameterOrder='CallerSignature Password
ServiceValidationList'>
<input message='wsdlns:SecurePortal.GsoUserIdResend' />
<output message='wsdlns:SecurePortal.GsoUserIdResendResponse' />
</operation>
</portType>
<binding name='SecurePortalSoapBinding' type='wsdlns:SecurePortalSoapPort' >
<stk:binding preferredEncoding='UTF-8'/>
<soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'
/>
<operation name='GsoRegisterAndEnrol' >
- 38 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoRegisterAndEnrol' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoEnrolOnly' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoEnrolOnly' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoActivate' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoActivate' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoAuthenticate' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoAuthenticate' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoValidate' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoValidate' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoRefresh' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoRefresh' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
- 39 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoDeEnrol' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoDeEnrol' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoGetUserDetails' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoGetUserDetails' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoSetUserDetails' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoSetUserDetails' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoGetLoginDocument' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoGetLoginDocument' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoLogOut' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoLogOut' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoSetPassword' >
- 40 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoSetPassword' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoResetPassword' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoResetPassword' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoUserIdResend' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:SecurePortal.GsoUserIdResend' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
</binding>
<service name='GsoSoapSecurePortalService' >
<port name='SecurePortalSoapPort' binding='wsdlns:SecurePortalSoapBinding' >
<soap:address
location='https://secure.gso.eval/soap/SecurePortal/GsoSoapSecurePortalService.WSD
L' />
</port>
</service>
</definitions>
- 41 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
- 42 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
4.2 InternetPublic WSDL
The WSDL file for the InternetPublic SOAP interface
(https://secure.gateway.gov.uk/soap/InternetPublic) is as follows. Note that the
Namespace used in all XSDs for the SOAP APIs use parameter specific namespaces
urn:GSO-System-Services:external:soap:xsd<ParameterName>. The
GsoSoapInternetPublicService.wsdl file will be as follows:
<?xml version='1.0' encoding='UTF-8' ?>
<definitions
name='GsoSoapInternetPublicService'
targetNamespace='urn:GSO-System-Services:external:soap:wsdl:'
xmlns:wsdlns='urn:GSO-System-Services:external:soap:wsdl:'
xmlns:typens='urn:GSO-System-Services:external:soap:type'
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:stk='http://schemas.microsoft.com/soap-toolkit/wsdl-extension'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<types>
<schema
targetNamespace='urn:GSO-System-Services:external:soap:type'
xmlns='http://www.w3.org/2001/XMLSchema'
xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
elementFormDefault='qualified'>
</schema>
</types>
<message name='InternetPublic.GsoAuthenticate'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
<part name='Credential' type='xsd:string'/>
<part name='ServiceList' type='xsd:string'/>
</message>
<message name='InternetPublic.GsoAuthenticateResponse'>
<part name='TicketBook' type='xsd:string'/>
<part name='ServiceAuthenticateList' type='xsd:string'/>
<part name='CredentialIdentifier' type='xsd:string'/>
<part name='UserDetailsGet' type='xsd:string'/>
</message>
<message name='InternetPublic.GsoRefresh'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
</message>
<message name='InternetPublic.GsoRefreshResponse'>
<part name='TicketBook' type='xsd:string'/>
</message>
<message name='InternetPublic.GsoValidate'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
<part name='ServiceList' type='xsd:string'/>
</message>
<message name='InternetPublic.GsoValidateResponse'>
<part name='TicketBook' type='xsd:string'/>
<part name='ServiceAuthenticateList' type='xsd:string'/>
<part name='CredentialIdentifier' type='xsd:string'/>
<part name='UserDetailsGet' type='xsd:string'/>
</message>
<message name='InternetPublic.GsoGetLoginDocument'>
<part name='Base64Encode' type='xsd:string'/>
</message>
<message name='InternetPublic.GsoGetLoginDocumentResponse'>
<part name='LoginDocument' type='xsd:string'/>
<part name='SignedInfoBlock' type='xsd:string'/>
</message>
<message name='InternetPublic.GsoLogOut'>
<part name='TicketBook' type='xsd:string'/>
<part name='CallerSignature' type='xsd:string'/>
</message>
<message name='InternetPublic.GsoLogOutResponse'>
<part name='TicketBook' type='xsd:string'/>
</message>
<portType name='InternetPublicSoapPort'>
<operation name='GsoAuthenticate' parameterOrder='TicketBook CallerSignature
Credential ServiceList ServiceAuthenticateList CredentialIdentifier
- 43 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
UserDetailsGet'>
<input message='wsdlns:InternetPublic.GsoAuthenticate' />
<output message='wsdlns:InternetPublic.GsoAuthenticateResponse' />
</operation>
<operation name='GsoRefresh' parameterOrder='TicketBook CallerSignature'>
<input message='wsdlns:InternetPublic.GsoRefresh' />
<output message='wsdlns:InternetPublic.GsoRefreshResponse' />
</operation>
<operation name='GsoValidate' parameterOrder='TicketBook CallerSignature
ServiceList ServiceAuthenticateList CredentialIdentifier UserDetailsGet'>
<input message='wsdlns:InternetPublic.GsoValidate' />
<output message='wsdlns:InternetPublic.GsoValidateResponse' />
</operation>
<operation name='GsoGetLoginDocument' parameterOrder='Base64Encode
LoginDocument SignedInfoBlock'>
<input message='wsdlns:InternetPublic.GsoGetLoginDocument' />
<output message='wsdlns:InternetPublic.GsoGetLoginDocumentResponse' />
</operation>
<operation name='GsoLogOut' parameterOrder='TicketBook CallerSignature'>
<input message='wsdlns:InternetPublic.GsoLogOut' />
<output message='wsdlns:InternetPublic.GsoLogOutResponse' />
</operation>
</portType>
<binding name='InternetPublicSoapBinding' type='wsdlns:InternetPublicSoapPort'
>
<stk:binding preferredEncoding='UTF-8'/>
<soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'
/>
<operation name='GsoAuthenticate' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:InternetPublic.GsoAuthenticate' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoRefresh' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:InternetPublic.GsoRefresh' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoValidate' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:InternetPublic.GsoValidate' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoGetLoginDocument' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:InternetPublic.GsoGetLoginDocument' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
- 44 -
Developer Guide to A&A Web Services
Government Gateway 1.6.3
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
<operation name='GsoLogOut' >
<soap:operation soapAction='urn:GSO-SystemServices:external:soap:action:InternetPublic.GsoLogOut' />
<input>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</input>
<output>
<soap:body use='encoded' namespace='urn:GSO-SystemServices:external:soap:message:'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
</binding>
<service name='GsoSoapInternetPublicService' >
<port name='InternetPublicSoapPort'
binding='wsdlns:InternetPublicSoapBinding' >
<soap:address
location='https://secure.gso.eval/soap/InternetPublic/GsoSoapInternetPublicService
.WSDL' />
</port>
</service>
</definitions>
- 45 -
Download