SaskPower · Authentication Profile
Saskpower Authentication
Authentication
SaskPower secures its APIs with none and oidc-human-login across 4 declared security schemes, as derived from its OpenAPI definitions.
EnergyCanadaUtilitiesElectricityGridSmart MeteringCrown CorporationOutagesRenewablesOpen Data
Methods: none, oidc-human-login
Schemes: 4
OAuth flows:
API key in:
Security Schemes
none none
SaskPower.Azure.B2C openIdConnect
Microsoft Entra ID (partner portal) openIdConnect
TIBCO Cloud API Management (Mashery) gateway unknown
Source
Authentication Profile
generated: '2026-07-27'
method: probed
source: live HTTP probes of every SaskPower host and endpoint, 2026-07-27
note: >-
SaskPower publishes no OpenAPI, so there are no securitySchemes to derive from.
This profile is built from what the endpoints and hosts actually do when probed.
The estate splits cleanly in two: everything a developer can reach is
unauthenticated, and everything authenticated is a human web login with no
delegated-authorization path for a third party.
summary:
types: [none, oidc-human-login]
api_key_in: []
oauth2_flows: []
developer_credentials_issued: false
third_party_delegation: false
headline: >-
No API key, no OAuth client registration, no token endpoint and no scope
surface exists for any SaskPower data. The open feeds need nothing; the
customer data behind MySaskPower is reachable only by the account holder
signing in through Azure AD B2C in a browser.
schemes:
- name: none
type: none
applies_to:
- saskpower:saskpower-power-use-dashboard-data
- saskpower:saskpower-planned-outages-rss-feed
- saskpower:saskpower-live-outage-json-feed
- saskpower:saskpower-outage-map-kml-feed
- saskpower:saskpower-smart-meter-installation-map-kml-feed
detail: >-
Anonymous HTTPS GET. Verified 2026-07-27 against all five endpoints with no
Authorization header, no cookie, no API key and no Referer: every one returned
HTTP 200 with its full payload. No key, no signup, no quota and no published
rate limit. The endpoints do set a Sitecore SP_CACHE_KEY session cookie on the
response (path=/, secure, HttpOnly, SameSite=None) but do not require it on
the request.
cors: >-
No Access-Control-Allow-Origin header is returned, tested with an explicit
Origin: https://example.com. Browser-side third-party use is therefore blocked
by the same-origin policy; these feeds are reachable server-side only.
- name: SaskPower.Azure.B2C
type: openIdConnect
applies_to: MySaskPower customer portal (not an API)
identity_provider: Azure AD B2C, fronted by Sitecore Identity
evidence: >-
https://www.saskpower.com/profile/my-dashboard and
https://www.saskpower.com/Profile/My-Dashboard/My-Reports/Download-Data both
return a 519-byte auto-submitting HTML form POSTing to
/identity/externallogin?authenticationType=SaskPower.Azure.B2C with a
ReturnUrl back to the requested page. Confirmed 2026-07-27.
delegated_access: false
detail: >-
A human browser login, not an authorization surface. There is no client
registration, no consent screen offered to a third party, no scope vocabulary,
no token endpoint published, and no documented way for an application to be
authorized to read another person's data. A customer can reach an in-portal
"Download Data" report page (/Profile/My-Dashboard/My-Reports/Download-Data)
but no export format is advertised anywhere on the public site and the page
itself is behind the login, so no format is recorded here.
session_endpoints_observed:
- /api/sitecore/B2CAuthentication/ExtendLoginCookie
- /api/sitecore/B2CAuthentication/Logout
- name: Microsoft Entra ID (partner portal)
type: openIdConnect
applies_to: partner.saskpower.com
detail: >-
302s to login.microsoftonline.com, tenant
dbe9bd7b-4b3a-44b3-b358-e61ff34d58b2, response_type=code id_token,
scope=openid profile. Corporate partner SSO for contractors and vendors, not a
developer portal and not an API gate.
- name: TIBCO Cloud API Management (Mashery) gateway
type: unknown
applies_to: api.saskpower.com
detail: >-
The gateway is live — CNAME saskpower1.api.mashery.com — but no service is
mapped to any public path: every path probed returns HTTP 596 with
x-mashery-error-code ERR_596_SERVICE_NOT_FOUND from Server: Mashery Proxy.
Mashery's normal auth model is an api_key/sig query pair, but nothing is
exposed to confirm which scheme any real service behind it uses, so the type
is recorded as unknown rather than guessed. The developer portal that would
have issued keys, api-info.saskpower.com, is NXDOMAIN.
discovery:
openid_configuration: not served on any SaskPower host (see well-known/saskpower-well-known.yml)
oauth_authorization_server: not served
oauth_protected_resource: not served