Via Science · Authentication Profile

Via Science Authentication

Authentication

Via Science declares 4 security scheme(s) across its OpenAPI definitions.

CompanySecurityIdentityAuthenticationZero TrustDecentralized IdentityVerifiable CredentialsPost-Quantum CryptographyEncryptionFile TransferDefenseArtificial IntelligenceBlockchainOpenID Connect
Methods: Schemes: 4 OAuth flows: API key in:

Security Schemes

openIdConnect openIdConnect
scheme: bearer · in: header ()
openIdConnect-ztf-demo openIdConnect
scheme: bearer · in: header ()
mutualTLS mutualTLS
wallet-signature-step-up signature
· in: body ()

Source

Authentication Profile

via-science-authentication.yml Raw ↑
generated: '2026-09-02'
method: probed
source: >-
  https://auth.solvewithvia.com/auth/realms/qt/.well-known/openid-configuration (HTTP 200)
  and https://auth.solvewithvia.com/auth/realms/ztf_demo/.well-known/openid-configuration
  (HTTP 200), fetched anonymously 2026-09-02; corroborated by the VIA ZTF integration guide
  at https://documentation.ztf.solvewithvia.com/integration/ and the tutorial sources at
  https://github.com/viascience/ztf-tutorial.
name: VIA (Via Science, Inc.) — authentication profile
docs: https://documentation.ztf.solvewithvia.com/integration/

summary: >-
  VIA does not publish an API-key surface. Every VIA product surface — the Quantum Transfer
  (QT) application, the ZTF demo, and any application a customer integrates with VIA Zero
  Trust Fabric — authenticates through a VIA-operated Keycloak identity server at
  auth.solvewithvia.com using OpenID Connect Authorization Code + PKCE. The discovery
  document is served anonymously per realm, so the full endpoint set, signing algorithms,
  grant types and client-authentication methods are machine-readable without credentials.
  ZTF layers decentralized identity on top: passwordless login backed by W3C Verifiable
  Credentials held in the VIA Wallet, with wallet-signature step-up for sensitive actions.

schemes:
  - name: openIdConnect
    type: openIdConnect
    in: header
    scheme: bearer
    format: JWT
    openIdConnectUrl: https://auth.solvewithvia.com/auth/realms/qt/.well-known/openid-configuration
    description: >-
      OpenID Connect on the VIA Keycloak realm `qt` (Quantum Transfer). Browser clients use
      Authorization Code with PKCE (S256); the resulting access token is presented as an
      HTTP Authorization: Bearer JWT.
    source: well-known/via-science-qt-openid-configuration.json

  - name: openIdConnect-ztf-demo
    type: openIdConnect
    in: header
    scheme: bearer
    format: JWT
    openIdConnectUrl: https://auth.solvewithvia.com/auth/realms/ztf_demo/.well-known/openid-configuration
    description: >-
      OpenID Connect on the VIA Keycloak realm `ztf_demo`, the realm backing the public ZTF
      demo at https://demo.ztf.solvewithvia.com/ and the published tutorials.
    source: well-known/via-science-ztf-demo-openid-configuration.json

  - name: mutualTLS
    type: mutualTLS
    description: >-
      The discovery document advertises `tls_client_auth` as a client-authentication method
      and `tls_client_certificate_bound_access_tokens: true` (RFC 8705 certificate-bound
      access tokens). Available, not required.
    source: well-known/via-science-qt-openid-configuration.json

  - name: wallet-signature-step-up
    type: signature
    in: body
    description: >-
      ZTF step-up authentication. Sensitive operations require an additional digital
      signature produced by the user's VIA Wallet over WalletConnect v2, verified
      server-side before the action is allowed. Documented in tutorial-2-step-up-auth and
      tutorial-2-owasp-prompt-injection, whose backend ships both a jwtAuth and a
      signatureAuth middleware.
    source: https://github.com/viascience/ztf-tutorial/tree/master/tutorial-2-step-up-auth
    note: >-
      This is VIA's stated defence against an AI agent acting on a user's behalf without
      explicit consent — the bearer token alone is not sufficient for a sensitive call.

