diff --git a/store.html b/store.html
index 0294243..795c999 100644
--- a/store.html
+++ b/store.html
@@ -15,24 +15,16 @@
var C_IS_PASSIVE = "isPassive";
var C_IDP_ENTITY_ID = "IdPentityID";
var COOKIE_TIMEOUT_DAYS = 730; // 2 years
+ var check_requestor_ws = "./check.json";
+ var check_requestor_ws_timeout = 3000;
+ var ok = true;
- var qs = $.parseQuerystring();
- var entity_id = qs[C_ENTITY_ID];
- var return_url = qs[C_RETURN];
- var return_id_param = C_ENTITY_ID;
- if (C_RETURNIDPARAM in qs) {
- return_id_param = qs[C_RETURNIDPARAM];
- }
- var idp_entity_id = undefined;
-
- if (C_IDP_ENTITY_ID in qs) {
- idp_entity_id = qs[C_IDP_ENTITY_ID];
- debug_alert('set idp to ' + idp_entity_id);
- } else {
- idp_entity_id = $.cookie(C_IDP_ENTITY_ID);
- }
- function response() {
+ function response(idp_entity_id) {
debug_alert('query by ' + entity_id);
+ if (! return_url) {
+ alert("no return url");
+ return;
+ }
if (idp_entity_id) {
$.cookie(C_IDP_ENTITY_ID, idp_entity_id, { expires: COOKIE_TIMEOUT_DAYS });
if (return_url.indexOf('?') == -1) {
@@ -45,7 +37,44 @@
debug_alert('returning to ' + return_url);
window.location.href = return_url;
}
- response();
+
+ var qs = $.parseQuerystring();
+ var entity_id = qs[C_ENTITY_ID];
+ var return_url = qs[C_RETURN];
+ var return_id_param = C_ENTITY_ID;
+ if (C_RETURNIDPARAM in qs) {
+ return_id_param = qs[C_RETURNIDPARAM];
+ }
+ var idp_entity_id = undefined;
+
+ if (check_requestor_ws) {
+ ok = false;
+ $.ajax({
+ url: check_requestor_ws,
+ dataType: 'json',
+ async: false,
+ timeout: check_requestor_ws_timeout,
+ data: { 'return': return_url, 'referrer': document.referrer },
+ success: function (data) {
+ if (data.result == 'ok') {
+ ok = true;
+ }
+ },
+ error: function (jqXHR, status) {
+ debug_alert("check_requestor_ws failed with status:" + status);
+ }
+ });
+ }
+ if (!ok) {
+ response();
+ } else {
+ if (C_IDP_ENTITY_ID in qs) {
+ debug_alert('set idp to ' + qs[C_IDP_ENTITY_ID]);
+ response(qs[C_IDP_ENTITY_ID]);
+ } else {
+ response($.cookie(C_IDP_ENTITY_ID));
+ }
+ }