Skip to content
Snippets Groups Projects
presentation.html 15.5 KiB
Newer Older
renater.salaun's avatar
renater.salaun committed

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/x
html1/DTD/xhtml1-transitional.dtd">
<html xml:lang="" xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
  
<link rel="icon" type="image/png" href="/resources/images/favicon.png" />

<!-- Foundation css -->
<link rel="stylesheet" type="text/css" href="/resources/foundation/css/normalize.css">
<link rel="stylesheet" type="text/css" href="/resources/foundation/css/foundation.css">

<link href="/resources/jquery.steps.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="/resources/jquery-ui-1.11.1/jquery-ui.min.css" />
<link rel="stylesheet" type="text/css" href="/resources/css/style.css" />

<script type="text/javascript" src="/resources/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="/resources/jquery-ui-1.11.1/jquery-ui.min.js"></script>
<script type="text/javascript" src="/resources/jquery.validate.1.13.0.min.js"></script>
<script type="text/javascript" src="/resources/jquery.cookie-1.4.1.min.js"></script>
<script type="text/javascript" src="/resources/jquery.steps.1.1.0.min.js"></script>

<SCRIPT TYPE="text/javascript"> 
<!--

  // To confirm on a link (A HREF)
  function request_confirm_link(my_url, my_message) {
    question = confirm(my_message);
    if (question !="0") {
         top.location = my_url;
    }
  }

function showhide(div){
    var oDiv = document.getElementById(div);
    if(oDiv.style.display == "none"){
        oDiv.style.display = "block";
    }else{
        oDiv.style.display = "none";
    }
}

function hide(div) {
    var oDiv = document.getElementById(div);
    oDiv.style.display = "none";
}

jQuery(function($){

    $.widget( "custom.combobox", {
        _create: function() {
            this.wrapper = $( "<span>" )
            .addClass( "custom-combobox" )
            .insertAfter( this.element );

            this.element.hide();
            this._createAutocomplete();
            this._createShowAllButton();
        },

        _createAutocomplete: function() {
            var selected = this.element.children( ":selected" ),
                value = selected.val() ? selected.text() : "";

            this.input = $( "<input>" )
                .appendTo( this.wrapper )
                .val( value )
                .attr( "title", "" )
                .addClass( "custom-combobox-input ui-widget ui-widget-content ui-state-default ui-corner-left error required" )
                .autocomplete({
                    delay: 0,
                    minLength: 0,
                    source: $.proxy( this, "_source" )
                })
                .tooltip({
                    tooltipClass: "ui-state-highlight"
            });

            this._on( this.input, {
                autocompleteselect: function( event, ui ) {
                    ui.item.option.selected = true;
                    this._trigger( "select", event, {
                        item: ui.item.option
                    });
                },
 
                autocompletechange: "_removeIfInvalid"
            });
        },

        _createShowAllButton: function() {
            var input = this.input,
            wasOpen = false;
    
            $( "<a>" )
                .attr( "tabIndex", -1 )
                .attr( "title", "Show All Items" )
                .tooltip()
                .appendTo( this.wrapper )
                .button({
                    icons: {
                        primary: "ui-icon-triangle-1-s"
                    },
                    text: false
                })
                .removeClass( "ui-corner-all" )
                .addClass( "custom-combobox-toggle ui-corner-right" )
                .mousedown(function() {
                    wasOpen = input.autocomplete( "widget" ).is( ":visible" );
                })
                .click(function() {
                    input.focus();
            
                    // Close if already visible
                    if ( wasOpen ) {
                    return;
                    }
            
                    // Pass empty string as value to search for, displaying all results
                    input.autocomplete( "search", "" );
                });
        },
        
        _source: function( request, response ) {
            var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
            response( this.element.children( "option" ).map(function() {
                var text = $( this ).text();
                if ( this.value && ( !request.term || matcher.test(text) ) )
                    return {
                        label: text,
                        value: text,
                        option: this
                    };
            }) );
        },
        
        _removeIfInvalid: function( event, ui ) {
 
            // Selected an item, nothing to do
            if ( ui.item ) {
                return;
            }

            // Search for a match (case-insensitive)
            var value = this.input.val(),
                valueLowerCase = value.toLowerCase(),
                valid = false;
            this.element.children( "option" ).each(function() {
                if ( $( this ).text().toLowerCase() === valueLowerCase ) {
                    this.selected = valid = true;
                    return false;
                }
            });
            
            // Found a match, nothing to do
            if ( valid ) {
                return;
            }
            
            // Remove invalid value
            this.input
                .val( "" )
                .attr( "title", value + " didn't match any item" )
                .tooltip( "open" );
            this.element.val( "" );
            this._delay(function() {
                this.input.tooltip( "close" ).attr( "title", "" );
            }, 2500 );
            this.input.autocomplete( "instance" ).term = "";
        },

        _destroy: function() {
            this.wrapper.remove();
            this.element.show();
        }
    });
});

