FSN#37678 SSO/ JWT aanscherpingen
svn path=/Website/trunk/; revision=30715
This commit is contained in:
@@ -34,6 +34,24 @@ function doLogin(prs_key, params)
|
||||
var first_login = (oRs("prs_perslid_login").Value == null);
|
||||
oRs.Close();
|
||||
|
||||
if ("isFACFACinternal" in params) // vanuit JWT-sso
|
||||
{
|
||||
var deze = new Perslid(prs_key);
|
||||
// SSO naar een FACFAC gebruiker mag alleen als fac_idp_internal aan staat
|
||||
if (deze.has("WEB_FACFAC") && !params.isFACFACinternal)
|
||||
{
|
||||
__DoLog("Illegal login WEB_FACFAC");
|
||||
shared.internal_error("This IDP cannot be used for users with WEB_FACFAC (prs_key={0}).".format(prs_key));
|
||||
}
|
||||
// Als fac_idp_internal aan staat mag alleen je alleen SSO doen naar een FACFAC gebruiker
|
||||
// Tenzij S("idp_internal_anyuser") true is, dan mag je toch naar iedereen
|
||||
// Dat doen we op OTA via custenc.wsc, dat doen we niet in PROD
|
||||
if (params.isFACFACinternal && !S("idp_internal_anyuser") && !deze.has("WEB_FACFAC"))
|
||||
{
|
||||
shared.internal_error("This IDP can only be used for users with WEB_FACFAC (prs_key={0}).".format(prs_key));
|
||||
}
|
||||
}
|
||||
|
||||
// Alvast nieuwe user_key loggen zodat je ziet wie er inlogt.
|
||||
if (typeof NO_ADDHEADER == "undefined" && user_key != prs_key && Request.Servervariables("HTTP_FCLT_VERSION").Count > 0)
|
||||
{ // wordt opgepikt door FCLTAPI.DLL voor in de logging en daarna gestript. Niet in Fiddler te zien dus
|
||||
@@ -128,9 +146,9 @@ function doLogin(prs_key, params)
|
||||
}
|
||||
|
||||
var fac_lang = getQParamSafe("fac_lang", "").toUpperCase(); // overrule via param
|
||||
// Liever geen session maar m_connections heeft dit al nodig voor zijn fac.initsession
|
||||
// Bovendien voorkomen we zo dat een simpele user.lang() al een _require_prs_perslid triggert
|
||||
Session("user_lang") = fac_lang || user.dblang();
|
||||
// Liever geen session maar m_connections heeft dit al nodig voor zijn fac.initsession
|
||||
// Bovendien voorkomen we zo dat een simpele user.lang al een _require_prs_perslid triggert
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -535,7 +553,7 @@ function tryLogin(username, wachtwoord, params)
|
||||
var otpcounter = oRs("prs_perslid_otpcounter").Value || -1;
|
||||
|
||||
var found = false;
|
||||
if (wachtwoord == null) // SSO
|
||||
if (/* nog niet vanuit SAML/default.asp params.noPassword && */ wachtwoord == null) // SSO
|
||||
found = true; // En zijn we verder wel klaar
|
||||
else
|
||||
found = testpassword(oRs("prs_perslid_key").Value, wachtwoord, params.mobile);
|
||||
|
||||
@@ -158,22 +158,6 @@ if (user_key < 0 && jwt)
|
||||
|
||||
if (user_key > 0)
|
||||
{
|
||||
// SSO naar een FACFAC gebruiker mag alleen als fac_idp_internal aan staat
|
||||
if (user.has("WEB_FACFAC") && !isFACFACinternal)
|
||||
{
|
||||
__DoLog("Illegal login WEB_FACFAC");
|
||||
doLogoff();
|
||||
shared.internal_error("This IDP cannot be used for users with WEB_FACFAC.");
|
||||
}
|
||||
// Als fac_idp_internal aan staat mag alleen SSO naar een FACFAC gebruiker
|
||||
// Tenzij S("idp_internal_anyuser") true is, dan mag je naar iedereen
|
||||
// Dat doen we op OTA via custenc.wsc, dat doen we niet in PROD
|
||||
if (isFACFACinternal && !S("idp_internal_anyuser") && !user.has("WEB_FACFAC"))
|
||||
{
|
||||
doLogoff();
|
||||
shared.internal_error("This IDP can only be used for users with WEB_FACFAC.");
|
||||
}
|
||||
|
||||
if (!oRs("fac_idp_duration").Value) // single use tokens wil ik niet weer zien
|
||||
{ // ook al zijn ze alleen geldig van -clockskew tot +clockskew
|
||||
// Ongeldige lukken de volgende keer ook niet. Geldige wil ik niet weer zien
|
||||
|
||||
Reference in New Issue
Block a user