go-oidfed

The go-oidfed library is an implementation of OpenID Federation in the go language with the goal to enable go applications to make use of OpenID federation.

3
contributors
311 commitsLast commit ≈ 1 week ago11 stars8 forks

Cite this software

Description

Implementation of OpenID Federations for Golang

License GitHub go.mod Go version Go Report DeepSource DeepSource

This repository holds a work-in-process implementation of OpenID Federation in the go language with the goal to enable go applications to make use of OpenID federation.

The implementation mainly focuses on the Relying Party and Intermediate / Trust Anchor side, but not on the OP side. However, building blocks can also be utilized for OPs or other entity types. We provide a basic library as well as a configurable and flexible federation entity to support higher level functionality.

  • This repository contains:
    • The basic go-oidfed library with the core oidfed functionalities.
    • It can be used to build all kind of oidfed capable entities.
  • The LightHouse repository at https://github.com/go-oidfed/lighthouse contains:
    • Higher level implementation for various federation endpoints
    • The LightHouse federation entity. This is a configurable and flexible federation entity that can be used as a
      • Trust Anchor
      • Intermediate Authority
      • Trust Mark Issuer
      • Resolver
      • Entity Collector
      • Everything at the same time.
  • The whoami-rp repository at https://github.com/go-oidfed/whoami-rp contains:
    • A simple - but not very useful - example RP.
  • The OFFA repository at https://github.com/go-oidfed/offa:
    • OFFA stands for Openid Federation Forward Auth
    • OFFA can be deployed next to existing services to add oidfed authentication to services that do not natively support it.
    • OFFA can be used with Apache, Caddy, NGINX, and Traefik.

Implementation State

The library is not considered stable and some features might be missing. We encourage everybody to give feedback on things that are missing, not working, or weird, also suggestions for improvements and of course we are open for pull requests.

We try to be up-to-date with the latest version of the spec, but this might not always be the case.

Here we try to sum up the current implementation state, (but it's very likely that the list is not complete)

FeatureLibraryEntity
OpenID ConfigurationYesYes
Trust Chain BuildingYesWhen needed
Trust Chain VerificationYesYes
Applying Metadata PoliciesYesYes
Applying Metadata from SuperiorsNoNo
Support for Custom Metadata Policy OperatorsYesYes
Filter Trust ChainsYesYes
Configure Trust AnchorsYesYes
Set Authority HintsN/AYes
Resolve EndpointYes
IA Fetch EndpointYes
IA Listing EndpointYes
Trust Mark EndpointYes
Trust Marked Entities EndpointYes
Trust Mark Status EndpointYes
Trust Mark Owner DelegationYesYes
Trust Mark JWT VerificationYesYes
Trust Mark JWT Verification including DelegationYesYes
Trust Mark Verification through Trust Mark Status EndpointNoNo
JWT Type VerificationYesYes
Requests using GETYes
Requests using POSTNo
Client AuthenticationNo
Automatic Client RegistrationYesYes
Authorization Code Flow with Automatic Client Registration using oidc key from jwksYes
Authorization Code Flow with Automatic Client Registration using oidc key from jwks_uriNo
Authorization Code Flow with Automatic Client Registration using oidc key from signed_jwks_uriNo
Explicit Client RegistrationNoNo
ConstraintsYesYes
Federation Historical Keys EndpointNoNo
Automatic Key RolloverNo
Enrollment of EntitiesYes
Configurable Checks for EnrollmentYes
Custom Checks for EnrollmentYes
Request EnrollmentYes
Configurable Checks for Trust Mark IssuanceYes
Custom Checks for Trust Mark IssuanceYes
Request to become entitled for a Trust MarkYes
Automatically refresh trust marks in Entity ConfigurationYes

This work was started in and supported by the Geant Trust & Identity Incubator.

Logo of go-oidfed
Keywords
Programming language
  • Go 100%
License
</>Source code

Participating organisations

Karlsruhe Institute of Technology (KIT)
GÉANT

Contributors

GZ
Gabriel Zachmann
@KIT-SCC
NvD
Niels van Dijk
@SURF
TG
Tim Geoghegan
Internet Security Research Group

Related software

LightHouse

LI

LightHouse helps to navigate the wild and complex sea of OpenID Federation. LightHouse is a flexible and configurable OpenID Federation Entity, and can be used as a Trust Anchor / Intermediate Authority / Resolver / Trust Mark Issuer or everything at the same time.

Updated 3 months ago
3

OFFA

OF

OFFA offers easy to use OpenID Federation Authentication and Authorisation for existing services. OFFA can be deployed along existing services and handle all OpenID Federation communication for your services.

Updated 3 months ago