IESO · Authentication Profile

Ieso Authentication

Authentication

IESO secures its APIs with none, http, apiKey, oauth2, and openIdConnect across 6 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode, implicit, refreshToken, password, and deviceCode flow(s).

EnergyCanadaElectricityEnergy MarketsGridSystem OperatorMarket DataOpen DataOntarioDemand ResponseRenewables
Methods: none, http, apiKey, oauth2, openIdConnect Schemes: 6 OAuth flows: authorizationCode, implicit, refreshToken, password, deviceCode API key in: header, basic-username

Security Schemes

public-report-repository-anonymous none
reports-api-basic http
scheme: basic
reports-sftp http
scheme: sftp-password
appian-api-key apiKey
· in: headerbasic-username ()
mim-userid-password-plus-ip-allowlist http
scheme: ws-security-userid-password
ieso-gateway-oidc openIdConnect

Source

Authentication Profile

ieso-authentication.yml Raw ↑
generated: '2026-07-27'
method: searched
source: >-
  IESO published interface specifications (IMO_SPEC_0100, IESO_Reports_API_Guide, SPEC-249, SPEC-188,
  MWT-User-Guide) plus anonymous probes of every host and the live OIDC discovery document at
  gateway.ieso.ca
docs: https://www.ieso.ca/sector-participants/technical-interfaces
note: >-
  Derived mechanically from OpenAPI is not possible here — IESO publishes no OpenAPI. This profile is
  read from IESO's own published interface specifications and confirmed by live probes. The estate has
  four distinct authentication models and one genuinely unauthenticated surface.
summary:
  types: [none, http, apiKey, oauth2, openIdConnect]
  api_key_in: [header, basic-username]
  oauth2_flows: [authorizationCode, implicit, refreshToken, password, deviceCode]
  anonymous_surfaces: 1
  self_serve_credentials: false
  credential_issuance: >-
    No self-serve signup for any authenticated surface. Machine accounts and API keys are issued by
    the IESO on request, and for the Online IESO APIs must be requested by the participant
    organization's registered Rights Administrator.
