Interface DuoOIDCClient
- All Superinterfaces:
DuoOIDCClientCapabilities
- All Known Implementing Classes:
AbstractDuoOIDCClient,DuoSDKClientAdaptor,NimbusClient
A client for handling Duo OIDC 2FA interactions. Clients are shared and required to be thread-safe.
-
Method Summary
Modifier and TypeMethodDescriptioncreateAuthUrl(String username, String state, String nonce, String redirectURIOverride) Constructs an authorization redirection URL string with the query parameters required to initiate a Duo 2FA request.com.nimbusds.jwt.JWTexchangeAuthorizationCodeFor2FAResult(String code, String username, String redirectURIOverride) Exchanges the authorizaton code for a signed Json Web Token (JWT) which contains information pertaining to the authentication.Returns the capabilities of the underlying client.Get an identifier for this client e.g.Check the health of the Duo 2FA endpoint and the clients configuration.Methods inherited from interface net.shibboleth.idp.plugin.authn.duo.DuoOIDCClientCapabilities
isSupportsNonce
-
Method Details
-
getCapabilities
Returns the capabilities of the underlying client.- Returns:
- interface to access the service's capabilities
-
healthCheck
Check the health of the Duo 2FA endpoint and the clients configuration.- Returns:
- the heath check response, never
null. - Throws:
DuoClientException- if there is an error returning the health check response.
-
createAuthUrl
@Nonnull @NotEmpty String createAuthUrl(@Nonnull @NotEmpty String username, @Nonnull @NotEmpty String state, @Nullable String nonce, @Nullable String redirectURIOverride) throws DuoClientException Constructs an authorization redirection URL string with the query parameters required to initiate a Duo 2FA request.- Parameters:
username- The user to be authenticated by Duo, nevernull.state- A randomly generated minimum 22 character String, which is relayed back to the client, nevernull.nonce- a randomly generated (minimum 22 character) cryptographically secure nonce that is replayed in the id_token. Can benullif not supported by the client as indicated by the clients described capabilities.redirectURIOverride- the redirectURI to use in the authorization request. If not null and the client supports dynamic redirect URIs, it should override any redirect_uri held internally to the client e.g. from theDuoOIDCIntegration. If the client does not support dynamic redirect URIs, it can be ignored in favour of one held internally.- Returns:
- the authorization redirect URL as a string, never
null. - Throws:
DuoClientException- if there is an error creating the authentication URL.
-
exchangeAuthorizationCodeFor2FAResult
@Nonnull com.nimbusds.jwt.JWT exchangeAuthorizationCodeFor2FAResult(@Nonnull String code, @Nonnull String username, @Nullable String redirectURIOverride) throws DuoClientException Exchanges the authorizaton code for a signed Json Web Token (JWT) which contains information pertaining to the authentication. There is no requirement on the client to verify the tokens authenticity or claims - these should be performed elsewhere in the flow. The JWT **must** be signed.- Parameters:
code- An authentication identifier which is exchanged (per OAuth2.0 spec) with Duo for a token. the token can be used to determine if authentication was successful as well as obtain meta-data about the authentication, nevernull. *username- The user to be authenticated by Duo, nevernull.redirectURIOverride- the redirectURI to use in the code exchange request. If not null and the client supports dynamic redirect URIs, it should override any redirect_uri held internally to the client e.g. from theDuoOIDCIntegration. If the client does not support dynamic redirect URIs, it can be ignored in favour of one held internally.- Returns:
- the **signed** JWT, never
null. - Throws:
DuoClientException- if there is an error exchanging the auth_code for a token result.
-
getClientId
Get an identifier for this client e.g. a UUID. Only for logging and debugging.- Returns:
- the client identifier.
-