1#ifndef TENDUKE_OIDC_AUTODISCOVERY_H
2#define TENDUKE_OIDC_AUTODISCOVERY_H
4#include "../OIDCConfiguration.h"
6#include "http/HTTPClient.h"
7#include "json/JSONParser.h"
9#include "jwk/JWKSParser.h"
10#include "oauth/OAuthBackendConfiguration.h"
26 friend class AutoDiscovery;
36 std::shared_ptr<const tenduke::oauth::OAuthBackendConfiguration> oauthConfiguration,
37 std::shared_ptr<const tenduke::oidc::OIDCConfiguration> oidcConfiguration,
38 std::string jwksDocument
39 ) : oauthConfiguration(std::move(oauthConfiguration)), oidcConfiguration(std::move(oidcConfiguration)), jwksDocument(std::move(jwksDocument))
46 std::shared_ptr<const tenduke::oauth::OAuthBackendConfiguration>
getOAuthConfiguration()
const {
return oauthConfiguration;}
55 std::shared_ptr<const tenduke::oidc::OIDCConfiguration>
getOOIDCConfiguration()
const {
return oidcConfiguration;}
58 const std::shared_ptr<const tenduke::oauth::OAuthBackendConfiguration> oauthConfiguration;
59 const std::shared_ptr<const tenduke::oidc::OIDCConfiguration> oidcConfiguration;
60 const std::string jwksDocument;
75 std::shared_ptr<const tenduke::http::HTTPClient> httpClient,
76 std::shared_ptr<const tenduke::json::JSONParser> jsonParser,
77 std::shared_ptr<const tenduke::jwk::JWKSParser> jwksParser
99 virtual AutoDiscoveryResult
discover(
const std::string &url)
const;
125 virtual std::shared_ptr<const tenduke::oidc::OIDCConfiguration>
toOIDCConfiguration(
const AutoDiscoveryResult &result)
const;
136 virtual std::unique_ptr<tenduke::jwk::JWKS>
getVerificationKeys (
const AutoDiscoveryResult &result)
const;
152 const std::shared_ptr<const tenduke::http::HTTPClient> http;
153 const std::shared_ptr<const tenduke::json::JSONParser> parseJson;
154 const std::shared_ptr<const tenduke::jwk::JWKSParser> parseJWKS;
AutoDiscovery(std::shared_ptr< const tenduke::http::HTTPClient > httpClient, std::shared_ptr< const tenduke::json::JSONParser > jsonParser, std::shared_ptr< const tenduke::jwk::JWKSParser > jwksParser)
Constructs new instance.
Definition AutoDiscovery.cpp:26
std::shared_ptr< const tenduke::oauth::OAuthBackendConfiguration > getOAuthConfiguration() const
Returns discovered OAuth-configuration.
Definition AutoDiscovery.h:46
AutoDiscoveryResult(std::shared_ptr< const tenduke::oauth::OAuthBackendConfiguration > oauthConfiguration, std::shared_ptr< const tenduke::oidc::OIDCConfiguration > oidcConfiguration, std::string jwksDocument)
Constructs new instance.
Definition AutoDiscovery.h:35
std::shared_ptr< const tenduke::oidc::OIDCConfiguration > getOOIDCConfiguration() const
Returns the discovered OIDC-configuration WITHOUT the signing key.
Definition AutoDiscovery.h:55
virtual AutoDiscoveryResult discover(const std::string &url) const
Performs OIDC configuration auto discovery.
Definition AutoDiscovery.cpp:62
virtual std::shared_ptr< const tenduke::oidc::OIDCConfiguration > toOIDCConfiguration(const AutoDiscoveryResult &result) const
Returns the discovered OIDC-configuration, with default verification key.
Definition AutoDiscovery.cpp:138
virtual std::string downloadJWKSDocument(const std::string &jwks_uri) const
Makes HTTP-call to given URL, and downloads the JWKS-document.
Definition AutoDiscovery.cpp:111
AutoDiscovery(std::shared_ptr< const tenduke::http::HTTPClient > httpClient, std::shared_ptr< const tenduke::json::JSONParser > jsonParser, std::shared_ptr< const tenduke::jwk::JWKSParser > jwksParser)
Constructs new instance.
Definition AutoDiscovery.cpp:26
virtual std::unique_ptr< const tenduke::jwk::JWK > getDefaultVerificationKey(const AutoDiscoveryResult &result) const
Returns the default verification key from tenduke::oauth::oidc::AutoDiscoveryResult.
Definition AutoDiscovery.cpp:157
virtual std::unique_ptr< tenduke::jwk::JWKS > getVerificationKeys(const AutoDiscoveryResult &result) const
Returns the verification keys from tenduke::oauth::oidc::AutoDiscoveryResult.
Definition AutoDiscovery.cpp:152
Implementation of OpenID Connect protocol.
Definition AutoDiscovery.h:15
Root for classes, functions and globals of 10Duke C++ Client.
Definition APIRequest.h:4