You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

Introduction

In the context of SAML-based national identity federations there has been an increasing need for learning more about a user's Level of Assurance (LoA) when it comes to identity vetting and authentication security. A few national identity federations have started to introduce services that increase the LoA of a user. All such services known today work using a proxy architecture. There is a component (the proxy) inserted between the user's Identity Provider (IdP) and the Service Provider (SP) which requires LoA information. The proxy then intercepts the user's SAML assertion and forces the user to use a second authentication factor before he can proceed to the actual service that needs LoA information. In case of the SURFconext Strong Authentication service, not only the authentication security is increased but also the identity vetting strength, as it requires the user initially to go through an identity vetting process with in-personam passport validation.

While this proxy model has some advantages (scalable, easy deployment from SP perspective, no SP discovery needed), it also has some weaknesses that it share with all proxy models (IdP must trust proxy, conflict with data minimization). The following specification of an Identity Assurance Service Attribute Authority is an alternative approach making use of SAML Attribute Authority, which shares some of the advantages of the proxy model but has a fewer weaknesses.

Architecture

High level architecture

FIXME: Image + Description

Identity Assurance AA Architecture

The Identity Assurance AA consists of a

  • SAML Attribute Authority
  • SAML SP,
  • web service
  • database

LoA Attributes: eduPersonAssurance, based on the recommendations of the REFEDS Assurance WG

FIXME: Image + Description

Registration Flow

FIXME: Description of what is needed for the very first request to the SP to set up the user's second factor and get his/her identity vetted.

Login Flow

A normal login to a service requiring increased LoA would work like this:

  1. User accesses SP with his/her web browser and clicks on login
  2. User's web browser is sent to discovery service where users chooses his/her IdP
  3. User's web browser is sent to login page of his IdP where (s)he authenticates (1. factor)
  4. After successful authentication, the user's web browser is redirected with a SAML assertion (containing at least a unique, non-targeted identifier attribute like the eduPersonPrincipalName) back to the SP
  5. The SP validates the assertion and extracts the user's attributes.
  6. Using the identifier attribute, the SP then performs a SAML attribute query to the Attribute Authority (AA) of the Identity Assurance Service (SAS)
  7. The AA returns the attributes for this user to the SP
  8. Using the Shibboleth Attribute Checker, the SP checks if among the user's attributes there is a LoA-related attribute (that was queried from the AA). If that LoA attribute is not present or if it does not have the required value, the user is sent to a web page X of the SAS.
  9. Web page X is protected by an SP itself, therefore the user has to authenticate again (but he/she might not notice due to the already existing SSO session at his/her IdP) using the same IdP.
  10. Back on web page X, the user is asked to authenticate using a second factor.
  11. If authentication with second factor succeeded, a temporary LoA entry is created in database of AA and the user is sent back to SP
  12. SP initiates login of user again, so (s)he is sent back to his/her IdP (where SSO session is still active) and from there back to the SP, which again initiates a SAML attribute query.
  13. If the attribute query happened in a reasonably short time interval since the user authenticated with his/her second factor, the AA has released a LoA attribute for the user. Therefore, the AttributeChecker's requirements are met and the user is granted access.

In the above flow it is assumed that the registration of a second factor and any identity vetting mechanics have taken place prior to this login flow.

Flowchart: loa-aa-flow_v0.1.pdf

Weaknesses/Limitations

  • Only works with SAML implementations supporting SAML Attribute Query (+ AttributeChecker mechanism) like Shibboleth
  • Upfront configuration effort higher than with proxy
  • Provides only low security. In case an account has been hacked, the attacker might also be able to perform the 2nd factor authentication:
    • email password is often identical with the one of the general user account
    • no independent / external identity vetting

Open Questions

  • How could initial identity vetting procedure be integrated in above flow?
    • Where would vetted attributes come from, AA or IdP?
    • How and by which component can be expressed which identity data was vetted?
  • How could registration of second factor (e.g. SMS) be integrated in above flow?
    • Dedicated (central) IdP or equivalent web service
    • Identity vetting?
  • What are the security implications of this scenario?
    • Are there ways to make the AA release LoA information for the wrong user?
    • Is it a problem that the first and the second factor are checked by two different components?
    • Are there ways to fool the AttributeChecker and get around it?
    • What can/should be done to prevent that a user's IdP can assert the LoA value instead of the AA?
  • No labels