FSN#24078 Authenticatie flow.

svn path=/Website/trunk/; revision=12239
This commit is contained in:
Jos Groot Lipman
2012-08-28 12:38:31 +00:00
parent 880b8a324e
commit 22f570575b
8 changed files with 99 additions and 90 deletions

View File

@@ -45,30 +45,7 @@
options: eval("("+oRs("fac_api_options_json").Value+")"), options: eval("("+oRs("fac_api_options_json").Value+")"),
viewmapping: eval("("+oRs("fac_api_viewmapping_json").Value+")") viewmapping: eval("("+oRs("fac_api_viewmapping_json").Value+")")
} }
oRs.Close(); oRs.Close();
// We doen niets met eventuele prs_perslid_key; dat doet loginTry.asp maar voor ons
var user_key = -1;
var no_session = false;
if (this.apidata.prs_perslid_key)
{
// indien geconfigureerd wordt de os_login uit de api configuratie gebruikt om de user_key te bepalen.
var user_key = this.apidata.prs_perslid_key;
}
else if (this.apidata.os_login_fallback && user_key == -1) // os_login_fallback is 7-2012 nooit gebruikt?
{
// indien geen vaste user gebruikt wordt en er is geen user via de sessie achterhaald, dan gaan we
// het via de fallback login proberen.
var username = this.apidata.os_login_fallback;
}
if (this.apidata.no_session && this.apidata.no_session == true)
{
// de instelling no_session zorgt ervoor dat alleen de user_key gezet wordt en dat er geen andere
// informatie zoals sessie informatie gezet wordt.
no_session = true
}
if (user_key > 0)
doLogin(user_key, no_session);
else // Te problematisch
settings.overrule_setting("multi_language_option", 0); // werkt gewoon slecht met API's
} }
%> %>

View File

@@ -13,7 +13,6 @@
DOCTYPE_Disable = 1; DOCTYPE_Disable = 1;
FCLTEXPIRES = 8*60; // geen database interactie tenslotte FCLTEXPIRES = 8*60; // geen database interactie tenslotte
ANONYMOUS_Allowed = 1;
THIS_FILE = "appl/api/phonebook_js.asp"; THIS_FILE = "appl/api/phonebook_js.asp";
%> %>
<!-- #include file="../Shared/common.inc"--> <!-- #include file="../Shared/common.inc"-->

View File

