Apple Safari · Authentication Profile

Apple Safari Authentication

Authentication

There is no single Safari API credential. Authentication is per-surface, and two of the three network surfaces use certificate- or key-based schemes rather than a bearer token or API key — which is why no OAuth or OpenID discovery document is served on any host in this record. Derived by reading the docs, not from an OpenAPI securitySchemes block: Apple publishes no OpenAPI for Safari.

Apple Safari declares 4 security scheme(s) across its OpenAPI definitions.

AppleBrowserPrivacyWeb BrowserWebkit
Methods: Schemes: 4 OAuth flows: API key in:

Security Schemes

http
scheme: vapid
mutualTLS
none
delegated

Source

Authentication Profile

apple-safari-authentication.yml Raw ↑
generated: '2026-09-07'
method: searched
source: >-
  https://developer.apple.com/documentation/usernotifications/sending-web-push-notifications-in-web-apps-and-browsers,
  https://developer.apple.com/documentation/applepayontheweb/requesting-an-apple-pay-payment-session,
  https://developer.apple.com/documentation/applepayontheweb/setting-up-your-server,
  https://developer.apple.com/documentation/authenticationservices/aswebauthenticationsession
specification: API Commons Authentication
specificationVersion: '0.1'
provider: Apple Safari
providerId: apple-safari
description: >-
  There is no single Safari API credential. Authentication is per-surface, and two of the
  three network surfaces use certificate- or key-based schemes rather than a bearer token
  or API key — which is why no OAuth or OpenID discovery document is served on any host
  in this record. Derived by reading the docs, not from an OpenAPI securitySchemes block:
  Apple publishes no OpenAPI for Safari.
schemes:
  - id: vapid-jwt
    surface: Apple Web Push service
    type: http
    scheme: vapid
    location: Authorization header
    description: >-
      The application server signs a VAPID JSON Web Token with its own private key and
      sends it, together with the matching VAPID public key, in the Authorization header.
      The public key must match the one passed to PushManager.subscribe for that
      subscription.
    constraints:
      - JWT subject claim must be a URL or a mailto: URI.
      - JWT audience claim must be the origin of the push service the request is sent to.
      - JWT expiration must not be more than one day in the future.
      - Do not refresh the JWT more frequently than once per hour.
    failure_modes:
      - BadAuthorizationHeader
      - BadJwtToken
      - BadVapidPublicKey
      - VapidPkHashMismatch
    docs: https://developer.apple.com/documentation/usernotifications/sending-web-push-notifications-in-web-apps-and-browsers
    requires_paid_membership: false
  - id: apple-pay-mtls
    surface: Apple Pay merchant validation
    type: mutualTLS
    location: TLS client certificate
    description: >-
      "Your server posts a request using mutual TLS (mTLS)" to the Apple Pay Payment
      Session endpoint, presenting the merchant identity certificate associated with the
      merchant ID. The request must come from the server, never from the client.
    constraints:
      - TLS 1.2 or later.
      - 'Cipher suite limited to: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-RSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES256-GCM-SHA384, ECDHE-RSA-AES256-GCM-SHA384.'
      - TLS Server Name Indication (SNI) required on all connections.
      - HTTPS over TCP port 443 to a strict allow list of Apple Pay gateway domains and IP ranges.
      - The returned session object expires after five minutes.
    docs: https://developer.apple.com/documentation/applepayontheweb/requesting-an-apple-pay-payment-session
    requires_paid_membership: true
    membership_note: The merchant identity certificate is issued through an Apple Developer Program account.
  - id: safaridriver-local
    surface: safaridriver (W3C WebDriver + Safari MCP server)
    type: none
    location: local machine
    description: >-
      No credential. Access is authorised by the user turning on "Allow remote automation
      and external agents" in Safari's Developer settings on their own machine, and the
      driver is reachable only from that machine. Automation sessions run in isolated
      windows that cannot read browsing history, AutoFill data or other sensitive state.
    docs: https://developer.apple.com/documentation/webkit/about-webdriver-for-safari
    requires_paid_membership: false
  - id: aswebauthenticationsession
    surface: Safari Authentication Services API
    type: delegated
    description: >-
      ASWebAuthenticationSession is the client-side handoff an app uses to run an OAuth or
      WebAuthn flow in Safari and receive the callback. Safari is the user agent in the
      flow — it is not itself an authorization server, and it issues no tokens of its own.
      Passkeys/WebAuthn credentials are held by the platform and the relying party is the
      site, not Apple.
    docs: https://developer.apple.com/documentation/authenticationservices/aswebauthenticationsession
    requires_paid_membership: false
no_credential_required:
  apis:
    - Safari Extensions API
    - Safari App Extensions API
    - Safari Web Content API (WebKit)
    - Safari Services API
    - Safari Content Blocking API
    - Safari Developer Tools API
  note: >-
    In-process platform APIs. Distribution through App Store Connect requires Apple
    Developer Program membership, but calling the API does not.
discovery_documents:
  openid_configuration: not served
  oauth_authorization_server: not served
  evidence: well-known/apple-safari-well-known.yml
maintainers:
  - FN: Kin Lane
    email: kin@apievangelist.com
    url: https://apievangelist.com

Work with this as data

Every security artifact here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for security posture

4 MCP tools reach this
  • find_securityBrowse and filter every security artifact in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This security artifact
curl "https://apis.io/api/v1/security/apple-safari-authentication"
All security posture
curl "https://apis.io/api/v1/security?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.