Green Button Alliance · Authentication Profile

Green Button Alliance Authentication

Authentication

Three distinct authentication surfaces sit under the Green Button Alliance name and must not be conflated. (1) The CMD ESPI resource server contract - OAuth 2.0 authorization_code and client_credentials, bearer tokens, ESPI Function Block scope grammar; this is the interface every certified Data Custodian implements, not a service GBA runs. (2) The OpenESPI Authorization Server GBA publishes as a reference implementation - JWT bearer, HTTP basic client credentials, and X.509 mutual TLS client certificates, TLS 1.3 only. (3) GBA's own member single sign-on - a standard OIDC provider for the association's membership system, which grants no access to any energy data at all.

Green Button Alliance secures its APIs with http, mutualTLS, oauth2, and openIdConnect across 4 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode, clientCredentials, and refreshToken flow(s).

EnergyUnited StatesUtilitiesElectricityGasWaterSmart MeteringGreen ButtonESPIStandards BodyCertificationConsumer Energy Data
Methods: http, mutualTLS, oauth2, openIdConnect Schemes: 4 OAuth flows: authorizationCode, clientCredentials, refreshToken API key in:

Security Schemes

BearerAuth http
scheme: bearer
ClientCredentials http
scheme: basic
ClientCertificate mutualTLS
oauth2 oauth2
· flows: authorizationCode, clientCredentials

Source

Authentication Profile

Raw ↑
generated: '2026-07-27'
method: searched
source: openapi/green-button-alliance-authorization-server-openapi.yml, openapi/green-button-alliance-green-button-api-openapi.yml
docs: https://www.greenbuttonalliance.org/access-tokens
additional_docs:
- https://www.greenbuttonalliance.org/oauth-20-access-and-refresh-token-duration
- https://www.greenbuttonalliance.org/function-blocks
- https://github.com/GreenButtonAlliance/OpenESPI-GreenButton-Java/blob/main/openespi-authserver/docs/OAUTH2_CLIENT_MANAGEMENT_API.md
- https://github.com/GreenButtonAlliance/OpenESPI-GreenButton-Java/blob/main/openespi-authserver/docs/OIDC_USERINFO_ENDPOINT.md
- https://archive.greenbuttondata.org/espi/access_tokens/
description: >-
  Three distinct authentication surfaces sit under the Green Button Alliance name
  and must not be conflated. (1) The CMD ESPI resource server contract - OAuth 2.0
  authorization_code and client_credentials, bearer tokens, ESPI Function Block
  scope grammar; this is the interface every certified Data Custodian implements,
  not a service GBA runs. (2) The OpenESPI Authorization Server GBA publishes as a
  reference implementation - JWT bearer, HTTP basic client credentials, and X.509
  mutual TLS client certificates, TLS 1.3 only. (3) GBA's own member single sign-on
  - a standard OIDC provider for the association's membership system, which grants
  no access to any energy data at all.
summary:
  types:
  - http
  - mutualTLS
  - oauth2
  - openIdConnect
  oauth2_flows:
  - authorizationCode
  - clientCredentials
  - refreshToken
  api_key_in: []
schemes:
- name: BearerAuth
  type: http
  scheme: bearer
  bearerFormat: JWT
  sources:
  - openapi/green-button-alliance-authorization-server-openapi.yml
- name: ClientCredentials
  type: http
  scheme: basic
  description: HTTP Basic client authentication (client_secret_basic) at the token endpoint.
  sources:
  - openapi/green-button-alliance-authorization-server-openapi.yml
- name: ClientCertificate
  type: mutualTLS
  description: >-
    X.509 client certificate authentication (tls_client_auth). The authorization
    server spec states "TLS 1.3 ONLY", "Certificate Authentication - Support for
    X.509 client certificates" and "Perfect Forward Secrecy - All cipher suites
    support PFS".
  sources:
  - openapi/green-button-alliance-authorization-server-openapi.yml
- name: oauth2
  type: oauth2
  flows:
  - flow: authorizationCode
    authorizationUrl: https://sandbox.greenbuttonalliance.org:8443/oauth/authorize
    tokenUrl: https://sandbox.greenbuttonalliance.org:8443/oauth/token
    scopes: 0
  - flow: clientCredentials
    tokenUrl: https://sandbox.greenbuttonalliance.org:8443/oauth/token
    scopes: 0
  scope_model: >-
    ESPI Function Block grammar (FB=1_3_4_5;IntervalDuration=900;...). The spec
    declares an empty scopes map; see scopes/green-button-alliance-scopes.yml.
  sources:
  - openapi/green-button-alliance-green-button-api-openapi.yml
client_authentication_methods:
- client_secret_basic
- client_secret_post
- tls_client_auth
grant_types:
- authorization_code
- client_credentials
- refresh_token
dynamic_client_registration:
  supported: true
  specs:
  - RFC 7591 OAuth 2.0 Dynamic Client Registration
  - RFC 7592 OAuth 2.0 Dynamic Client Registration Management
  evidence: >-
    Both RFCs are listed as normative references on GBA's /developer-resources, and
    the published ApplicationInformation resource carries the full RFC 7591/7592
    field set (client_id, client_secret, client_id_issued_at,
    client_secret_expires_at, registration_client_uri, registration_access_token,
    token_endpoint_auth_method, grant_types, response_types).
  registration_endpoint_field: authorizationServerRegistrationEndpoint
token_types:
  source: https://www.greenbuttonalliance.org/access-tokens
  values:
  - access_token
  - refresh_token
  - datacustodian_access_token
  - client_access_token
  - upload_access_token
  - registration_access_token
  detail: scopes/green-button-alliance-scopes.yml
token_duration_guidance:
  source: https://www.greenbuttonalliance.org/oauth-20-access-and-refresh-token-duration
  summary: >-
    GBA publishes a guidance article on OAuth 2.0 access and refresh token duration
    in the Green Button Connect context - access tokens short-lived; refresh tokens
    "long lifespans (days to weeks) and be rotated whenever used to meet best
    practice security standards". Verbatim numeric ceilings live in the paywalled
    NAESB REQ.21 ESPI standard and are not reproduced.
member_sso:
  note: Association membership single sign-on. NOT a route to energy data.
  type: openIdConnect
  discovery: https://www.greenbuttonalliance.org/.well-known/openid-configuration
  file: well-known/green-button-alliance-openid-configuration.json
  issuer: https://www.greenbuttonalliance.org
  grant_types: [authorization_code, refresh_token]
  scopes: [openid, email, profile]
  pkce: [S256]
  id_token_signing_alg: [RS256]
  token_endpoint_auth_methods: [client_secret_post, client_secret_basic]
transport_security:
  espi_v4_0: TLS 1.3 minimum
  espi_v3_3: TLS 1.2
  authorization_server: TLS 1.3 only (stated in the OpenESPI Authorization Server spec)