1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
use HashMap;
use ;
use Value;
/// # Client Metadata
/// Options of a configured client instance
// use serde::{Deserialize, Serialize};
// use std::collections::HashMap;
// #[derive(Debug, Serialize, Deserialize)]
// pub struct ClientRegistration {
// pub redirect_uris: Vec<String>,
// /// OPTIONAL. List of OAuth 2.0 response_type values
// #[serde(skip_serializing_if = "Option::is_none")]
// pub response_types: Option<Vec<String>>,
// /// OPTIONAL. List of OAuth 2.0 Grant Types
// #[serde(skip_serializing_if = "Option::is_none")]
// pub grant_types: Option<Vec<String>>,
// /// OPTIONAL. Application type (web | native)
// #[serde(default = "default_application_type")]
// pub application_type: String,
// /// OPTIONAL. Contact emails
// #[serde(skip_serializing_if = "Option::is_none")]
// pub contacts: Option<Vec<String>>,
// /// OPTIONAL. Client name (can support multilingual versions via map)
// #[serde(skip_serializing_if = "Option::is_none")]
// pub client_name: Option<String>,
// /// OPTIONAL. Logo URI
// #[serde(skip_serializing_if = "Option::is_none")]
// pub logo_uri: Option<String>,
// /// OPTIONAL. Client home page
// #[serde(skip_serializing_if = "Option::is_none")]
// pub client_uri: Option<String>,
// /// OPTIONAL. Policy page URI
// #[serde(skip_serializing_if = "Option::is_none")]
// pub policy_uri: Option<String>,
// /// OPTIONAL. Terms of Service URI
// #[serde(skip_serializing_if = "Option::is_none")]
// pub tos_uri: Option<String>,
// /// OPTIONAL. JWKS URI
// #[serde(skip_serializing_if = "Option::is_none")]
// pub jwks_uri: Option<String>,
// /// OPTIONAL. JWK Set (inline)
// #[serde(skip_serializing_if = "Option::is_none")]
// pub jwks: Option<serde_json::Value>,
// /// OPTIONAL. Sector Identifier URI
// #[serde(skip_serializing_if = "Option::is_none")]
// pub sector_identifier_uri: Option<String>,
// /// OPTIONAL. subject_type (pairwise | public)
// #[serde(skip_serializing_if = "Option::is_none")]
// pub subject_type: Option<String>,
// /// OPTIONAL. ID Token signing algorithm
// #[serde(skip_serializing_if = "Option::is_none")]
// pub id_token_signed_response_alg: Option<String>,
// /// OPTIONAL. ID Token encryption alg
// #[serde(skip_serializing_if = "Option::is_none")]
// pub id_token_encrypted_response_alg: Option<String>,
// /// OPTIONAL. ID Token encryption enc
// #[serde(skip_serializing_if = "Option::is_none")]
// pub id_token_encrypted_response_enc: Option<String>,
// /// OPTIONAL. UserInfo signing algorithm
// #[serde(skip_serializing_if = "Option::is_none")]
// pub userinfo_signed_response_alg: Option<String>,
// /// OPTIONAL. UserInfo encryption alg
// #[serde(skip_serializing_if = "Option::is_none")]
// pub userinfo_encrypted_response_alg: Option<String>,
// /// OPTIONAL. UserInfo encryption enc
// #[serde(skip_serializing_if = "Option::is_none")]
// pub userinfo_encrypted_response_enc: Option<String>,
// /// OPTIONAL. Request Object signing alg
// #[serde(skip_serializing_if = "Option::is_none")]
// pub request_object_signing_alg: Option<String>,
// /// OPTIONAL. Request Object encryption alg
// #[serde(skip_serializing_if = "Option::is_none")]
// pub request_object_encryption_alg: Option<String>,
// /// OPTIONAL. Request Object encryption enc
// #[serde(skip_serializing_if = "Option::is_none")]
// pub request_object_encryption_enc: Option<String>,
// /// OPTIONAL. Token endpoint authentication method
// #[serde(skip_serializing_if = "Option::is_none")]
// pub token_endpoint_auth_method: Option<String>,
// /// OPTIONAL. Token endpoint signing algorithm
// #[serde(skip_serializing_if = "Option::is_none")]
// pub token_endpoint_auth_signing_alg: Option<String>,
// /// OPTIONAL. Default max authentication age (in seconds)
// #[serde(skip_serializing_if = "Option::is_none")]
// pub default_max_age: Option<u64>,
// /// OPTIONAL. Require auth_time claim in ID Token
// #[serde(default)]
// pub require_auth_time: bool,
// /// OPTIONAL. Default ACR values
// #[serde(skip_serializing_if = "Option::is_none")]
// pub default_acr_values: Option<Vec<String>>,
// /// OPTIONAL. Initiate login URI
// #[serde(skip_serializing_if = "Option::is_none")]
// pub initiate_login_uri: Option<String>,
// /// OPTIONAL. Request URIs
// #[serde(skip_serializing_if = "Option::is_none")]
// pub request_uris: Option<Vec<String>>,
// #[serde(flatten, skip_serializing_if = "HashMap::is_empty")]
// pub other_fields: HashMap<String, Value>,
// }
// /// Default for application_type
// fn default_application_type() -> String {
// "web".to_string()
// }