Lloyd's of London · Authentication Profile

Lloyds Of London Authentication

Authentication

Lloyd's market APIs are dual-credentialed. Every call carries TWO independent identifying security tokens: a client X.509 certificate presented on the mutual-TLS handshake to the London Market API Gateway (which identifies the calling APPLICATION via the certificate Subject CN), and an Authorization: Bearer JWT issued by the LIMOSS Common Services Azure Active Directory tenant (which identifies the PRINCIPAL). The bearer token must be an on-behalf-of token carrying an "scp" claim of user_impersonation - a plain OAuth 2.0 login token is explicitly not sufficient. There is no API-key path and no self-serve credential issuance: certificates are registered per environment through LIMOSS onboarding.

Lloyd’s of London secures its APIs with mutualTLS, oauth2, openIdConnect, and http across 4 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode, on-behalf-of, and client_credentials flow(s).

InsuranceUnited KingdomReinsuranceSpecialty InsuranceLondon MarketUnderwritingClaimsDelegated AuthorityBrokerMarket InfrastructureStandardsACORD
Methods: mutualTLS, oauth2, openIdConnect, http Schemes: 4 OAuth flows: authorizationCode, on-behalf-of, client_credentials API key in:

Security Schemes

ClientCertificate mutualTLS
AzureADBearer oauth2
scheme: bearer · flows: authorizationCode, on-behalf-of, client_credentials
GatewaySignedJWT openIdConnect
XAssert http
scheme: X-Assert

Source

Authentication Profile

lloyds-of-london-authentication.yml Raw ↑
generated: '2026-07-25'
method: searched
source: >-
  https://web.archive.org/web/20200930095802/https://developer.lloyds.com/Get-Started/Base-API-Standard
  (section 5.12 Security) and
  https://web.archive.org/web/20200930085423/https://developer.lloyds.com/Get-Started/Authentication-Information
docs:
- https://web.archive.org/web/20200930085423/https://developer.lloyds.com/Get-Started/Authentication-Information
- https://web.archive.org/web/20200930095802/https://developer.lloyds.com/Get-Started/Base-API-Standard
- https://web.archive.org/web/20200930075931/https://developer.lloyds.com/Get-Started/Registration-Onboarding
description: >-
  Lloyd's market APIs are dual-credentialed. Every call carries TWO independent identifying
  security tokens: a client X.509 certificate presented on the mutual-TLS handshake to the
  London Market API Gateway (which identifies the calling APPLICATION via the certificate
  Subject CN), and an Authorization: Bearer JWT issued by the LIMOSS Common Services Azure
  Active Directory tenant (which identifies the PRINCIPAL). The bearer token must be an
  on-behalf-of token carrying an "scp" claim of user_impersonation - a plain OAuth 2.0 login
  token is explicitly not sufficient. There is no API-key path and no self-serve credential
  issuance: certificates are registered per environment through LIMOSS onboarding.
summary:
  types: [mutualTLS, oauth2, openIdConnect, http]
  http_schemes: [bearer]
  bearer_format: JWT
  oauth2_flows: [authorizationCode, on-behalf-of, client_credentials]
  api_key_in: []
  self_serve_credentials: false
  mfa_signalled: true
