...
- Gebruikersinformatie van de Identiteitsprovider of IdP aan de dienstverlener serviceprovider over te dragen
- Toegang te krijgen tot een account bij de dienstverlenerserviceprovider
- Specifieke diensten toe te staan bij de dienstverlenerserviceprovider
Wanneer een gebruiker zich aanmeldt bij een Service Provider, stuurt SURFconext een zogehete SAML-assertion naar de Service Provider via de browser van de gebruiker. Deze bevat:
...
Note |
---|
De SAML2-implementatie van SURFconext voldoet aan het SAML2int profiel 0.2.1. In de header op bovenstaande link staat dat het werk aan saml2int is verhuisd naar Kantara Initiative. SURFconext houdt zich tot nader orde aan de SAML2int-profielversie 0.2.1. |
Info |
---|
Voordat je je gaat verdiepen in de theoretische zaken op deze pagina, loont het om onze 'best practice' pagina (EN) te lezen. Hier krijg je een introductie tot en hoe attributen het beste gebruikt kunnen worden in SURFconext. |
Table of Contents |
---|
Anchor | ||||
---|---|---|---|---|
|
De identiteit van een gebruiker wordt doorgestuurd in de vorm van een element wat het NameID heet. Iedere IdP wordt verplicht een NameID mee te sturen. Vanwege privacy genereert SURFconext een nieuwe NameID en plaatst een kopij daarvan in het attribuut eduPersonTargetedID, maar alleen als het NameIID geconfigureerd is als persistent (dus niet indien het als transient is geconfigureerd).
...
Warning | ||
---|---|---|
| ||
De attributen NameID (indien geconfigureerd als persistent) en eduPersonTargetedID, wat feitelijk een kopie is van het NameID, zijn onveranderlijk maar dit is zo tot op zekere hoogte. In sommige gevallen kan het zijn dat er door een service provider of een identity provider keuzes gemaakt worden die er voor zorgen dat het NameID toch wijzigt. Het NameID, zoals gebruikt in de SAML assertion naar de service provider bij het aanmelden op de dienst, is een samenstelling van de attributen uid, schacHomeOrganization, het Entity ID van de service provider samen met een geheim wat gebruik maakt van een SHA algoritme. Als een instelling of dienstverlener er voor kiest bij een dienst die al in productie is één van deze attributen aan te passen zal het er toe leiden dat SURFconext een nieuw NameID en eduPersonTargetedID gaat genereren. Dit kan tot gevolg hebben dat gebruikers geen toegang meer hebben tot hun profielen bij diensten. Als wij zien dat een instelling dan wel dienstverlener voornemens is één van deze attributen aan te passen zullen wij dit ter sprake brengen en ze wijzen op de gevolgen. |
Links
...
- Tabel met attributen die we onze instellingen aanbevelen om vrij te geven https://wiki.surfnet.nl/display/surfconextdev/Vereiste+attributen
- Profiel pagina https://profile.surfconext.nl/ , laat zien welke attributen er door uw IdP worden doorgegeven aan SURFconext
- Voor nieuwe IdP's of voor IdP's die hun omgeving upgraden
...
- : systeembeheerders worden op enig moment gevraagd
...
- de metadata van hun account te delen voor analyses. Ga dan naar deze pagina en klik op de 'Mail to SURFconext' knop. We nemen contact met u op wanneer we de ingediende metadata hebben beoordeeld. Deze pagina toont u ook de gedeelde attributen.
- Profiel Pagina: https://profile.surfconext.nl/
- Mail response van Identity Provider aan SURFconext en review je attributen: https://engine.surfconext.nl/authentication/sp/debug
Attributenschema's
Attributenschema's
Een attributenschema is een Een attributenschema is een abstracte representatie van de karakteristieken van een object, en de relatie tot andere objecten.
...
Beiden kunnen worden gebruikt om dezelfde informatie uit te drukken. De uitzondering hierop is het NameID, deze is enkel beschikbaar binnen het urn:oid schema. Standaard geeft SURFconext de attributen door in beide schema's als onderdeel van de assertion. Desalniettemin wordt het door elkaar gebruiken van de schema's afgeraden.
Attributenoverzicht
SURFconext ondersteunt het vrijgeven van de volgende attributen:
...
Omschrijving | Attribuutnaam | Definitie | Data type | Voorbeeld |
---|---|---|---|---|
(NameID) | eduPerson (1) | UTF8 string | bd09168cf0c2e675b2def0ade6f50b7d4bb4aae | |
urn:mace:dir:attribute-def:sn | X.520 | UTF8 string | Vermeegen | |
urn:mace:dir:attribute-def:givenName | X.520 | UTF8 string | Mërgim Lukáš | |
urn:mace:dir:attribute-def:cn | X.520 | UTF8 String | Prof.dr. Mërgim Lukáš Vermeegen | |
urn:mace:dir:attribute-def:displayName | UTF8 String | Prof.dr. Mërgim L. Vermeegen | ||
urn:mace:dir:attribute-def:mail | RFC-5322 address | m.l.vermeegen@university.example.org | ||
urn:mace:terena.org:attribute-def:schacHomeOrganization | RFC-1035 domain string | example.nl | ||
urn:mace:terena.org:attribute-def:schacHomeOrganizationType | RFC-2141 URN | urn:mace:terena.org:schac:homeOrganizationType:int:university | ||
Employee/student number | urn:schac:attribute-def:schacPersonalUniqueCode | Schac | RFC-2141 URN | urn:schac:personalUniqueCode:nl:local:example.edu:employeeid:x12-3456 urn:schac:personalUniqueCode:nl:local:example.nl:studentid:s1234567 |
urn:mace:dir:attribute-def:eduPersonAffiliation | eduPerson (1) | Enum type (UTF8 String) | employee, student, faculty, member, affiliate, pre-student | |
Scoped affiliation | urn:mace:dir:attribute-def:eduPersonScopedAffiliation urn:oid:1.3.6.1.4.1.5923.1.1.1.9 | eduPerson (1) | UTF8 String user@domain | student@uniharderwijk.nl |
urn:mace:dir:attribute-def:eduPersonEntitlement | eduPerson (1) | RFC-2141 URN | Wordt gedefineerd per dienst (zie Standardized values for eduPersonEntitlement) | |
urn:mace:dir:attribute-def:eduPersonPrincipalName | eduPerson (1) | UTF8 String | piet.jønsen@example.edu | |
urn:mace:dir:attribute-def:isMemberOf | eduMember | RFC-2141 URN | urn:collab:org:surf.nl | |
urn:mace:dir:attribute-def:uid | UTF8 String | s9603145 | ||
urn:mace:dir:attribute-def:preferredLanguage | List of BCP47 language tags | nl | ||
ORCID | urn:mace:dir:attribute-def:eduPersonORCID urn:oid:1.3.6.1.4.1.5923.1.1.1.16 | eduPerson (1) | URL registered with ORCID.org | http://orcid.org/0000-0002-1825-0097 |
ECK ID | urn:mace:surf.nl:attribute-def:eckid | SURF / Edu-K | URL zoals gedefinieerd door Edu-K | https://ketenid.nl/spv1/eacf3765ad342feb5f65c2bf8194b4ccc3d68cec3c01d3c26063 6747a 2b06d092fcc3a8d655bbdc4 ae7d815ed005cf3a11fe9cab 2365f95da3e9965501f7c98e |
...
title | Minimale vereiste aantal attributen voor IdP's die op SURFconext aansluiten |
---|
eacf3765ad342...cf3a11fe9cab2365f95da3e9965501f7c98e (Attribuut korter gemaakt voor de leesbaarheid) |
SURFCRM ID |
urn:mace: |
...
surf.nl:attribute-def: |
...
surf-crm-id | SURF | GUID van de aangesloten instelling zoals in SURF CRM | ad93daef-0911-e511-80d0-005056956c1a |
Info | ||
---|---|---|
| ||
SURFconext beschouwt de attributen nlEduPersonOrgUnit , nlEduPersonStudyBranch en nlStudielinkNummer als verouderd. Deze worden niet meer toegepast bij nieuw op te voeren IdP's en SP's in SURFconext. Als je al een IdP of SP bij SURFconext hebt geregistreerd die gebruik maakt van deze attributen kunnen deze tot nader order gebruikt worden. |
Gedetailleerde beschrijvingen van de attributen
Anchor | ||||
---|---|---|---|---|
|
Zie de paragraaf Identifiers van een gebruiker.
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace |
...
:dir:attribute-def: |
...
sn |
urn: |
...
oid | urn: |
...
oid:2.5.4.4 | |
Multiplicity | single-valued |
Data type | UTF8 string (unbounded) |
Omschrijving | De achternaam van een gebruiker (Inclusief woorden als “van”, “de”, “von” etc.) en wordt gebruikt voor personalisatie; dit kan een combinatie zijn van bestaande attributen. |
Voorbeeld | Vermeegen 孝慈 |
Opmerking |
Anchor | ||||
---|---|---|---|---|
|
urn |
Info | ||
---|---|---|
| ||
SURFconext beschouwt de attributen nlEduPersonOrgUnit, nlEduPersonStudyBranch en nlStudielinkNummer als verouderd. Deze worden niet meer toegepast bij nieuw op te voeren IdP's en SP's in SURFconext. Als je al een IdP of SP bij SURFconext hebt geregistreerd die gebruik maakt van deze attributen kunnen deze tot nader orde gebruikt worden. |
Gedetailleerde beschrijvingen van de attributen
...
Zie de paragraaf Identifiers van een gebruiker.
...
:mace | urn:mace:dir:attribute-def: |
givenName | |
urn:oid | urn:oid:2.5.4. |
42 | |
Multiplicity | single-valued |
Data type | UTF8 string (unbounded) |
Omschrijving
De achternaam van een gebruiker (Inclusief woorden als “van”, “de”, “von” etc.) en wordt gebruikt voor personalisatie; dit kan een combinatie zijn van bestaande attributen.
孝慈
Beschrijving | Voornaam / 'name known by'; combinatie van titel, initialen, en 'name known by' zijn mogelijk. |
Voorbeeld | Jan Klaassen |
Opmerking |
Anchor |
---|
...
|
...
|
...
Common name
urn:mace | urn:mace:dir:attribute-def: |
cn | |
urn:oid | urn:oid:2.5.4. |
3 |
Multiplicity |
multi-valued | |
Data type | UTF8 |
string (unbounded) |
Beschrijving
Omschrijving | Volledige naam. |
Voorbeeld |
Jan Klaassen
Mërgim K. Lukáš
Þrúður
Opmerking
...
Prof.dr. Mërgim Lukáš Vermeegen 加来 千代, PhD. | |
Opmerking | Bijvoorbeeld: een gebruikersnaam in een Engelssprekend land bevat een persoonlijke |
urn:mace | urn:mace:dir:attribute-def:cn |
urn:oid | urn:oid:2.5.4.3 |
Multiplicity | multi-valued |
Data type | UTF8 string (unbounded) |
Omschrijving | Volledige naam. |
Voorbeeld | Prof.dr. Mërgim Lukáš Vermeegen 加来 千代, PhD. |
Opmerking | Bijvoorbeeld: een gebruikersnaam in een Engelssprekend land bevat een persoonlijke titel (bijvoorbeeld dhr., mw., professor, mijnheer, Lord), een voornaam, 2e (en verdere) naam, achternaam, kwalificatie van de generatie (als die er is, bijvoorbeeld Jr.) en onderscheidingen en prijzen (als die er zijn; bijvoorbeeld een onderscheiding Commander of the Order of the British Empire, CBE). |
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:dir:attribute-def:displayName |
urn:oid | urn:oid:2.16.840.1.113730.3.1.241 |
Multiplicity | single-valued |
Data type | UTF8 string (unbounded) |
Omschrijving | Naam zoals weergegeven in applicaties. |
Voorbeeld | Prof.dr. Mërgim Lukáš Vermeegen 加来 千代, PhD. |
Opmerkingen | Mogelijkerwijs kunnen gebruikers zelf invloed hebben op deze waarde. Daarom is deze niet geschikt voor identificatie. |
Anchor | ||||
---|---|---|---|---|
urn:mace | urn:mace:dir:attribute-def:mail |
urn:oid | urn:oid:0.9.2342.19200300.100.1.3 |
Multiplicity | multi-valued |
Data type | RFC-5322 address (max 256 chars) |
Omschrijving | e-mailadres; syntax in overeenstemming met RFC 5322 |
Voorbeelden | m.l.vermeegen@university.example.org "very.unusual.@.unusual.com"@example.com mlv@[IPv6:2001:db8::1234:4321]; |
Opmerkingen |
|
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:dir:attribute-def:uid |
urn:oid | urn:oid:0.9.2342.19200300.100.1.1 |
Multiplicity | single-valued (multi-valued in de specificatie, maar in SURFconext is slechts 1 waarde toegestaan) |
Data type | UTF8 String (max 256 chars); gebruik van spaties en @ -characters wordt afgeraden |
Omschrijving | De unieke code voor een persoon, die als inlognaam wordt gebruikt binnen een organisatie. |
Voorbeelden | s9603145 |
Opmerkingen |
|
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:terena.org:attribute-def:schacHomeOrganization |
urn:oid | urn:oid:1.3.6.1.4.1.25178.1.2.9 |
Multiplicity | single-valued |
Data type | RFC-1035 domain string. Dit MOET een secondary-level domein zijn die in beheer is van de instelling. Bij voorkeur wordt de hoofd-domeinnaam van de instelling gebruikt. |
Omschrijving | The user's organization using the organization's domain name; syntax in accordance with RFC 1035. |
Voorbeelden | uniharderwijk.nl |
Opmerkingen |
|
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:terena.org:attribute-def:schacHomeOrganizationType |
urn:oid | urn:oid:1.3.6.1.4.1.25178.1.2.10 |
Multiplicity | single-value |
Data type | RFC-2141 URN (Zie Schac standard) |
Omschrijving | Naam van het type organisatie zoals gedefinieerd op http://www.terena.org/registry/terena.org/schac/homeOrganizationType |
Voorbeelden | urn:mace:terena.org:schac:homeOrganizationType:int:university urn:mace:terena.org:schac:homeOrganizationType:es:opi |
Opmerkingen |
|
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:schac:attribute-def:schacPersonalUniqueCode |
urn:oid | urn:oid:1.3.6.1.4.1.25178.1.2.14 |
Multiplicity | multi-value |
Data-type | RFC-2141 URN (zie SURFnet registry) |
Omschrijving | Het interne studentnummer, medewerkernummer of persoonsnummer van de gebruiker. |
Voorbeelden | urn:schac:personalUniqueCode:nl:local:example.edu:employeeid:x12-3456 urn:schac:personalUniqueCode:nl:local:example.nl:studentid:s1234567 |
Opmerkingen |
|
Anchor | ||||
---|---|---|---|---|
|
urn:mace | |
urn:oid | |
Multiplicity | multi-valued |
Data type | UTF8 String (only the values enumerated below are allowed) |
Beschrijving | Geeft de relatie aan tussen de gebruiker en zijn instelling. De volgende waarden zijn toegestaan binnen SURFconext:
Gebruik de bovenstaande voorbeelden om vast te stellen welke waarde een gebruiker krijgt. Indien de definities niet toereikend zijn, gebruik gezond verstand. |
Voorbeelden | Zie beschrijving |
Opmerkingen |
|
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:dir:attribute-def:eduPersonScopedAffiliation |
urn:oid | urn:oid:1.3.6.1.4.1.1466.115.121.1.15 |
Multiplicity | multi-valued |
Data type | UTF8 String of the form affiliation@domain (zie onder) |
Beschrijving | Beschrijft de relatie tussen de gebruiker en het domein van zijn thuisorganisatie. Het affiliation-gedeelte moet een van de toegestane waarden van het eduPersonAffiliation attribuut zijn (zie direct hierboven). De waarde is de rol van de de gebruiker en de algemene domeinnaam van de instelling. Feitelijk kan eduPersonScopedAffiliation dus gedefinieerd worden als: <eduPersonAffiliation> "@" <schacHomeOrganization>. Dit attribuut is net als eduPersonScopedAffiliation eduPersonAffiliation meerwaardig. Het domein-gedeelte moet de schacHomeOrganization van de gebruiker zijn (of een subdomein ervan). |
Voorbeelden | student@uniharderwijk.nl faculty@uniharderwijk.nl |
Opmerkingen |
|
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:dir:attribute-def:eduPersonEntitlement |
urn:oid | urn:oid:1.3.6.1.4.1.5923.1.1.1.7 |
Multiplicity | multi-value |
Data type | RFC-2141 URN |
Beschrijving | rechten; een URI (URL of URN) die aangeeft welke rechten een gebruiker heeft. |
Voorbeelden |
|
Opmerkingen |
|
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:dir:attribute-def:eduPersonPrincipalName |
urn:oid | urn:oid:1.3.6.1.4.1.5923.1.1.1.6 |
Multiplicity | single-valued |
Data type | UTF8 String |
Beschrijving | Unieke identifier voor een gebruiker |
Voorbeelden | piet.jønsen@example.edu not.a@vålîd.émail.addreß |
Opmerkingen |
|
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:dir:attribute-def:isMemberOf |
urn:oid | urn:oid:1.3.6.1.4.1.5923.1.5.1.1 |
Multiplicity | multi-valued |
Data type | RFC-2141 URN |
Beschrijving | Somt de samenwerkende organisaties op waarvan de gebruiker lid is. |
Voorbeeld | urn:collab:org:surf.nl |
Opmerkingen |
|
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:dir:attribute-def:preferredLanguage |
urn:oid | urn:oid:2.16.840.1.113730.3.1.39 |
Multiplicity | single-valued |
Data type | RFC2798 BCP47 |
Beschrijving | Een afkorting van 2 letters voor de voorkeurstaal volgens de ISO 639 codetabel; geen subcodes. |
Veerbeelden | nl |
Opmerkingen | Wordt gebruikt om aan te geven aan welke geschreven of gesproken taal de gebruiker de voorkeur geeft. Dit is nuttig voor internationale correspondentie of mens-computer-interactie. Waarden voor dit attribuuttype MOETEN overeenkomen met de definitie van het 'Accept-Language header field' in RFC 2068, met 1 uitzondering: de waarde ':' moet worden weggelaten. |
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:dir:attribute-def:eduPersonTargetedID |
urn:oid | urn:oid:1.3.6.1.4.1.5923.1.1.1.10 |
Multiplicity | single-valued |
Data type | UTF8 string (unbounded) |
Beschrijving | Het attribuut eduPersonTargetedID is een kopie van de Subject -> NameID (maar alleen als het NameID is geconfigureerd als persistent) welke door SURFconext zelf wordt gegenereerd. Als een Identity Provider de eduPersonTargetedID zelf zet, wordt deze altijd overschreven door SURFconext. |
Voorbeeld | bd09168cf0c2e675b2def0ade6f50b7d4bb4aae |
Opmerkingen | Dit attribuut is in het leven geroepen omdat de Subject -> NameID zelf geen onderdeel is van de SAML v2.0-respons en dus niet gebruikt kan worden. Als SURFconext de Subject -> NameID expliciet in het attribuut eduPersonTargetedID plaatst, kun je deze wel gebruiken. |
...
deze altijd overschreven door SURFconext. | |
Voorbeeld | bd09168cf0c2e675b2def0ade6f50b7d4bb4aae |
Opmerkingen | Dit attribuut is in het leven geroepen omdat de Subject -> NameID zelf geen onderdeel is van de SAML v2.0-respons en dus niet gebruikt kan worden. Als SURFconext de Subject -> NameID expliciet in het attribuut eduPersonTargetedID plaatst, kun je deze wel gebruiken. |
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:dir:attribute-def:eduPersonOrcid |
urn:oid | urn:oid:1.3.6.1.4.1.5923.1.1.1.16 |
Multiplicity | multi-valued (maar zie onder) |
Data type | URL, geregistreerd via ORCID.org |
Beschrijving | Het ORCID is een persistente digitale identifier die de houder onderscheidt van andere onderzoekers. Via integratie in publicatieworkflows leidt dit tot de herkenning van de juiste onderzoeker bij zijn wetenschappelijke activiteiten. Waarden moeten geldige ORCID identifiers zijn in de ORCID-voorkeursrepresentatie als URL, b.v. http://orcid.org/0000-0002-1825-0097 |
Voorbeelden | |
Opmerkingen | Zie voor achtergrondinformatie over ORCID: https://www.surf.nl/nieuws/2016/02/orcid-nu-beschikbaar-voor-europese-instellingen.html Het attribuut is in theorie multi-valued, maar in de praktijk lijkt het logisch niet meer dan één waarde mee te geven. |
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace: |
surf.nl:attribute-def: |
eckid |
urn:oid |
- |
Multiplicity |
single-valued |
Beschrijving
Het ORCID is een persistente digitale identifier die de houder onderscheidt van andere onderzoekers. Via integratie in publicatieworkflows leidt dit tot de herkenning van de juiste onderzoeker bij zijn wetenschappelijke activiteiten. Waarden moeten geldige ORCID identifiers zijn in de ORCID-voorkeursrepresentatie als URL, b.v. http://orcid.org/0000-0002-1825-0097
Opmerkingen
Data type | URL |
zoals gespecificeerd door Edu-K, geheel in onderkast | |
Beschrijving | Educatieve Content Keten Identifier (ECK ID) is een pseudonieme identificatie voor toegang tot leermaterialen voor primair, secundair en middelbaar beroepsonderwijs. |
Examples | https://ketenid.nl/spv1/eacf3765ad342feb5f65c2bf8194b4ccc3d68cec3c01d3c260636747a2b06d092fcc3a8d655bbdc4ae7d815ed005cf3a11fe9cab2365f95da3e9965501f7c98e |
Opmerkingen | Dit attribuut mag alleen gebruikt worden voor “de toegang tot en het gebruik van digitale leermiddelen of het digitaal afnemen van toetsen en examens”. Voor meer informatie zie |
Het attribuut is in theorie multi-valued, maar in de praktijk lijkt het logisch niet meer dan één waarde mee te geven.
...
eck-id.nl. Als u deze claiminformatie ophaalt uit een externe bron, zoals een Enterprise Active Directory, LDAP of een Microsoft SQL-server, kunt u aangepaste 'attribute store' definiëren voor het opvragen van de ECK-ID-claim . Lees dit Microsoft blog om meer te weten te komen. |
Anchor | ||||
---|---|---|---|---|
|
urn:mace | urn:mace:surf.nl:attribute-def:eckid:surf.nl:attribute-def:surf-crm-id | ||
urn:oid | urn:oid:1.3.6.1.4.1.1076.20.100.10.50.2 | urn:oid | - |
Multiplicity | single-valued | ||
Data type | URL zoals gespecificeerd door Edu-K, geheel in onderkast | ||
Description | Educatieve Content Keten Identifier (ECK ID) is een pseudonieme identificatie voor toegang tot leermaterialen voor primair, secundair en middelbaar beroepsonderwijs. | ||
Examples | https://ketenid.nl/spv1/eacf3765ad342feb5f65c2bf8194b4ccc3d68cec3c01d3c260636747a2b06d092fcc3a8d655bbdc4ae7d815ed005cf3a11fe9cab2365f95da3e9965501f7c98e | ||
Microsoft GUID | |||
Beschrijving | Het GUID van de organisatie (aangesloten instelling) waar de idp van de gebruiker toe behoort, zoals gebruikt in het SURF CRM. | ||
Voorbeelden | ad93daef-0911-e511-80d0-005056956c1a | ||
Opmerkingen | SURF specifiek en alleen te gebruiken voor SURF-eigen SP's die ook een koppeling hebben met het SURF CRM. Uitsluitend in te zetten na overleg met SURFnet. | Notes | Dit attribuut mag alleen gebruikt worden voor “de toegang tot en het gebruik van digitale leermiddelen of het digitaal afnemen van toetsen en examens”. Voor meer informatie zie https://www.eck-id.nl |