//-->      
</SCRIPT>


<title>Learn more about eduGAIN Access Check </title>

</head>

<body>
<div id="header">
	<ul>
		<li class="logo align-left"><a href="/accountmanager" title="eduGAIN Access Check home page"><img alt="eduGAIN logo" width="200" src="/resources/images/edugain_logo.png "/></a></li>
		<li>&nbsp;</li>
		<li class="logo align-right"><a href="http://www.geant.net" title="Géant home page" target="_blank"><img alt="GEANT logo" width="100" src="/resources/images/geant_logo_rgb_300dpi.jpg"/></a></li>
	</ul>
	<div class="title">
		<span class="hide-for-small"><h1>Learn more about eduGAIN Access Check</h1></span>
	</div>
</div>


<div id="wrapper">
 
	<!--<div id="bandeau">
		<div class="logo">
			<img alt="GEANT logo" width="150" src="/resources/geant_logo_rgb_300dpi.jpg"/>
		</div>
	</div>-->     

  <div id="content">




 <!-- notifications -->




 
  <script type="text/javascript">

$(function() {
    
    $('#start_testing').on('click',function() {
        window.location.href='/accountmanager?action=account_wizard';
renater.salaun's avatar
renater.salaun committed
    });
});

</script>


<div class="row">
  
<h2>What is the service for?</h2>
renater.salaun's avatar
renater.salaun committed
<p>
In their daily lives federation operators and eduGAIN experts are 
frequently asked,
how access to a production federated service can be tested. A simple 
login test to a federated service requires a federated account at an
organisation that is part of the federation/eduGAIN. However, on one 
hand commercial service operators normally don't have and normally
don't received federated accounts in a national federation and eduGAIN. 
On the other hand, even if they had a single account of their
own or if they asked a real-world user to test, this would not be 
sufficient to thouroughly test federated login with multiple identities
renater.salaun's avatar
renater.salaun committed
and different sets of attributes.
renater.salaun's avatar
renater.salaun committed
</p>
<p>
Setting up an own SAML Identity Provider (IdP) and us this to test the own IdP would be ideal but is non-trivial and therefore
renater.salaun's avatar
renater.salaun committed
in most cases too much effort. Using self-registration IdPs (e.g. <a href="https://openidp.feide.no/">https://openidp.feide.no/</a>)
and configuring them bilaterally with their Service Provider (SP) might be sufficient for development but as these IdPs are not part of eduGAIN,
renater.salaun's avatar
renater.salaun committed
they don't allow federated login under real conditions from an eduGAIN IdP. Also, self-registration IdPs usually don't allow
certain attributes (e.g. affiliation) to be set.
renater.salaun's avatar
renater.salaun committed
</p><p>
The eduGAIN Access Check solves most of the above-mentioned issues because it provides SP operators an easy way to test
federated login for their eduGAIN service with test identities that have different attribute profiles.
renater.salaun's avatar
renater.salaun committed
</p>
renater.salaun's avatar
renater.salaun committed

<h2>Benefits of the eduGAIN Access Check</h2> 
renater.salaun's avatar
renater.salaun committed
<p>  
The eduGAIN Access Check allows SP administrators to ensure proper 
functioning of their services within eduGAIN.
It is especially useful for services not hosted by an R&amp;E 
institution, because they can't use their own IdP to login
and test their production eduGAIN-enabled service. Setting up an IdP on 
their own would require considerable efforts on their part.
renater.salaun's avatar
renater.salaun committed
</p><p>
The eduGAIN Access Check provides realistic user profiles (e.g. 
including non-ascii characters, typical attributes) to help SP
administrators to improve and adapt their eduGAIN-enabled services to 
the constraints of variable attribute release in an
international context. In particular, the eduGAIN Access Check makes the
 SP operators aware that:
 </p>
 <ol>
 <li>different eduGAIN IdPs will release varying set of attributes</li>
 <li>the vocabulary and semantics of 
some attributes (i.e. eduPersonAffiliation) differ from federation to 
federation</li>
</ol>
<p>
SAML2 entity categories (GÉANT Data Protection Code of Conduct, REFEDS 
Research &amp; Scholarship) support for attribute
release management is a non-trivial concept within eduGAIN. The eduGAIN 
Access Check releases a reasonable set of attributes
to SPs, depending on the entity categories they belong to. This should 
encourage SP administrators to follow the eduGAIN guidelines
renater.salaun's avatar
renater.salaun committed
and facilitate the use of entity categories.
renater.salaun's avatar
renater.salaun committed
</p>
renater.salaun's avatar
renater.salaun committed

<h2>Frequently asked questions</h2>
      
<h3>I run a SAML-enabled service. How can I use the eduGAIN Access Check?</h3>  
renater.salaun's avatar
renater.salaun committed
<p>
Your Service Provider first needs to be registered in eduGAIN metadata. 
Therefore, you should contact your nearest federation operators (please have a look at the <a href="http://edugain.org/technical/status.php">list
of eduGAIN member federations</a>) to find out about the local process to join eduGAIN.
renater.salaun's avatar
renater.salaun committed
</p><p>
Once your SP's metadata is included into eduGAIN, <a href="/accountmanager?action=account_wizard">you can start creating test accounts</a>.
Before you obtain the test accounts, it is checked that you are a 
legitimate administrator of your SP. This is achieved via an email 
challenge sent to the contact address for the Service Provider.
renater.salaun's avatar
renater.salaun committed
</p><p>
To use the test accounts, initiate a login at your SP. On the Discovery Service, select "eduGAIN 
Access Check" as your Identity Provider and then use the credentials of one of the created test accounts.
Once authenticated, the eduGAIN Access Check IdP will send your SP 
a realistic set of user attributes. This allows you to validate that your service
behaves as expected.
renater.salaun's avatar
renater.salaun committed
</p>
renater.salaun's avatar
renater.salaun committed
  
<h3>How long can I use the eduGAIN Access Check test accounts?</h3>
renater.salaun's avatar
renater.salaun committed
<p>
Test accounts expire automatically after a few days. However you can ask
 for new test accounts, via the same process, if you still need it.
renater.salaun's avatar
renater.salaun committed
</p>
renater.salaun's avatar
renater.salaun committed
  
<h3>How can I provide the eduGAIN Access Check within my federation?</h3>
renater.salaun's avatar
renater.salaun committed
<p>
renater.salaun's avatar
renater.salaun committed
The code of the eduGAIN Access Check Account manager is published as open source. It's available at:
<a href="http://svn.geant.net/GEANT/edugain_testidp_account_manager">http://svn.geant.net/GEANT/edugain_testidp_account_manager</a>. Feel free to install it to
renater.salaun's avatar
renater.salaun committed
run you own instance of the service.
renater.salaun's avatar
renater.salaun committed
</p><p>
If national federations don't want to have their own service but still 
want the eduGAIN Access Check as a service in their federation to be use by all their SPs,
they can request that. The eduGAIN Access Check then would be configured to also load the metadata
of that federation in addition to eduGAIN. Vice versa, the national federation then 
would have to include the metadata of the eduGAIN Access Check IdP  in their 
local federation's metadata.
renater.salaun's avatar
renater.salaun committed
</p>
<h3>How does this Identity Provider compare with test identity providers and guest identity providers?</h3>
renater.salaun's avatar
renater.salaun committed
<p>
renater.salaun's avatar
renater.salaun committed
Test identity providers provide test accounts, with well-known accounts credentials. If such a test IdP is registered
in eduGAIN, it allows access to any registered eduGAIN SP with these test accounts, unless the test IdP is filtered out,
renater.salaun's avatar
renater.salaun committed
either at the SP level or at national federation level. 
renater.salaun's avatar
renater.salaun committed
</p><p>
Guest or self-registration identity providers typically allow all users with a valid email address to create an account and access federated services with it. This is mainly for users who don't/can't 
have an account at an institutional IdP.
These guest IdP rely on mail address verification (based on a challenge 
for instance) as a provisioning method but any other attribute is either self-provided by the user (unknown quality) or static.
Therefore, tis type of IdP provides generally provides low quality attributes about the users (name, email, user 
identifier) and typically cannot release user attributes carrying privileges because data is self-provided by the user.
Guest or self-registration Identity Provider therefore are generally not recommended to be part of eduGAIN.
renater.salaun's avatar
renater.salaun committed
</p>
<p>
Unlike a test IdP, eduGAIN Access Check test accounts credentials are provided to the requestor only.<br>
Unlike a guest or self-registration IdP, the eduGAIN Access Check test accounts creation is a 
restricted feature; you need to proove that you are administrator of an eduGAIN 
production SP to use it.<br>
Unlike for a standard IdP, the eduGAIN Access Check test accounts can be used to access a single SP. If you request test accounts
as admin of SP A; these test accounts won't allow accessing any other SP than A.
renater.salaun's avatar
renater.salaun committed
</p>

<h3>How is it ensured that users can only test their own service?</h3>
<p>The eduGAIN Access Check service exclusively allows creating test
accounts for users who can receive challenge emails for contac email
renater.salaun's avatar
renater.salaun committed
addresses listed in the eduGAIN metadata for a particular Service Provider.
The test accounts can be used exclusively to access a single SP (for which a user proofed that he is administrator for).
renater.salaun's avatar
renater.salaun committed
Authentication requests for other SPs are rejected.
</p>
<h3>What prevents the eduGAIN Access Check from being used to impersonate real eduGAIN users?</h3>
renater.salaun's avatar
renater.salaun committed
<p>
The attributes that are typically needed for user identification have a hard-coded domain name ("@access-check.edugain.org") set. Therefore, they cannot be changed unless the host is hacked, which could happen of course to any Identity Provider.
The eduGAIN Access Check also has the Shibboleth metadata scope extension set to "access-check.edugain.org" 
in its published metadata. Therefore, an SP with enabled scope
check would not accept for example an eduPersonPrincipalName with a different scope.
renater.salaun's avatar
renater.salaun committed
</p>
renater.salaun's avatar
renater.salaun committed



</div>

 




 <!-- IF errors -->

<p>



		<div>

<div id="footer">
	<div class="row align-center">
	<span>eduGAIN Access Check</span>
	</div>
</div>
		</div>
	</div>
</div>

            <script src="/resources/foundation/js/foundation.min.js"></script>
			<script src="/resources/foundation/js/foundation/foundation.tooltip.js"></script>
            <script>
                $(document).foundation();
            </script>   


</div>
</body>
</html>