Mercurial > prosody-modules
comparison mod_http_oauth2/mod_http_oauth2.lua @ 5598:b496ebc12aed
mod_http_oauth2: Add titles and descriptions to registration schema
Since it is exposed publicly, it can serve as documentation.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 14 Jul 2023 16:04:11 +0200 |
| parents | 7040d0772758 |
| children | 17aa3bac7f3a |
comparison
equal
deleted
inserted
replaced
| 5597:5ade45d93908 | 5598:b496ebc12aed |
|---|---|
| 1056 end | 1056 end |
| 1057 return 200; | 1057 return 200; |
| 1058 end | 1058 end |
| 1059 | 1059 |
| 1060 local registration_schema = { | 1060 local registration_schema = { |
| 1061 title = "OAuth 2.0 Dynamic Client Registration Protocol"; | |
| 1061 type = "object"; | 1062 type = "object"; |
| 1062 required = { | 1063 required = { |
| 1063 -- These are shown to users in the template | 1064 -- These are shown to users in the template |
| 1064 "client_name"; | 1065 "client_name"; |
| 1065 "client_uri"; | 1066 "client_uri"; |
| 1066 -- We need at least one redirect URI for things to work | 1067 -- We need at least one redirect URI for things to work |
| 1067 "redirect_uris"; | 1068 "redirect_uris"; |
| 1068 }; | 1069 }; |
| 1069 properties = { | 1070 properties = { |
| 1070 redirect_uris = { type = "array"; minItems = 1; uniqueItems = true; items = { type = "string"; format = "uri" } }; | 1071 redirect_uris = { |
| 1072 title = "List of Redirect URIs"; | |
| 1073 type = "array"; | |
| 1074 minItems = 1; | |
| 1075 uniqueItems = true; | |
| 1076 items = { title = "Redirect URI"; type = "string"; format = "uri" }; | |
| 1077 }; | |
| 1071 token_endpoint_auth_method = { | 1078 token_endpoint_auth_method = { |
| 1079 title = "Token Endpoint Authentication Method"; | |
| 1072 type = "string"; | 1080 type = "string"; |
| 1073 enum = { "none"; "client_secret_post"; "client_secret_basic" }; | 1081 enum = { "none"; "client_secret_post"; "client_secret_basic" }; |
| 1074 default = "client_secret_basic"; | 1082 default = "client_secret_basic"; |
| 1075 }; | 1083 }; |
| 1076 grant_types = { | 1084 grant_types = { |
| 1085 title = "Grant Types"; | |
| 1077 type = "array"; | 1086 type = "array"; |
| 1078 minItems = 1; | 1087 minItems = 1; |
| 1079 uniqueItems = true; | 1088 uniqueItems = true; |
| 1080 items = { | 1089 items = { |
| 1081 type = "string"; | 1090 type = "string"; |
| 1090 device_uri; | 1099 device_uri; |
| 1091 }; | 1100 }; |
| 1092 }; | 1101 }; |
| 1093 default = { "authorization_code" }; | 1102 default = { "authorization_code" }; |
| 1094 }; | 1103 }; |
| 1095 application_type = { type = "string"; enum = { "native"; "web" }; default = "web" }; | 1104 application_type = { |
| 1105 title = "Application Type"; | |
| 1106 description = "Determines which kinds of redirect URIs the client may register. \z | |
| 1107 The value 'web' limits the client to https:// URLs with the same hostname as in 'client_uri' \z | |
| 1108 while the value 'native' allows either loopback http:// URLs or application specific URIs."; | |
| 1109 type = "string"; | |
| 1110 enum = { "native"; "web" }; | |
| 1111 default = "web"; | |
| 1112 }; | |
| 1096 response_types = { | 1113 response_types = { |
| 1114 title = "Response Types"; | |
| 1097 type = "array"; | 1115 type = "array"; |
| 1098 minItems = 1; | 1116 minItems = 1; |
| 1099 uniqueItems = true; | 1117 uniqueItems = true; |
| 1100 items = { type = "string"; enum = { "code"; "token" } }; | 1118 items = { type = "string"; enum = { "code"; "token" } }; |
| 1101 default = { "code" }; | 1119 default = { "code" }; |
| 1102 }; | 1120 }; |
| 1103 client_name = { type = "string" }; | 1121 client_name = { |
| 1104 client_uri = { type = "string"; format = "uri"; pattern = "^https:" }; | 1122 title = "Client Name"; |
| 1105 logo_uri = { type = "string"; format = "uri"; pattern = "^https:" }; | 1123 description = "Human-readable name of the client, presented to the user in the consent dialog."; |
| 1106 scope = { type = "string" }; | 1124 type = "string"; |
| 1107 contacts = { type = "array"; minItems = 1; items = { type = "string"; format = "email" } }; | 1125 }; |
| 1108 tos_uri = { type = "string"; format = "uri"; pattern = "^https:" }; | 1126 client_uri = { |
| 1109 policy_uri = { type = "string"; format = "uri"; pattern = "^https:" }; | 1127 title = "Client URL"; |
| 1110 software_id = { type = "string"; format = "uuid" }; | 1128 description = "Should be an link to a page with information about the client."; |
| 1111 software_version = { type = "string" }; | 1129 type = "string"; |
| 1130 format = "uri"; | |
| 1131 pattern = "^https:"; | |
| 1132 }; | |
| 1133 logo_uri = { | |
| 1134 title = "Logo URL"; | |
| 1135 description = "URL to the clients logotype (not currently used)."; | |
| 1136 type = "string"; | |
| 1137 format = "uri"; | |
| 1138 pattern = "^https:"; | |
| 1139 }; | |
| 1140 scope = { | |
| 1141 title = "Scopes"; | |
| 1142 description = "Space-separated list of scopes the client promises to restrict itself to."; | |
| 1143 type = "string"; | |
| 1144 }; | |
| 1145 contacts = { | |
| 1146 title = "Contact Addresses"; | |
| 1147 description = "Addresses, typically email or URLs where the client developers can be contacted."; | |
| 1148 type = "array"; | |
| 1149 minItems = 1; | |
| 1150 items = { type = "string"; format = "email" }; | |
| 1151 }; | |
| 1152 tos_uri = { | |
| 1153 title = "Terms of Service URL"; | |
| 1154 description = "Link to Terms of Service for the client, presented to the user in the consent dialog. \z | |
| 1155 MUST be a https:// URL with hostname matching that of 'client_uri'."; | |
| 1156 type = "string"; | |
| 1157 format = "uri"; | |
| 1158 pattern = "^https:"; | |
| 1159 }; | |
| 1160 policy_uri = { | |
| 1161 title = "Privacy Policy URL"; | |
| 1162 description = "Link to a Privacy Policy for the client. MUST be a https:// URL with hostname matching that of 'client_uri'."; | |
| 1163 type = "string"; | |
| 1164 format = "uri"; | |
| 1165 pattern = "^https:"; | |
| 1166 }; | |
| 1167 software_id = { | |
| 1168 title = "Software ID"; | |
| 1169 description = "Unique identifier for the client software, common for all instances. Typically an UUID."; | |
| 1170 type = "string"; | |
| 1171 format = "uuid"; | |
| 1172 }; | |
| 1173 software_version = { | |
| 1174 title = "Software Version"; | |
| 1175 description = "Version of the software creating being registered. \z | |
| 1176 E.g. to allow revoking all related tokens in the event of a security incident."; | |
| 1177 type = "string"; | |
| 1178 example = "2.3.1"; | |
| 1179 }; | |
| 1112 }; | 1180 }; |
| 1113 } | 1181 } |
| 1114 | 1182 |
| 1115 -- Limit per-locale fields to allowed locales, partly to keep size of client_id | 1183 -- Limit per-locale fields to allowed locales, partly to keep size of client_id |
| 1116 -- down, partly because we don't yet use them for anything. | 1184 -- down, partly because we don't yet use them for anything. |
