KNF:SSO notificatie middels JavaScript

Uit Kennisnet Developers Documentatie
Ga naar: navigatie, zoeken

Entree Federatie-symbol.png Entree Federatie: SSO notificatie middels JavaScript

Het SSO notificatie cookie kan geplaatst worden door, nadat de gebruiker is ingelogd in de ELO of schoolportaal, een AJAX call naar Entree Federatie uit te voeren.

        <p><a href="javascript:setCookie();">Set cookie</a></p>
        <p><a href="https://selfservice-t.entree.kennisnet.nl/accountbeheer" target="_blank">Accountbeheer openen</a></p>
        <div id="ssonot"></div>
        
        <script type="text/javascript" charset="utf-8">
            var eloid = 'https://referentie-t.entree.kennisnet.nl/idp';             // EntityId
            var elourl = 'https://referentie-t.entree.kennisnet.nl/referentie';     // ELO URL

            function createCookie(name, value) {
                document.cookie = name + "=" + value + "; path=/";
            }

            function readCookie(name) {
                var nameEQ = name + "=";
                var ca = document.cookie.split(';');
                console.log(ca);
                
                for (var i=0;i < ca.length;i++) {
                    var c = ca[i];
                    while (c.charAt(0) == ' ') {
                        c = c.substring(1,c.length);
                    }
                        
                    if (c.indexOf(nameEQ) == 0) {
                        return c.substring(nameEQ.length, c.length);
                    }
                }
                
                return null;
            }
            
            function setCookie() {
                if (readCookie('entreePrelogin') != 'true') {
                    createCookie('entreePrelogin', 'true');
                    setSsoNotification();
                } else {
                    write("entreePrelogin cookie was already set!");
                }
            }            

            function setSsoNotification() {                
                var url = "https://aselect-t.entree.kennisnet.nl/openaselect/profiles/entree?id=" + 
                    eloid + "&url=" + encodeURIComponent(elourl);
                
                // Check if jQuery is avaiable
                if (window.jQuery) {                  
                    write("Using jQuery to set SSO Notification");
                    
                    // Use jQuery to ask the Entree Federation to set a SSO Notification                
                    $.ajax({
                        url: url,
                        dataType: 'jsonp'                    
                    }).always(function(data) {                    
                        write("Cookie is set");
                    });         
                } else {                
                    write ("Using POJO to set SSO Notification");
                    
                    // This code can be used if no jQuery is available
                    loadJSONP(url);
                    write("Cookie is set");
                }
            }
            
            function write(text) {
                document.getElementById('ssonot').innerText += text + "\r\n";
            }
            
            // This function can be used if jQuery is not available    
            function loadJSONP(url) {
                var script = document.createElement('script');
                script.type = 'text/javascript';
                script.src = url;            

                // Setup handler
                window[name] = function(data) {
                    callback.call((context || window), data);
                    document.getElementsByTagName('head')[0].removeChild(script);
                    script = null;
                    delete window[name];
                };       
                
                // Load JSON
                document.getElementsByTagName('head')[0].appendChild(script);
            }            
        </script>


Foutmeldingen

Als de ingestelde identifier van de IdP niet bekend is binnen Entree Federatie zal de call resulteren in een 400 HTTP status code.
Wanneer de URL waarvandaan de call gedaan wordt niet aan de whitelist van Entree Federatie is toegevoegd zal de call ook een 400 HTTP status code opleveren.
Neem in deze gevallen contact op met Kennisnet.