endpoints:
  qt:
    issuer: https://auth.solvewithvia.com/auth/realms/qt
    authorization: https://auth.solvewithvia.com/auth/realms/qt/protocol/openid-connect/auth
    token: https://auth.solvewithvia.com/auth/realms/qt/protocol/openid-connect/token
    userinfo: https://auth.solvewithvia.com/auth/realms/qt/protocol/openid-connect/userinfo
    jwks: https://auth.solvewithvia.com/auth/realms/qt/protocol/openid-connect/certs
    end_session: https://auth.solvewithvia.com/auth/realms/qt/protocol/openid-connect/logout
    introspection: https://auth.solvewithvia.com/auth/realms/qt/protocol/openid-connect/token/introspect
    revocation: https://auth.solvewithvia.com/auth/realms/qt/protocol/openid-connect/revoke
    registration: https://auth.solvewithvia.com/auth/realms/qt/clients-registrations/openid-connect
    device_authorization: https://auth.solvewithvia.com/auth/realms/qt/protocol/openid-connect/auth/device
    pushed_authorization_request: https://auth.solvewithvia.com/auth/realms/qt/protocol/openid-connect/ext/par/request
    backchannel_authentication: https://auth.solvewithvia.com/auth/realms/qt/protocol/openid-connect/ext/ciba/auth
  ztf_demo:
    issuer: https://auth.solvewithvia.com/auth/realms/ztf_demo
    authorization: https://auth.solvewithvia.com/auth/realms/ztf_demo/protocol/openid-connect/auth
    token: https://auth.solvewithvia.com/auth/realms/ztf_demo/protocol/openid-connect/token
    userinfo: https://auth.solvewithvia.com/auth/realms/ztf_demo/protocol/openid-connect/userinfo
    jwks: https://auth.solvewithvia.com/auth/realms/ztf_demo/protocol/openid-connect/certs
    end_session: https://auth.solvewithvia.com/auth/realms/ztf_demo/protocol/openid-connect/logout
    uma2_resource_registration: https://auth.solvewithvia.com/auth/realms/ztf_demo/authz/protection/resource_set
    uma2_permission: https://auth.solvewithvia.com/auth/realms/ztf_demo/authz/protection/permission
    uma2_policy: https://auth.solvewithvia.com/auth/realms/ztf_demo/authz/protection/uma-policy

grant_types_supported:
  - authorization_code
  - client_credentials
  - implicit
  - password
  - refresh_token
  - urn:ietf:params:oauth:grant-type:device_code
  - urn:ietf:params:oauth:grant-type:jwt-bearer
  - urn:ietf:params:oauth:grant-type:token-exchange
  - urn:ietf:params:oauth:grant-type:uma-ticket
  - urn:openid:params:grant-type:ciba

client_authentication_methods:
  - private_key_jwt
  - client_secret_basic
  - client_secret_post
  - tls_client_auth
  - client_secret_jwt

token_format: JWT
id_token_signing_algs:
  - RS256
  - RS384
  - RS512
  - PS256
  - PS384
  - PS512
  - ES256
  - ES384
  - ES512
  - EdDSA
  - HS256
  - HS384
  - HS512

features:
  pkce: true
  pkce_methods: [plain, S256]
  dpop: true
  pushed_authorization_requests: true
  par_required: false
  dynamic_client_registration: true
  device_authorization_grant: true
  ciba: true
  token_exchange: true
  uma2: true
  mtls_bound_access_tokens: true
  front_channel_logout: true
  back_channel_logout: true
  request_object: true
  claims_parameter: true

claims_supported:
  [iss, sub, aud, exp, iat, auth_time, name, given_name, family_name,
   preferred_username, email, acr, azp, nonce]

acr_values_supported: ['0', '1']

api_keys:
  supported: false
  note: >-
    No API-key issuance is documented on any public VIA surface. Machine-to-machine access
    would use the OIDC `client_credentials` grant advertised by the realms above; client
    provisioning is not self-serve — it goes through the "Get a demo" form.

gaps:
  - >-
    No OpenAPI or other machine-readable REST contract is published for any VIA product,
    so the securitySchemes above are recorded from the OIDC discovery documents and the
    integration guide rather than derived from a spec.
  - >-
    No public self-serve signup: realm clients are provisioned by VIA. The auth surface is
    fully readable anonymously; the resource APIs behind it are not.

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/via-science-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 email required.

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