Skip to content

[Go] Support GNAP (RFC 9635) authentication #7955

Description

Summary

RFC 9635 (GNAP) is used by the Open Payments API (openpayments.dev) for
authorization. The Interledger Foundation's SDK Grant program is funding
GNAP support across the OpenAPI/Kiota toolchain:

  • GNAP as an OpenAPI securityScheme (Henry Andrews, OpenAPI Initiative — in progress)
  • A TypeScript Kiota implementation (Chris Wood, OpenAPI Initiative — funded)
  • GNAP support for Go, Python, and PHP targets — open for proposals
    (interledger/Grants wiki: SDK-grant-program)

Client library/SDK language

None

Describe the solution you'd like

I'd like to scope a Go implementation and would appreciate maintainer input
before drafting a PR.

Proposed approach

  • Implement a GNAP AccessTokenProvider in kiota-abstractions-go, matching
    the existing authentication provider interface used by other providers
  • Support grant request + continuation (interactive and non-interactive)
  • Support request signing per RFC 9421 (HTTP Message Signatures), required by GNAP
  • Validate end-to-end against Open Payments' public test auth server
    (auth.interledger-test.dev)

Questions for maintainers

  1. Should this live in kiota-abstractions-go, or elsewhere in the generator pipeline?
  2. Is there design material for the TypeScript GNAP implementation to align with?
  3. Open to reviewing a draft PR built against a working prototype?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status
    Done ✔️

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions