68 static const String kSUFFIX_ =
"/.well-known/openid-configuration"sv;
70 if (not configURI.
GetAbsPath<optional<String>> ().value_or (
String{}).EndsWith (kSUFFIX_)) {
71 configURI = configURI.
Combine (
URI{nullopt, nullopt, kSUFFIX_});
77 struct openid_configuration_ {
79 optional<URI> authorization_endpoint;
80 optional<URI> device_authorization_endpoint;
81 optional<URI> token_endpoint;
82 optional<URI> userinfo_endpoint;
83 optional<URI> revocation_endpoint;
85 optional<URI> jwks_uri;
90 mapper.
AddClass<openid_configuration_> ({
91 {
"issuer", &openid_configuration_::issuer},
92 {
"authorization_endpoint", &openid_configuration_::authorization_endpoint},
93 {
"device_authorization_endpoint", &openid_configuration_::device_authorization_endpoint},
94 {
"token_endpoint", &openid_configuration_::token_endpoint},
95 {
"userinfo_endpoint", &openid_configuration_::userinfo_endpoint},
96 {
"revocation_endpoint", &openid_configuration_::revocation_endpoint},
97 {
"jwks_uri", &openid_configuration_::jwks_uri},
101 if (cfgRead.authorization_endpoint) {
102 result.
auth_uri = *cfgRead.authorization_endpoint;
104 if (cfgRead.token_endpoint) {
105 result.
token_uri = *cfgRead.token_endpoint;
107 if (cfgRead.userinfo_endpoint) {
110 if (cfgRead.revocation_endpoint) {
113 if (cfgRead.jwks_uri) {
119 DbgTrace (
"Fetcher::FetchAdditionsFromOpenIDConfigurationURI: exception={}"_f, current_exception ());