Troubleshooting

Symptoms and fixes, the complete provider settings reference, and the differences in Keycloak 24 and 25.

Symptoms and fixes

SymptomCauseFix
Ver.iD shows an error before the wallet stepThe broker callback is not registered on the Studio flow, or the flow is inactiveCompare the provider's Redirect URI with the flow's redirect URIs. Scheme, host, port, deployment path, realm and alias must match exactly.
Keycloak reports invalid client credentials after the wallet stepThe secret's key identifier was entered instead of its value, or a masked value was copied from the Admin APIEnter the secret's Key (as base64url) value directly in the Admin Console.
Keycloak logs a signature validation errorSignature validation points at the wrong keysKeep Validate signatures and Use JWKS URL on with the discovered JWKS URI. Compare the token's kid with the published keys.
Keycloak logs Could not fetch attributes from userinfo endpointDisable user info is offSet Disable user info = On under the provider's advanced OpenID Connect settings.
Login succeeds but the verid_* attributes are emptyThe scope is not requested, the mapper claim path is wrong, or the attribute is not definedCheck the provider's Scopes, the mappers' Claim values against Scopes and claims, and the user profile attributes.
Login is denied right after the wallet stepThe post-login flow found a missing or unverified attributeInspect the user's attributes, the conditions' Negate output, and that Allow access is a top-level Required execution.
The wallet step is skipped and the user is signed in immediatelyAn existing Keycloak sessionTest in a new private window. A session login proves nothing about the wallet.
A second user is created for the same wallet identityThe first login flow override is not bound, or email verification is still enabled in itCheck First login flow override on the provider and Verify existing account by Email = Disabled in verid-first-login.
Keycloak asks for name or email on the first loginThe wallet did not supply them and the realm requires themExpected: Review Profile collects them. Alternatively request the profile scope or relax the realm's required fields.
Saving a mapper leaves you on its edit pageKeycloak 26 behaviourReturn to Mappers and click Add mapper for the next one.
Login succeeds but the application's token has no wallet_* claimsThe client scope is not assigned to that client, or the mapper's Add to ID token is offCheck the client's Client scopes tab and the mapper's token flags, then verify with the client's Evaluate tab.

For a managed or brokered Keycloak installation, ask its administrator for the login event under Events → User events and the matching server log line.

Provider settings reference

SectionSettingValue
Add providerProvider typeOpenID Connect v1.0
Add providerUse discovery endpointOn, https://ssi.oauth.ver.id/.well-known/openid-configuration
General settingsAliasverid
General settingsDisplay nameLog in with Digital Identity Wallet
OpenID Connect settingsAuthorization, token, user info, JWKS URLAs imported from discovery
OpenID Connect settingsClient authenticationClient secret sent in the request body
OpenID Connect settingsClient IDThe Studio flow's client identifier
OpenID Connect settingsClient SecretThe secret's Key (as base64url) value
OpenID Connect settingsValidate signaturesOn
OpenID Connect settingsUse JWKS URLOn
OpenID Connect settings → AdvancedUse PKCEOn, S256
OpenID Connect settings → AdvancedScopesopenid plus the requested scopes
OpenID Connect settings → AdvancedDisable user infoOn
OpenID Connect settings → AdvancedDisable nonceOff
OpenID Connect settings → AdvancedAccess Token is JWTOff
Advanced settingsStore tokensOff
Advanced settingsTrust EmailOff
Advanced settingsHide on login pageOff
Advanced settingsAccount linking onlyOff
Advanced settingsFirst login flow overrideverid-first-login
Advanced settingsPost login flowverid-require-verified-contact when used
Advanced settingsSync modeForce

Keycloak 24 and 25 differences

The settings are identical in Keycloak 24.0.1, 25.0.6 and 26.8.1. Only these labels, screens and two behaviours differ.

ActionKeycloak 26Keycloak 24 and 25
Create a realmManage realms → Create realmRealm selector in the upper left → Create realm
Add the providerIdentity providers → OpenID Connect v1.0, or Add provider when providers existIdentity providers → Add provider → OpenID Connect v1.0
Client authentication labelClient secret sent in the request bodyClient secret sent as post
Add a step to a flowAdd executionAdd step
After saving a mapperStays on the mapper's edit pageDoes not stay on the edit page
Allow Nullable Property on a mapperPresent; leave it offMay be absent; leave it off where shown
Default first broker login flowContains Conditional 2FA and Conditional Organization branchesContains a Conditional OTP branch; keep its requirements as shown below

The first broker login flow in Keycloak 24 and 25, after disabling email verification:

verid-first-login
├── Review Profile                                            Required
└── User creation or linking                                  Required
    ├── Create User If Unique                                 Alternative
    └── Handle Existing Account                               Alternative
        ├── Confirm link existing account                     Required
        └── Account verification options                      Required
            ├── Verify existing account by Email              Disabled
            └── Verify Existing Account by Re-authentication   Alternative
                ├── Username Password Form for identity
                │   provider reauthentication                 Required
                └── First broker login - Conditional OTP      Conditional
                    ├── Condition - user configured           Required
                    └── OTP Form                              Required

Keycloak 24 and 25 only accept signing keys whose JWK carries use. Ver.iD publishes it, so no fixed public key is needed on any version.

Getting help

Contact support with:

  • Your Keycloak version, the realm name and the provider alias.
  • The time of the failed login, the Keycloak login event and the matching server log line.
  • The name of the Studio authentication flow.

Never include client secrets or tokens. For Keycloak's own configuration reference, see the Keycloak server administration guide.

On this page