62 static const String kSUFFIX_ =
"/.well-known/openid-configuration"sv;
64 if (not configURI.
GetAbsPath<optional<String>> ().value_or (
String{}).EndsWith (kSUFFIX_)) {
65 configURI = configURI.
Combine (
URI{nullopt, nullopt, kSUFFIX_});
71 struct openid_configuration_ {
73 optional<URI> authorization_endpoint;
74 optional<URI> device_authorization_endpoint;
75 optional<URI> token_endpoint;
76 optional<URI> userinfo_endpoint;
77 optional<URI> revocation_endpoint;
79 optional<URI> jwks_uri;
84 mapper.
AddClass<openid_configuration_> ({
85 {
"issuer", &openid_configuration_::issuer},
86 {
"authorization_endpoint", &openid_configuration_::authorization_endpoint},
87 {
"device_authorization_endpoint", &openid_configuration_::device_authorization_endpoint},
88 {
"token_endpoint", &openid_configuration_::token_endpoint},
89 {
"userinfo_endpoint", &openid_configuration_::userinfo_endpoint},
90 {
"revocation_endpoint", &openid_configuration_::revocation_endpoint},
91 {
"jwks_uri", &openid_configuration_::jwks_uri},
95 if (cfgRead.authorization_endpoint) {
96 result.
auth_uri = *cfgRead.authorization_endpoint;
98 if (cfgRead.token_endpoint) {
99 result.
token_uri = *cfgRead.token_endpoint;
101 if (cfgRead.userinfo_endpoint) {
104 if (cfgRead.revocation_endpoint) {
107 if (cfgRead.jwks_uri) {
113 DbgTrace (
"Fetcher::FetchAdditionsFromOpenIDConfigurationURI: exception={}"_f, current_exception ());