KNF:Single Sign On query: verschil tussen versies
Regel 67: | Regel 67: | ||
if (xhr.readyState === 4) { |
if (xhr.readyState === 4) { |
||
if (xhr.status === 200 && JSON.parse(xhr.responseText)['result'] === 'true') { |
if (xhr.status === 200 && JSON.parse(xhr.responseText)['result'] === 'true') { |
||
− | <!-- de gebruiker heeft reeds een lopende SSO sessie via Entree Federatie en kan direct worden ingelogd |
+ | <!-- de gebruiker heeft reeds een lopende SSO sessie via Entree Federatie en kan direct worden ingelogd --> |
window.location.href = ''; <!-- redirect naar de pagina waar uw applicatie het authenticatieverzoek naar Entree Federatie verstuurd --> |
window.location.href = ''; <!-- redirect naar de pagina waar uw applicatie het authenticatieverzoek naar Entree Federatie verstuurd --> |
||
} else { |
} else { |
||
Regel 97: | Regel 97: | ||
</syntaxhighlight> --> |
</syntaxhighlight> --> |
||
+ | <!-- |
||
====SSO query result==== |
====SSO query result==== |
||
<syntaxhighlight lang="php"> |
<syntaxhighlight lang="php"> |
||
Regel 114: | Regel 115: | ||
</html> |
</html> |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
+ | --> |
||
− | |||
[[Categorie:Entree Federatie]] |
[[Categorie:Entree Federatie]] |
Versie van 20 apr 2020 08:11
Nederlands | English |
Met ingang van 1 juli 2019 maakt Entree Federatie gebruik van een nieuw Endpoint voor de SSO query. Per 1 september 2020 zal het oude endpoint uitgezet worden. |
Inleiding
De SSOquery heeft als voornaamste functie het verklikken van de inlogstatus. Een veelgebruikte naam is dan ook wel de inlogstatusverklikker.
Deze functie biedt de mogelijkheid om te controleren of een gebruiker direct ingelogd kan worden zonder het inlogscherm te tonen. Ook toegang geven tot, of het zichtbaar maken van bepaalde content behoort tot een van de gebruikte usecases.
Met deze functie kan de gebruikerservaring verbeterd worden door bijvoorbeeld:
- Een 'Inlogknop' niet te tonen en direct de authenticatie te starten met een ingelogde gebruiker als gevolg
- Zichtbaar maken dat de gebruiker nog niet ingelogd is, maar dit wel moet doen om bepaalde content te zien
Let op:
Om misbruik van deze functionaliteit te voorkomen dient het domein opgenomen te worden in de whitelist van Entree Federatie.
Neem daarom contact op met Kennisnet als je gebruik wilt maken van SSO query.
Werking
Zodra de vraag aan de Entree Federatie gesteld wordt, kunnen er drie antwoorden worden geven op de SSOQuery:
- false
- De gebruiker heeft geen SSO sessie en is voor zover bekend bij de Entree Federatie nergens ingelogd. Het is dus onbekend of de gebruiker wel of niet kan inloggen via Entree Federatie.
- true
- De gebruiker heeft een SSO sessie en kan hoogstwaarschijnlijk inloggen zonder gebruikersinteractie
- remote
- De gebruiker heeft geen SSO sessie, maar er is wel een SSO notificatie cookie gevonden. De gebruiker is al ingelogd in zijn eigen systeem(ELO) en kan hoogstwaarschijnlijk inloggen zonder gebruikersinteractie
Implementatie
De query bestaat uit een simpele HTTP GET met slechts een parameter: response_url (deze parameter moet in de URL worden URL encoded/UTF-8).
De volgende urls kunnen worden gebruikt:
Staging environment: |
https://ssoquery.aselect-s.entree.kennisnet.nl/openaselect/sso/ssoquery?response_url=<URL> |
Live environment: |
https://ssoquery.aselect.entree.kennisnet.nl/openaselect/sso/ssoquery?response_url=<URL> |
Voorbeeld
- De dienst stelt de vraag
- https://ssoquery.aselect.entree.kennisnet.nl/openaselect/sso/ssoquery?response_url=https%3A%2F%2Ftestapplicatie.kennisnet.nl
- Entree Federatie redirect naar
- https://testapplicatie.kennisnet.nl?result=true
Voorbeeld implementatie
SSO query
<html>
<script>
var queryUrl = 'https://ssoquery.aselect-s.entree.kennisnet.nl/openaselect/sso/ssoquery';
var responseUrl = 'https://domeinnaam/ssoresult.php';
function isLoggedIn() {
var xhr = new XMLHttpRequest();
xhr.open("GET", ssoQuery, true);
xhr.withCredentials = true;
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200 && JSON.parse(xhr.responseText)['result'] === 'true') {
<!-- de gebruiker heeft reeds een lopende SSO sessie via Entree Federatie en kan direct worden ingelogd -->
window.location.href = ''; <!-- redirect naar de pagina waar uw applicatie het authenticatieverzoek naar Entree Federatie verstuurd -->
} else {
<!-- de gebruiker heeft nog geen lopende SSO sessie via Entree Federatie en gebruikersinteractie is vereist -->
window.location.href = ''; <!-- redirect de gebruiker naar de inlogpagina van uw applicatie -->
}
}
};
xhr.ontimeout = function () {
<!-- redirect de gebruiker in geval van een timeout van de SSO query service naar de inlogpagina van uw applicatie
window.location.href = ''; <!-- redirect de gebruiker naar de inlogpagina van uw applicatie -->
};
xhr.send();
}
isLoggedIn();
</script>
</html>