schemes:
- name: public-report-repository-anonymous
  type: none
  applies_to: ieso:ieso-public-reports-repository
  hosts: [https://reports-public.ieso.ca, https://reports-public-sandbox.ieso.ca]
  description: >-
    No authentication of any kind. IMO_SPEC_0100 section 3 states "All market participants, and in
    general, the public, have access to public report repository." Verified HTTP 200 anonymously on
    2026-07-27 on both the directory index and a live data file. No account, key, cookie, referrer
    check or terms click-through.
  evidence: https://www.ieso.ca/-/media/Files/IESO/technical-interfaces/xml-automated-docs/IMO_SPEC_0100.pdf
- name: reports-api-basic
  type: http
  scheme: basic
  applies_to: ieso:ieso-reports-site-rest-api
  hosts: [https://reports.ieso.ca, https://reports-sandbox.ieso.ca]
  description: >-
    HTTP Basic credentials on every request to the Axway SecureTransport REST API, plus the mandatory
    query string parameter ?idp_id=ieso appended to every request. The IESO Reports API Guide states
    "The market participant must have a valid user name and password in order to access the
    confidential report repository (upon request the IESO shall provide the market participant with a
    machine account)."
  required_query_parameter: idp_id=ieso
  probe:
    url: https://reports.ieso.ca/api/v1.4/files?idp_id=ieso
    status: 401
    date: '2026-07-27'
  evidence: https://www.ieso.ca/-/media/Files/IESO/technical-interfaces/api-reports-guide/IESO_Reports_API_Guide.pdf
- name: reports-sftp
  type: http
  scheme: sftp-password
  applies_to: ieso:ieso-reports-site-rest-api
  hosts: [reports.ieso.ca:22]
  description: >-
    A second access interface to the same confidential repository. SSH File Transfer Protocol on port
    22 with the same machine API account username and password. Documented in the IESO Reports API
    Guide, "Access Interface - SFTP".
  evidence: https://www.ieso.ca/-/media/Files/IESO/technical-interfaces/api-reports-guide/IESO_Reports_API_Guide.pdf
- name: appian-api-key
  type: apiKey
  applies_to:
  - ieso:ieso-registration-facilities-api
  - ieso:ieso-retrofit-api
  - ieso:ieso-retrofit-service-provider-api
  hosts: [https://online.ieso.ca, https://onlinesandbox.ieso.ca]
  description: >-
    Appian API key, accepted three ways per SPEC-249: HTTP Basic with the API key as the username and
    a blank password (or the reverse), an Appian-API-Key request header, or an Authorization Bearer
    header. HTTPS is mandatory. A missing or invalid Authorization header returns 401.
  in: [header, basic-username]
  parameter_names: [Appian-API-Key, Authorization]
  issuance: >-
    The organization's registered IESO Rights Administrator must request an API machine account with
    "Registration API" access. No self-serve issuance.
  evidence: https://www.ieso.ca/-/media/Files/IESO/technical-interfaces/registration-system/FacilityAPISpecification-SPEC-249.pdf
- name: mim-userid-password-plus-ip-allowlist
  type: http
  scheme: ws-security-userid-password
  applies_to: ieso:ieso-mim-web-services
  hosts: [https://webservices.ieso.ca, https://webservices-sandbox.ieso.ca, https://webservices-sandboxmrp.ieso.ca]
  description: >-
    SOAP endpoint secured by an IESO UserID and password in the format user@participantName, combined
    with source IP address allow-listing and a client truststore. IESO's technical interfaces page
    states the MIM web services require "UserID/Password and whitelisted client machine IP address".
    Neither the production nor sandbox host connected from the open internet on 2026-07-27 (curl exit
    000), consistent with network-level restriction.
  username_format: user@participantName
  transport_controls: [ip-allowlist, client-truststore, tls]
  evidence: https://www.ieso.ca/-/media/Files/IESO/technical-interfaces/mp-submissions/MWT-User-Guide.pdf
- name: ieso-gateway-oidc
  type: openIdConnect
  applies_to: participant web applications (reports.ieso.ca, online.ieso.ca)
  openIdConnectUrl: https://gateway.ieso.ca/.well-known/openid-configuration
  issuer: https://gateway.ieso.ca
  description: >-
    The Okta-hosted identity provider that fronts interactive participant login. reports.ieso.ca
    auto-POSTs a SAML2 AuthnRequest to this gateway. The OIDC/OAuth 2.0 discovery documents are served
    anonymously and are harvested to well-known/. This is the human login path, not the machine-account
    path used by the documented APIs.
  authorization_endpoint: https://gateway.ieso.ca/oauth2/v1/authorize
  token_endpoint: https://gateway.ieso.ca/oauth2/v1/token
  userinfo_endpoint: https://gateway.ieso.ca/oauth2/v1/userinfo
  jwks_uri: https://gateway.ieso.ca/oauth2/v1/keys
  introspection_endpoint: https://gateway.ieso.ca/oauth2/v1/introspect
  revocation_endpoint: https://gateway.ieso.ca/oauth2/v1/revoke
  device_authorization_endpoint: https://gateway.ieso.ca/oauth2/v1/device/authorize
  registration_endpoint: https://gateway.ieso.ca/oauth2/v1/clients
  grant_types_supported: [authorization_code, implicit, refresh_token, password, 'urn:ietf:params:oauth:grant-type:device_code']
  token_endpoint_auth_methods_supported: [client_secret_basic, client_secret_post, client_secret_jwt, private_key_jwt, none]
  code_challenge_methods_supported: [S256]
  dpop_supported: true
  source: well-known/ieso-openid-configuration.json
gaps:
- No API key or token can be obtained self-serve anywhere in the estate.
- No mTLS scheme is documented for any interface.
- >-
  The scopes advertised by gateway.ieso.ca are the stock OIDC set; IESO publishes no
  API-specific authorization scope catalogue. See scopes/ieso-scopes.yml.