OP Discovery
Under the op_discovery section you configure how OFFA discovers and presents OpenID Providers (OPs) on the login page.
OP discovery can be powered by a local, periodically refreshed list based on your configured trust anchors, by an external thiss.js Discovery Service, or by both at the same time.
local¶
object optional
Controls the built‑in OP discovery that builds a local list of OPs from your federation trust anchors and renders a searchable selector on the login page.
config.yaml
op_discovery:
local:
enabled: true
use_entity_collection_endpoint: true
entity_collection_interval: 10m
enabled¶
boolean
true
optional
Enables the built‑in local OP discovery and the OP selector on the login page.
The local discovery is enabled by default and can be disabled by setting
this option to false (in which case one should enable another discovery method).
use_entity_collection_endpoint¶
boolean
false
optional
If enabled, OFFA queries the trust anchor’s Entity Collection endpoint to discover OpenID Providers. If disabled or no entity collection endpoint can be found, OFFA discovers OPs directly without relying on the collection endpoint. It is generally more performant to rely on an external endpoint, therefore we recommend enabling this option.
entity_collection_interval¶
duration
5m
optional
How often OFFA refreshes the local list of OPs. A value of at least 1 minute is recommended.
The entity_collection_interval option defines in which interval OFFA
refreshes the local list of OPs, either by
querying the Entity Collection Endpoint or doing the entity collection on its
own.
thiss.js¶
object optional
Integrates a thiss.js Discovery Service widget on the login page.
config.yaml
op_discovery:
thiss.js:
enabled: true
url: https://ds.example.org
enabled¶
boolean
false
optional
Enables rendering of the thiss.js discovery component on the login page.
url¶
uri
required when enabled
Base URL of the thiss.js deployment.
external¶
object optional
Renders one or more buttons on the login page that link to external OP discovery services. Each enabled service becomes an anchor-button; clicking it sends the user to the service so it can identify OFFA and know where to return the user.
config.yaml
op_discovery:
external:
enabled: true
services:
- url: https://ds.example.org/discovery
include_entity_id: true
button:
text: Discover via Example DS
html_class: btn
custom_css: ""
enabled¶
boolean
false
optional
Enables rendering of the external OP discovery buttons on the login page.
services¶
list
required when enabled
A list of external discovery services to render as buttons.
The button links to url and appends a target_link_uri query parameter
(always) carrying OFFA's target link URI, and an entity_id query parameter
(only when include_entity_id is enabled).
url¶
uri
required when enabled
Base URL of the external discovery service. The button links to this URL.
include_entity_id¶
boolean
false
optional
When enabled, OFFA appends an entity_id query parameter carrying its entity
identifier so the discovery service can identify the relying party.
button¶
object required
Controls how the button is rendered.
text¶
string
required when enabled
The button label.
html_class¶
string optional
Extra CSS class(es) appended to the button element, in addition to the standard
btn class.
custom_css¶
string optional
CSS inlined directly onto the button element via its style attribute.
Using both methods¶
You can enable both local and thiss.js. The login page will show the local OP selector and, in addition, the thiss.js widget as an alternative discovery path.