|
|
|
@@ -9,16 +9,17 @@ using namespace std; |
9 | #include <kingate/cgi_gateway.h> |
9 | #include <kingate/cgi_gateway.h> |
10 | #include <opkele/exception.h> |
10 | #include <opkele/exception.h> |
11 | #include <opkele/util.h> |
11 | #include <opkele/util.h> |
12 | #include <opkele/uris.h> |
12 | #include <opkele/uris.h> |
13 | #include <opkele/extension.h> |
13 | #include <opkele/extension.h> |
14 | #include <opkele/association.h> |
14 | #include <opkele/association.h> |
15 | #include <opkele/debug.h> |
15 | #include <opkele/debug.h> |
16 | #include <opkele/verify_op.h> |
16 | #include <opkele/verify_op.h> |
| |
17 | #include <opkele/sreg.h> |
17 | |
18 | |
18 | #include "sqlite.h" |
19 | #include "sqlite.h" |
19 | #include "kingate_openid_message.h" |
20 | #include "kingate_openid_message.h" |
20 | |
21 | |
21 | static const string get_self_url(const kingate::cgi_gateway& gw) { |
22 | static const string get_self_url(const kingate::cgi_gateway& gw) { |
22 | bool s = gw.has_meta("SSL_PROTOCOL_VERSION"); |
23 | bool s = gw.has_meta("SSL_PROTOCOL_VERSION"); |
23 | string rv = s?"https://":"http://"; |
24 | string rv = s?"https://":"http://"; |
24 | rv += gw.http_request_header("Host"); |
25 | rv += gw.http_request_header("Host"); |
@@ -264,28 +265,33 @@ int main(int argc,char *argv[]) { |
264 | cout << |
265 | cout << |
265 | "</XRD>" |
266 | "</XRD>" |
266 | "</xrds:XRDS>"; |
267 | "</xrds:XRDS>"; |
267 | }else if(op=="id_res" || op=="cancel") { |
268 | }else if(op=="id_res" || op=="cancel") { |
268 | kingate_openid_message_t inm(gw); |
269 | kingate_openid_message_t inm(gw); |
269 | example_op_t OP(gw); |
270 | example_op_t OP(gw); |
270 | if(gw.get_param("hts_id")!=OP.htc.get_value()) |
271 | if(gw.get_param("hts_id")!=OP.htc.get_value()) |
271 | throw opkele::exception(OPKELE_CP_ "toying around, huh?"); |
272 | throw opkele::exception(OPKELE_CP_ "toying around, huh?"); |
272 | OP.checkid_(inm,0); |
273 | opkele::sreg_t sreg; |
| |
274 | OP.checkid_(inm,sreg); |
273 | OP.cookie_header(cout); |
275 | OP.cookie_header(cout); |
274 | opkele::openid_message_t om; |
276 | opkele::openid_message_t om; |
275 | if(op=="id_res") { |
277 | if(op=="id_res") { |
276 | if(!OP.get_authorized()) |
278 | if(!OP.get_authorized()) |
277 | throw opkele::exception(OPKELE_CP_ "not logged in"); |
279 | throw opkele::exception(OPKELE_CP_ "not logged in"); |
278 | if(OP.is_id_select()) { |
280 | if(OP.is_id_select()) { |
279 | OP.select_identity( get_self_url(gw), get_self_url(gw) ); |
281 | OP.select_identity( get_self_url(gw), get_self_url(gw) ); |
280 | } |
282 | } |
| |
283 | sreg.set_field(opkele::sreg_t::field_nickname,"anonymous"); |
| |
284 | sreg.set_field(opkele::sreg_t::field_fullname,"Ann O'Nymus"); |
| |
285 | sreg.set_field(opkele::sreg_t::field_gender,"F"); |
| |
286 | sreg.setup_response(); |
281 | cout << |
287 | cout << |
282 | "Status: 302 Going back to RP with id_res\n" |
288 | "Status: 302 Going back to RP with id_res\n" |
283 | "Location: " << OP.id_res(om).append_query(OP.get_return_to()) |
289 | "Location: " << OP.id_res(om,sreg).append_query(OP.get_return_to()) |
284 | << "\n\n"; |
290 | << "\n\n"; |
285 | }else{ |
291 | }else{ |
286 | cout << |
292 | cout << |
287 | "Status: 302 Going back to RP with cancel\n" |
293 | "Status: 302 Going back to RP with cancel\n" |
288 | "Location: " << OP.cancel(om).append_query(OP.get_return_to()) |
294 | "Location: " << OP.cancel(om).append_query(OP.get_return_to()) |
289 | << "\n\n"; |
295 | << "\n\n"; |
290 | } |
296 | } |
291 | om.to_keyvalues(clog); |
297 | om.to_keyvalues(clog); |
|