Dun & Bradstreet · Authentication Profile

Dun And Bradstreet Authentication

Authentication

Dun & Bradstreet runs three distinct authentication models across three surfaces, and they do not share credentials. The Direct+ REST API uses an OAuth 2.0 client_credentials exchange that returns a bearer JWT. The Commercial Graph / Direct+ MCP server uses a single Dplus-API-Key header. The Risk Analytics MCP server runs a full OAuth 2.0 authorization server with PKCE, refresh tokens and scopes. This file supersedes the earlier derived version, which saw only the two http securitySchemes in the spec.

Dun & Bradstreet secures its APIs with http, oauth2, and apiKey across 4 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the clientCredentials and authorizationCode flow(s).

Business DataCompany DataD-U-N-S NumberCreditRiskMaster DataData EnrichmentIdentity ResolutionComplianceSupply ChainSales IntelligenceMonitoring
Methods: http, oauth2, apiKey Schemes: 4 OAuth flows: clientCredentials, authorizationCode API key in: header

Security Schemes

bearerAuth http
scheme: bearer · in: header (Authorization)
basicAuth http
scheme: basic · in: header (Authorization)
Dplus-API-Key apiKey
· in: header (Dplus-API-Key)
riskAnalyticsOAuth oauth2
· flows: authorizationCode, clientCredentials

Source

Authentication Profile

Raw ↑
generated: '2026-08-13'
method: searched
source: >-
  openapi/_original/dnb-direct-plus-openapi-original.yml +
  https://agents.riskanalytics.dnb.com/.well-known/oauth-authorization-server +
  https://learn.microsoft.com/en-us/connectors/dunandbradstreetmcps/ +
  live probes of https://plus.dnb.com
docs: https://directplus.documentation.dnb.com/html/guides/Authentication.html
docs_status: 302 (redirects to https://directplus.documentation.dnb.com/oauth2/authorization/okta)
description: >-
  Dun & Bradstreet runs three distinct authentication models across three
  surfaces, and they do not share credentials. The Direct+ REST API uses an
  OAuth 2.0 client_credentials exchange that returns a bearer JWT. The
  Commercial Graph / Direct+ MCP server uses a single Dplus-API-Key header.
  The Risk Analytics MCP server runs a full OAuth 2.0 authorization server
  with PKCE, refresh tokens and scopes. This file supersedes the earlier
  derived version, which saw only the two http securitySchemes in the spec.

summary:
  types: [http, oauth2, apiKey]
  api_key_in: [header]
  oauth2_flows: [clientCredentials, authorizationCode]
  http_schemes: [basic, bearer]
  surfaces: 3

schemes:
  - name: bearerAuth
    type: http
    scheme: bearer
    bearerFormat: JWT
    surface: D&B Direct+ REST API
    host: https://plus.dnb.com
    in: header
    parameter: Authorization
    sources:
      - openapi/_original/dnb-direct-plus-openapi-original.yml
    applies_to: every Direct+ operation except generateAccessToken
    obtained_by: POST /v3/token
    note: >-
      An anonymous call to a real operation returns HTTP 401 with errorCode
      "00004" — "You are not currently authorised to access this product.
      Please contact your D&B account representative". The same 401 covers
      both a missing token and a valid token without contract entitlement,
      so an agent cannot distinguish auth failure from entitlement failure
      from the status code alone.

  - name: basicAuth
    type: http
    scheme: basic
    surface: D&B Direct+ token exchange
    host: https://plus.dnb.com
    in: header
    parameter: Authorization
    sources:
      - openapi/_original/dnb-direct-plus-openapi-original.yml
    applies_to: [generateAccessToken]
    credentials: consumer key as username, consumer secret as password
    note: >-
      Used only on POST /v3/token, whose body is
      {"grant_type":"client_credentials"}. This is an OAuth 2.0
      client_credentials grant modelled as an ordinary operation rather than
      declared as an oauth2 securityScheme, which is why a spec-only reader
      sees "http basic" instead of OAuth.

  - name: Dplus-API-Key
    type: apiKey
    in: header
    parameter: Dplus-API-Key
    surface: D&B MCP Server (Commercial Graph / Direct+)
    sources:
      - https://learn.microsoft.com/en-us/connectors/dunandbradstreetmcps/
    note: >-
      Documented verbatim by the certified Microsoft Power Platform connector
      as the single required securestring connection parameter. "Dplus" is
      D&B's shorthand for Direct+.

  - name: riskAnalyticsOAuth
    type: oauth2
    surface: D&B Risk Analytics remote MCP server
    host: https://agents.riskanalytics.dnb.com
    sources:
      - https://agents.riskanalytics.dnb.com/.well-known/oauth-authorization-server
    issuer: https://agents.riskanalytics.dnb.com
    flows:
      - flow: authorizationCode
        authorizationUrl: https://agents.riskanalytics.dnb.com/authorize
        tokenUrl: https://agents.riskanalytics.dnb.com/token
        scopes: [mcp.read, mcp.write, offline_access, openid, email, profile]
      - flow: clientCredentials
        tokenUrl: https://agents.riskanalytics.dnb.com/token
        scopes: [mcp.read, mcp.write]
    pkce: [S256, plain]
    token_endpoint_auth_methods: [client_secret_basic, client_secret_post]
    refresh_tokens: true
    discovery:
      - {path: /.well-known/oauth-authorization-server, status: 200, spec: RFC 8414}
      - {path: /.well-known/oauth-protected-resource, status: 200, spec: RFC 9728}
      - {path: /.well-known/oauth-protected-resource/mcp, status: 200, spec: RFC 9728}
      - {path: /.well-known/openid-configuration, status: 404}
    challenge: >-
      An unauthenticated POST to /mcp returns 401 with
      WWW-Authenticate: Bearer error="invalid_token",
      error_description="Authentication required.",
      resource_metadata="https://agents.riskanalytics.dnb.com/.well-known/oauth-protected-resource/mcp"
    detail: scopes/dun-and-bradstreet-scopes.yml

token_lifecycle:
  direct_plus:
    endpoint: POST https://plus.dnb.com/v3/token
    grant: client_credentials
    response_fields: [access_token, token_type, expirationDateTime]
    expiry_field: expirationDateTime
    refresh: re-run the client_credentials exchange (no refresh token)
    revocation_endpoint: null
    introspection_endpoint: null
  risk_analytics_mcp:
    refresh: refresh_token grant supported (offline_access scope)
    revocation_endpoint: null
    introspection_endpoint: null

onboarding:
  self_serve: true
  registration: https://directplus.documentation.dnb.com/registration/register
  login: https://directplus.documentation.dnb.com/home
  note: >-
    Registration is self-serve but the documentation portal behind it, and
    every credential-provisioning page, sits behind Okta sign-in. API access
    itself is contract-gated — see plans/dun-and-bradstreet-plans-pricing.yml.

mtls: false
openid_connect: false
openid_connect_note: >-
  openid/email/profile appear in the MCP authorization server's
  scopes_supported, but no OIDC discovery document is served, so D&B is not an
  OIDC provider by the discovery test.

absences:
  - The Direct+ authentication guide is behind the Okta gate.
  - No token revocation or introspection endpoint on any surface.
  - No scope model on the Direct+ REST API — entitlement is contractual.
  - No mutual TLS option documented.

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/dun-and-bradstreet-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.