FSN#37678 SSO/ JWT aanscherpingen

svn path=/Website/trunk/; revision=30715
This commit is contained in:
Jos Groot Lipman
2016-09-14 20:16:51 +00:00
parent ebc801bb21
commit 2e79925b91
2 changed files with 21 additions and 19 deletions

View File

@@ -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);

View File

@@ -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