Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

SAML

...

IdP Proxy

A SAML ! IdP Proxy is a bridge or gateway between a federation of SAML IdPs and a federation of SAML SPs:

Image RemovedImage Added

To an SP, an ! IdP Proxy looks like an ordinary ! IdP. Likewise, to an ! IdP, an ! IdP Proxy looks like an SP. Thus an ! IdP Proxy has the combined capability of both an ! IdP and SP.

Like a Web (HTTP) Proxy, an ! IdP Proxy delivers increased efficiency, security, and flexibility.

 

Web Proxy

IdP Proxy

Efficiency

cache web pages

cache attributes

Security

controlled access to web pages

controlled access to federation IdPs

Flexibility

HTTP request/response filtering

SAML request/response filtering

The following flow diagram illustrates the relationship among the various ! IdP Proxy components:

Image RemovedImage Added

Here is an outline of a the typical ! IdP Proxy flow:

  1. A browser client requests a web resource protected by a SAML SP (SP
    HTML
    <sub>
    0
    HTML
    </sub>
    ). If a security context for the principal already exists at SP
    HTML
    <sub>
    0
    HTML
    </sub>
    , skip to step 14.
  2. The client is redirected to the ! IdP component of the ! IdP Proxy (!IdP
    HTML
    <sub>
    0
    HTML
    </sub>
    ), which is protected by the SP component of the ! IdP Proxy (SP
    HTML
    <sub>
    1
    HTML
    </sub>
    ).
  3. The client makes a SAML Shibboleth.AuthnRequest to the SSO service at ! IdP
    HTML
    <sub>
    0
    HTML
    </sub>
    . If a security context for the principal already exists at ! IdP
    HTML
    <sub>
    0
    HTML
    </sub>
    , skip to step 10.
  4. The client is redirected to the terminal ! IdP (!IdP
    HTML
    <sub>
    1
    HTML
    </sub>
    ).
  5. The client makes a SAML Shibboleth.AuthnRequest to the SSO service at ! IdP
    HTML
    <sub>
    1
    HTML
    </sub>
    . If a security context for the principal does not exist, ! IdP
    HTML
    <sub>
    1
    HTML
    </sub>
    identifies the principal (details omitted).
  6. !IdP
    HTML
    <sub>
    1
    HTML
    </sub>
    updates its security context for this principal, issues one or more assertions, and returns a response to the client.
  7. The client submits the response to the assertion consumer service at SP
    HTML
    <sub>
    1
    HTML
    </sub>
    . The assertion consumer service validates the assertions in the response.
  8. SP
    HTML
    <sub>
    1
    HTML
    </sub>
    updates its security context for this principal and redirects the client to ! IdP
    HTML
    <sub>
    0
    HTML
    </sub>
    .
  9. The client makes a SAML Shibboleth.AuthnRequest to ! IdP
    HTML
    <sub>
    0
    HTML
    </sub>
    , the same Shibboleth.AuthnRequest made at step 3.
  10. !IdP
    HTML
    <sub>
    0
    HTML
    </sub>
    updates its security context for this principal, issues a single assertion, and returns a response to the client. The response also contains the assertions issued by ! IdP
    HTML
    <sub>
    1
    HTML
    </sub>
    at step 6.
  11. The client submits the response to the assertion consumer service at SP
    HTML
    <sub>
    0
    HTML
    </sub>
    . The assertion consumer service validates the assertions in the response.
  12. SP
    HTML
    <sub>
    0
    HTML
    </sub>
    updates its security context for this principal and redirects the client to the resource.
  13. The client requests the resource, the same request issued at step 1.
  14. The resource makes an access control decision based on the security context for this principal and returns the resource to the client.

There are at least two assertions produced as a result of the previous transaction. Observe that ! IdP

HTML
<sub>
1
HTML
</sub>
issues an authentication response containing one or more assertions at step 6, which is subsequently consumed by SP
HTML
<sub>
1
HTML
</sub>
at step 7, and likewise ! IdP
HTML
<sub>
0
HTML
</sub>
issues an authentication response containing a single assertion at step 10, which is consumed by SP
HTML
<sub>
0
HTML
</sub>
at step 11. These authentication responses will contain assertions that themselves contain authentication statements and (optionally) attribute statements. Although ! IdP
HTML
<sub>
0
HTML
</sub>
is not authoritative for the authentication context and attributes asserted by ! IdP
HTML
<sub>
1
HTML
</sub>
, SP
HTML
<sub>
0
HTML
</sub>
may wish to take all assertions into account to make a fully informed access control decision. We therefore propose a precise packaging of multiple assertion elements below.

Assuming SP

HTML
<sub>
1
HTML
</sub>
exposes the assertions it receives from ! IdP
HTML
<sub>
1
HTML
</sub>
, the ! IdP Proxy formulates the following assertion at step 10:

...

More generally, suppose there are N ! IdP Proxies in a chain. Every ! IdP Proxy in the chain gives rise to an additional level of nesting in the assertion issued to SP

HTML
<sub>
0
HTML
</sub>
. In particular, an assertion issued by ! IdP
HTML
<sub>
j
HTML
</sub>
to SP
HTML
<sub>
j
HTML
</sub>
has N   - j levels of nesting. SP
HTML
<sub>
j
HTML
</sub>
accesses the nested assertion issued by ! IdP
HTML
<sub>
k
HTML
</sub>
(k > j) by recursing on the assertion issued by ! IdP
HTML
<sub>
j
HTML
</sub>
precisely k   - j times. HTML<hr />