@@ -19,8 +19,7 @@ FCLTHeader.Requires({ plugins:["jQuery"] })
var api_key = getQParamInt("api_key", -1); var api_key = getQParamInt("api_key", -1);
//user.auth_required_or_abort(user.oslogin() == "_FACILITOR"); user.auth_required_or_abort(user.oslogin() == "_FACILITOR");
user.auth_required_or_abort(user.oslogin() != "_FACILITOR");
var api_name; var api_name;
var api_omschrijving; var api_omschrijving;
@@ -131,7 +130,7 @@ else
RWFIELDTR("fac_api_apikey", "fld required", L("lcl_fac_api_apikey") , api_apikey, {maxlength: 32}); RWFIELDTR("fac_api_apikey", "fld required", L("lcl_fac_api_apikey") , api_apikey, {maxlength: 32});
RWCHECKBOXTR("fac_api_no_session", "fldcheck", L("lcl_fac_api_no_session") , api_no_session, {required: true}); RWCHECKBOXTR("fac_api_no_session", "fldcheck", L("lcl_fac_api_no_session") , api_no_session, {required: true});
RWFIELDTR("fac_api_filepath", "fld required", L("lcl_fac_api_filepath") , api_filepath, {maxlength: 64}); RWFIELDTR("fac_api_filepath", "fld required", L("lcl_fac_api_filepath") , api_filepath, {maxlength: 64});
RWFIELDTR("fac_perslid_key", "fld", L("lcl_person")+" key" , perslid_key); RWFIELDTR("prs_perslid_key", "fld", L("lcl_person")+" key" , perslid_key);
RWFIELDTR("fac_api_loglevel", "fld", L("lcl_fac_api_loglevel") , api_loglevel); RWFIELDTR("fac_api_loglevel", "fld", L("lcl_fac_api_loglevel") , api_loglevel);
FCLTrapportselector("fac_usrrap_key" FCLTrapportselector("fac_usrrap_key"
,"sgRapport" ,"sgRapport"

View File

@@ -24,8 +24,7 @@ var JSON_Result = true;
<% <%
var api_key = getQParamInt("api_key", -1 ); var api_key = getQParamInt("api_key", -1 );
//user.auth_required_or_abort(user.oslogin() == "_FACILITOR"); user.auth_required_or_abort(user.oslogin() == "_FACILITOR");
user.auth_required_or_abort(user.oslogin() != "_FACILITOR");
var viewoptions = getFParam("fac_api_options_json", ""); var viewoptions = getFParam("fac_api_options_json", "");
if (viewoptions) if (viewoptions)

View File

@@ -14,6 +14,7 @@
LCL_Disable ==> Geen lcl's cachen LCL_Disable ==> Geen lcl's cachen
ANONYMOUS_Allowed ==> Voorkom redirect naar login.asp als niet ingelogd ANONYMOUS_Allowed ==> Voorkom redirect naar login.asp als niet ingelogd
FCLTEXPIRES ==> Zet expire tijd van pagina (anders -1) FCLTEXPIRES ==> Zet expire tijd van pagina (anders -1)
LOGIN_try ==> Alleen vanuti LoginTry.asp==>geen redirect naar LoginTry.asp
Context: vanuit ELK asp bestand Context: vanuit ELK asp bestand
Note: Dus gebruik met mate Note: Dus gebruik met mate
@@ -154,14 +155,16 @@ if (typeof Session("ASPFIXATION") != "undefined")
// Zijn we bekend? Zo niet dan naar login.asp om dat uit te zoeken // Zijn we bekend? Zo niet dan naar login.asp om dat uit te zoeken
var user_key = Session("user_key") || -1; var user_key = Session("user_key") || -1;
if (Request.QueryString("API").Count>0 && Request.QueryString("APIKEY").Count>0) if (user_key < 0 && typeof LOGIN_try == "undefined")
{ {
ANONYMOUS_Allowed = true; Server.Execute(rooturl + "/appl/shared/loginTry.asp"); // Laat die het eens proberen op te lossen
if (Session("user_key") > 0)
user_key = Session("user_key");
} }
if (user_key < 0 && typeof ANONYMOUS_Allowed == "undefined") if (user_key < 0 && typeof ANONYMOUS_Allowed == "undefined")
{ {
if (JSON_Result) if (JSON_Result) // Login scherm werkt toch niet
{ {
Response.Clear(); Response.Clear();
// JSON.stringfy hebben we (nog!) niet gegarandeerd dus maar poor-man stringify // JSON.stringfy hebben we (nog!) niet gegarandeerd dus maar poor-man stringify

View File

@@ -3,8 +3,8 @@
$Revision$ $Revision$
$Id$ $Id$
We weten niet wie de gebruiker is. We weten echt niet wie de gebruiker is.
Probeer op allerlei manieren SSO en als het echt niet lukt toon een inlogscherm Toon maar een inlogscherm
Uiteindelijk: redirect terug naar de 'aanroepende' pagina die is meegegeven. Uiteindelijk: redirect terug naar de 'aanroepende' pagina die is meegegeven.
*/ */
@@ -18,59 +18,7 @@ ANONYMOUS_Allowed = 1;
var ret_page = getQParam("ret_page", rooturl + "/"); var ret_page = getQParam("ret_page", rooturl + "/");
var querystring = getQParam("querystring", ""); var querystring = getQParam("querystring", "");
if (typeof Session("sso_sgf") == "string") // Vanuit SGF12-portal/ sso_sgf.asp // Echt niet automatisch gelukt. loginscherm
{
var sso_sgf = String(Session("sso_sgf")).replace(/^\s+|\s+$/g,""); // wel trimmen
Session.Contents.Remove("ASPFIXATION"); // Niet moeilijk doen
tryLogin(sso_sgf,null);
if (user_key < 0 && !isNaN(parseInt(sso_sgf, 10)))
doLogin(parseInt(sso_sgf, 10)); // je mag ook key meegeven
Session.Contents.Remove("sso_sgf");
}
if (user_key < 0)
SimpleSSO(); // de base64 simple sso
if (user_key < 0 && S("os_logon"))
IntegratedSSO(); // Voor licentieklanten
if (user_key < 0)
{
// Deeplink met &login= in de titel, deprecated?
var params = querystring.split("&"); // dit moet uit de oorspronkelijke querystring komen
for (var i in params)
{
var xx = params[i].split("=");
if (xx[0].toLowerCase() == "login" && xx.length > 1)
{
tryLogin('_' + xx[1])
}
if (xx[0].toLowerCase() == "session" && xx.length > 1) // Ingscande QR-code
{
setUserFromSession(xx[1]);
if (user_key > 0)
makeSessionCookie(""); // Altijd 'definief' cookie plaatsen
}
}
}
if (user_key < 0) // Probeer de user_key uit een cookie te halen
{
var FcltId = "" + Request.Cookies("fcltid");
if (FcltId != null && FcltId != "")
{
setUserFromSession (FcltId);
if (user_key > 0)
makeSessionCookie("Remember Login"); // Atijd nieuwe
}
}
if (user_key > 0)
{ // gelukt, terug naar aanroeper
Response.Redirect(ret_page + (querystring?"?" + querystring:""));
}
// Echt niet automatisch gelukt. Allelaatste fallback: loginscherm
FCLTHeader.Requires({plugins: ["jQuery"], js:["jQuery-ui.js"]}); FCLTHeader.Requires({plugins: ["jQuery"], js:["jQuery-ui.js"]});
%> %>
<html> <html>

84
APPL/Shared/loginTry.asp Normal file
View File

@@ -0,0 +1,84 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
We weten niet wie de gebruiker is.
Probeer op allerlei manieren SSO
Als het lukt geven we een user_key terug in Session("user_key");
Als het niet lukt zal doorgaans door common.inc verder gegaan worden in de interactieve Logon.asp
LET OP: Dit bestand wordt via Server.Transfer vanuit Common.inc aangeroepen
*/
DOCTYPE_Disable = 1;
LCL_Disable = 1;
ANONYMOUS_Allowed = 1;
LOGIN_try = 1; // prevent recursion
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/login.inc" -->
<!-- #include file="../api/api.inc" -->
<%
var querystring = getQParam("querystring", "");
if (typeof Session("sso_sgf") == "string") // Vanuit SGF12-portal/ sso_sgf.asp
{
Session.Contents.Remove("ASPFIXATION"); // Niet moeilijk doen
tryLogin(String(Session("sso_sgf")),null);
if (user_key < 0)
doLogin(parseInt(String(Session("sso_sgf")), 10)); // je mag ook key meegeven
Session.Contents.Remove("sso_sgf");
}
if (user_key < 0)
SimpleSSO(); // de base64 simple sso
if (user_key < 0 && S("os_logon"))
IntegratedSSO(); // Voor licentieklanten
if (user_key < 0) // Probeer de user_key uit een cookie te halen
{
var FcltId = "" + Request.Cookies("fcltid");
if (FcltId != null && FcltId != "")
{
setUserFromSession (FcltId);
if (user_key > 0)
makeSessionCookie("Remember Login"); // Atijd nieuwe
}
}
if (user_key < 0)
{
// Deeplink met &login= in de titel, deprecated?
if (Request.QueryString("login").Count > 0)
{
tryLogin('_' + Request.QueryString("login"))
}
}
if (user_key < 0)
{
if (getQParam("session", "")) // Ingscande QR-code
{
setUserFromSession(getQParam("session"));
if (user_key > 0)
makeSessionCookie(""); // Altijd 'definief' cookie plaatsen
}
}
var APIname = getQParam("API", "");
var APIKEY = getQParam("APIKEY", "");
if (user_key < 0 && APIname && APIKEY)
{
var API = new API_func(APIname, APIKEY); // controleert vanzelf
if (API.apidata.prs_perslid_key)
user_key = API.apidata.prs_perslid_key;
}
if (user_key > 0)
{ // gelukt, teruggeven aan aanroeper
Session("user_key") = user_key;
}
%>

View File

@@ -125,7 +125,7 @@ ph_persliddetails_page = 'appl/fac/fac_user_info_phone.asp';
+ safe.quoted_sql(api.apikey) + "," + safe.quoted_sql(api.apikey) + ","
+ safe.quoted_sql(api.file) + "," + safe.quoted_sql(api.file) + ","
+ (api.no_session?"NULL":1) + "," + (api.no_session?"NULL":1) + ","
+ " (SELECT prs_perslid_key FROM prs_perslid WHERE prs_perslid_oslogin = " + safe.quoted_sql(api.oslogin) + ")," + " (SELECT prs_perslid_key FROM prs_perslid WHERE prs_perslid_oslogin = " + safe.quoted_sql(api.os_login) + "),"
+ (api.loglevel||"NULL") + "," + (api.loglevel||"NULL") + ","
+ (api.usrrap_key||"NULL") + "," + (api.usrrap_key||"NULL") + ","
+ safe.quoted_sql(JSON.stringify(api.viewmapping)) + "," + safe.quoted_sql(JSON.stringify(api.viewmapping)) + ","