schemes:
- name: ClientCertificate
  type: mutualTLS
  required: true
  description: >-
    The API Consumer must initiate the HTTPS connection to the API Gateway with a client X.509
    certificate. The CN of the Subject field identifies the calling application. The certificate
    must be signed by a CA in the Microsoft Trusted Root Certificate Program and should be an
    Extended Validation certificate. A DIFFERENT certificate must be registered per environment
    (Sandbox, PreProd, Production).
  evidence: >-
    Live probe 2026-07-25 - GET https://api.londonmarketgroup.co.uk/Lloyds/CatastropheCodes/v1/CatastropheCodes
    returns 401 {"Code":401,"Message":"Client certificate is missing. Ref: ..."}
  registration: LIMOSS API Gateway onboarding, per environment
  sources: [Lloyd's Base API Standard section 5.12.1]
- name: AzureADBearer
  type: oauth2
  required: true
  scheme: bearer
  bearerFormat: JWT
  description: >-
    Authorization: Bearer <JWT>. The JWT must be signed by a Security Token Service known to the
    API Gateway (the Common Services Azure AD tenant) and must be an on-behalf-of token issued to
    the calling application, carrying scp=user_impersonation. Tokens returned directly from an
    OAuth 2.0 login are normally NOT on-behalf-of tokens; the application backend must exchange
    them with Azure AD. Where an API validates the audience claim, the gateway may itself obtain
    a further on-behalf-of token with the correct aud.
  flows:
  - flow: authorizationCode
    authority: https://login.microsoftonline.com/{tenantId}
    callback_path: /signin-oidc
    response_type: code id_token
    note: >-
      tenantId is the SAND, PreProd or Prod Common Services tenant, supplied during onboarding.
  - flow: on-behalf-of
    grant_type: urn:ietf:params:oauth:grant-type:jwt-bearer
    note: RFC 7523 JWT bearer assertion exchange, required to mint the token actually sent to the gateway.
  - flow: client_credentials
    note: Service-account (headless server-to-server) tokens for API consumers with no browser leg.
  scopes: [user_impersonation]
  sources: [Lloyd's Base API Standard section 5.12.1, Lloyd's Authentication Information page]
- name: GatewaySignedJWT
  type: openIdConnect
  required: false
  audience: API Providers (internal leg)
  description: >-
    After enforcing the client certificate and inbound JWT, the API Gateway acts as a Policy
    Enforcement Point and mints a NEW signed JWT for the API Provider, embedding the original
    consumer token in an "lmg_pkt" claim. Providers verify that JWT against the gateway's
    published OIDC discovery document and JWKS.
  openIdConnectUrl: https://api.londonmarketgroup.co.uk/discovery/.well-known/openid-configuration
  jwks_uri: https://api.londonmarketgroup.co.uk/discovery/keys
  live_status: 200 (probed 2026-07-25)
  sources: [Lloyd's Base API Standard section 5.12.2, well-known/lloyds-of-london-well-known.yml]
- name: XAssert
  type: http
  required: false
  scheme: X-Assert
  description: >-
    Degraded alternative shown in the Lloyd's sample application: where the client is configured
    with RequireOnBehalfOfToken=false, the Authorization header carries "X-Assert <user email>"
    instead of a bearer token. Not part of the Base API Standard's mandatory rules; present in
    the published PlacingHttpClientFactory sample.
  sources: [Lloyd's Authentication Information page]
jwt_claims:
  mandatory:
  - {claim: scp, value: user_impersonation, note: must be present on the consumer token}
  understood:
  - {claim: sub, meaning: 'Immutable identifier of the principal; safe for authorisation checks.'}
  - {claim: upn, meaning: 'Principal identity as an email address; may change over the lifetime of the individual.'}
  - {claim: amr, meaning: 'Authentication methods used; presence of "mfa" means multi-factor authentication took place.'}
  - {claim: aud, meaning: 'Audience; must match the endpoint URI up to but not including the version.'}
  - {claim: iss, meaning: 'Issuer; must match the gateway URI for the environment, e.g. https://sand-api.londonmarketgroup.co.uk/ in Sandbox.'}
  additional: [appid, given_name, idp, iat, family_name, unique_name, oid, nbf, exp, lmg_mpo, lmg_cert_dn, lmg_pkt]
  ttl_rule: >-
    Any token issued by the API Gateway must not have a TTL longer than the token that called it;
    nbf is set to now and exp to the expiry of the original token.
authorization:
  model: >-
    The API Gateway may perform high-level authorisation but should not perform low-level
    role-based authorisation; API Providers may use any JWT claim for authorisation. Failure at
    either enforcement step returns 401 with a message indicating which PEP step failed.
  errors: [ResourceAccessDenied, AccessToReferencedResourceNotAllowed, NotDocumentOwner]
onboarding:
  self_serve: false
  steps:
  - Onboard the organisation to LIMOSS Common Services / the LIMOSS API Gateway ("Subscribe to PPL API").
  - Guest the account identity into each Common Services environment separately (Sandbox, PreProd, Production).
  - Register the application in the Common Services Azure Active Directory (CS Developers On-Boarding Guide v1.1).
  - Register an X.509 certificate in each API Gateway environment (a different certificate per environment).
  - For Sandbox/PreProd test data, request test-harness setup from the Lloyd's API Factory.
  contacts:
  - {purpose: API Factory - licences, test harnesses, API standards, design issues, email: developer@lloyds.com}
  - {purpose: Placing API adoption on the PPL platform, email: PPLEnquiries@lloyds.com}
  - {purpose: LIMOSS onboarding and SLA, url: 'https://limoss.london/'}
transport_security:
  https_only: true
  mutual_tls: true
  gateway_certificate: Extended Validation certificate signed by a Microsoft Trusted Root CA
  observed_tls: TLSv1.2 (api.londonmarketgroup.co.uk, probed 2026-07-25)
related:
- scopes/lloyds-of-london-scopes.yml
- well-known/lloyds-of-london-well-known.yml
- conventions/lloyds-of-london-conventions.yml
- sandbox/lloyds-of-london-sandbox.yml