<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
		<id>https://wiki.niif.hu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Matteo%28AT%29niif.hu</id>
		<title>Pro-M - Oktatási Üzletág - Wiki - Szerkesztő közreműködései [hu]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.niif.hu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Matteo%28AT%29niif.hu"/>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/Matteo(AT)niif.hu"/>
		<updated>2026-11-07T22:09:46Z</updated>
		<subtitle>Szerkesztő közreműködései</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=NIIFSchema&amp;diff=5058</id>
		<title>NIIFSchema</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=NIIFSchema&amp;diff=5058"/>
				<updated>2025-01-29T11:03:19Z</updated>
		
		<summary type="html">&lt;p&gt;Matteo(AT)niif.hu: /* Attributes of niifAuthenticatedObject */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NIIF LDAP Schema =&lt;br /&gt;
&lt;br /&gt;
== Versioning ==&lt;br /&gt;
Current version: '''2.3'''&lt;br /&gt;
&lt;br /&gt;
=== Change log ===&lt;br /&gt;
* changes in 2.3&lt;br /&gt;
** extend [[#niifAuthenticatedObject]] with [[#niifValidityStart]] and [[#niifExpireTime]] attributes&lt;br /&gt;
&lt;br /&gt;
* changes since 2.1b2&lt;br /&gt;
** add [[#niifAuthenticatedObject]] and its [[#niifEduroamPassword]]&lt;br /&gt;
&lt;br /&gt;
* changes since 2.1b1&lt;br /&gt;
** updated schema files&lt;br /&gt;
&lt;br /&gt;
* changes since 2.0b5&lt;br /&gt;
** add [[#niifCertificateSHA1Fingerprint]]&lt;br /&gt;
** add [[#niifEduPersonArchiveCourse]]&lt;br /&gt;
** add [[#niifEduPersonHeldCourse]]&lt;br /&gt;
** mark [[#niifCertificateSubjectDN]] as obsolete&lt;br /&gt;
&lt;br /&gt;
= Schema files =&lt;br /&gt;
* Sun DS format: [[Kép:99-niifschema.ldif|NIIF-SunDS.schema]]&lt;br /&gt;
* OpenLDAP format: [[Kép:NIIF-OpenLDAP.schema|NIIF-OpenLDAP.schema]]&lt;br /&gt;
* [[Kép:niifAuthentication.ldif]]&lt;br /&gt;
&lt;br /&gt;
= ObjectClasses =&lt;br /&gt;
== niifPerson ==&lt;br /&gt;
{{LDAPObjectClassDef|name=niifPerson&lt;br /&gt;
|parent=inetOrgPerson&lt;br /&gt;
|OID=1.3.6.1.4.1.11914.0.0.0&lt;br /&gt;
|optional=&lt;br /&gt;
* [[#niifPersonPrefix]]&lt;br /&gt;
* [[#niifPersonDegree]]&lt;br /&gt;
* [[#niifPersonPosition]]&lt;br /&gt;
* &amp;lt;strike&amp;gt;[[#niifPrefix]]&amp;lt;/strike&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;[[#niifStatus]]&amp;lt;/strike&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;[[#niifTitle]]&amp;lt;/strike&amp;gt;&lt;br /&gt;
* &amp;lt;strike&amp;gt;[[#niifCertificateSubjectDN]]&amp;lt;/strike&amp;gt;&lt;br /&gt;
* [[#niifPersonDateOfBirth]]&lt;br /&gt;
* [[#niifPersonActivityStatus]]&lt;br /&gt;
* [[#niifActiveMemberOf]]&lt;br /&gt;
* [[#niifPersonJoinDate]]&lt;br /&gt;
* [[#niifPersonQuitDate]]&lt;br /&gt;
* [[#niifPersonOrgID]]&lt;br /&gt;
* [[#niifPersonCityOfBirth]]&lt;br /&gt;
* [[#niifPersonCountryOfBirth]]&lt;br /&gt;
* [[#niifPersonMothersName]]&lt;br /&gt;
* [[#niifPersonIdentityNumber]]&lt;br /&gt;
* [[#niifPersonResidentalAddress]]&lt;br /&gt;
* [[#niifUniqueId]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== niifEduPerson ==&lt;br /&gt;
{{LDAPObjectClassDef|name=niifEduPerson&lt;br /&gt;
|parent=eduPerson&lt;br /&gt;
|OID=1.3.6.1.4.1.11914.0.0.9&lt;br /&gt;
|optional=&lt;br /&gt;
* [[#niifEduPersonFaculty]]&lt;br /&gt;
* [[#niifEduPersonFacultyDN]]&lt;br /&gt;
* [[#niifEduPersonMajor]]&lt;br /&gt;
* [[#niifEduPersonAcademicYear]]&lt;br /&gt;
* [[#niifEduPersonAttendedCourse]]&lt;br /&gt;
* [[#niifEduPersonArchiveCourse]]&lt;br /&gt;
* [[#niifEduPersonHeldCourse]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== niifAuthenticatedObject ==&lt;br /&gt;
{{LDAPObjectClassDef&lt;br /&gt;
|name=niifAuthenticatedObject&lt;br /&gt;
|OID=1.3.6.1.4.1.11914.0.0.10&lt;br /&gt;
|description=An object having extra passwords or time-limited validity&lt;br /&gt;
|optional=&lt;br /&gt;
* [[#niifEduroamPassword]]&lt;br /&gt;
* [[#niifValidityStart]]&lt;br /&gt;
* [[#niifExpireTime]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Defined attributes =&lt;br /&gt;
&lt;br /&gt;
== Attributes of niifPerson ==&lt;br /&gt;
&lt;br /&gt;
=== niifUniqueID ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifUniqueID&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.3&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|availability= organizational&lt;br /&gt;
|description= Unique ID of a person.&lt;br /&gt;
&lt;br /&gt;
|semantics=&amp;lt;unique-local-ID&amp;gt;@&amp;lt;organization-domain&amp;gt;&lt;br /&gt;
The &amp;lt;organization-domain&amp;gt; part equals to the main internet domain of the organization (i.e.: 'sztaki.hu').&lt;br /&gt;
The &amp;lt;unique-local-ID&amp;gt; part is a sequence of letters (case insensitive) and numbers. It can be freely chosen by the home organization provided that the ID is unique within the scope of the organization and one and only one ID is assigned to every single person.&lt;br /&gt;
&lt;br /&gt;
|notes=It is up to the local policy to define how the &amp;lt;unique-local-ID&amp;gt; is generated and how long does it represent a user. However, assigning the same ID to another person (after the first person entry has been removed from the directory) is deprecated.&lt;br /&gt;
It is recommended to import the user ID into &amp;lt;unique-local-ID&amp;gt; from a comprehensive user database (like Neptun and ETR at Hungarian Universities) if such a database exists.&lt;br /&gt;
&lt;br /&gt;
|example=gmx3f0@bme.hu&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPrefix ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPrefix&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.0&lt;br /&gt;
|description= '''OBSOLETED''', use [[#niifPersonPrefix]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonPrefix ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonPrefix&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.165&lt;br /&gt;
|description= Prefix of the person's name&lt;br /&gt;
|semantics= A name should have only one prefix, multiple entitlements may be listed one after the other in the same value&lt;br /&gt;
|numofvalues=single&lt;br /&gt;
|availability=public&lt;br /&gt;
|example=Prof. Dr.&lt;br /&gt;
|useinfederation=[[HREFAttributeSpec#schacPersonalTitle]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifStatus ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifStatus&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.1&lt;br /&gt;
|description= '''OBSOLETED''', use [[#niifPersonDegree]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonDegree ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonDegree&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.166&lt;br /&gt;
|description= Scientific degree of the person&lt;br /&gt;
|semantics= Only the highest degree should be stored. &lt;br /&gt;
|notes= May be specified in multiple languages by the use of language tags&lt;br /&gt;
|availability= public&lt;br /&gt;
|example= kandidátus&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifTitle===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifTitle&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.2&lt;br /&gt;
|description= '''OBSOLETED''', use [[#niifPersonPosition]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonPosition ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonPosition&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.167&lt;br /&gt;
|description= Position of the person within a department or organization&lt;br /&gt;
|example= dékán&lt;br /&gt;
|notes= May be specified in multiple languages by the use of language tags. &lt;br /&gt;
When a person is in relationship with multiple departments or organizations, no exact match between a status and a particular organization can be defined within an entry. To solve this situation, some relation-representing entry may be used, eg. use of the schacPersonalPosition attribute, which defines an URN format for this purpose.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifCertificateSubjectDN ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifCertificateSubjectDN&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.151&lt;br /&gt;
|description= Subject DN of the certificate of the entity. This attribute is '''OBSOLETED''', use [[#niifCertificateSHA1Fingerprint]] instead.&lt;br /&gt;
|semantics= The value must describe a DN which identifies the certificate subject of the entity. &lt;br /&gt;
|values= Unlike standard LDAP DN, this value must contain the same number of spaces between DN elements as it is tied in the certificate.&lt;br /&gt;
|example= cn=Bajnok Kristóf, ou=ITAK, o=Sztaki, c=HU&lt;br /&gt;
|notes= Although it is possible for an entity to have more than one certificates at the same time, this kind of usage is deprecated.&lt;br /&gt;
When used, this attribute must be indexed.&lt;br /&gt;
This attribute may be applied to any kind of entities that can be certified with an X.509 certificate, including persons, servers, network nodes, etc.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifCertificateSHA1Fingerprint ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifCertificateSHA1Fingerprint&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.173&lt;br /&gt;
|description= Fingerprint of a certificate which belongs to the subject.&lt;br /&gt;
|semantics= Multiple fingerprints may be stored in this attribute, if a subject has multiple valid certificates. This attribute uses case insensitive matching rule.&lt;br /&gt;
|values= SHA-1 hash in hexadecimal string format without any separator characters.&lt;br /&gt;
|example= fe6d5980e2c02912024054cec114ee53ebeb2e6c&lt;br /&gt;
|numofvalues= multi&lt;br /&gt;
|syntax= IA5String&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonDateOfBirth ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonDateOfBirth&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.152&lt;br /&gt;
|values= YYYYMMDD date format according to RFC 3339 'full-date' format&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|description= Date of birth of the person&lt;br /&gt;
|availability= confidential&lt;br /&gt;
|useinfederation=[[HREFAttributeSpec#schacDateOfBirth]],[[HREFAttributeSpec#schacYearOfBirth]]&lt;br /&gt;
|notes= It's recommended to use the schacDateOfBirth attribute instead, as it has the same syntax and semantics.&lt;br /&gt;
|example= 19800316&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonActivityStatus ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonActivityStatus&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.153&lt;br /&gt;
|description= Activity status&lt;br /&gt;
|semantics= Describes whether the person is an active employee/student of the home organization&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|values= One of the term 'active' or 'inactive'&lt;br /&gt;
|availability= organizational&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifActiveMemberOf ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifActiveMemberOf&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.168&lt;br /&gt;
|description= DN of a group entry to which the entity currently belongs.&lt;br /&gt;
|notes= As a special case, this attribute may be used to keep a record of a student's active major(s), but it's recommended to use [[#niifEduPersonMajor]] instead.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonJoinDate ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonJoinDate&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.169&lt;br /&gt;
|description= Date of joining to the organization&lt;br /&gt;
|semantics= Date of joining to the organization. For students it may represent the first date of enrollment.&lt;br /&gt;
|syntax= Integer&lt;br /&gt;
|values= YYYYMMDD date format according to RFC 3339 'full-date' format&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|availability= organizational&lt;br /&gt;
|example= 19980901&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonQuitDate ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonQuitDate&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.170&lt;br /&gt;
|syntax= Integer&lt;br /&gt;
|description= Date of leaving the organization&lt;br /&gt;
|values= YYYYMMDD date format according to RFC 3339 'full-date' format.&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|notes= If this date is in the past, niifPersonActivityStatus must be 'inactive', and the user should be locked out.&lt;br /&gt;
|availability= organizational&lt;br /&gt;
|example= 20030627&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonOrgID ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonOrgID&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.154&lt;br /&gt;
|description= Organizational ID of a person&lt;br /&gt;
|semantics= ID of a person in a comprehensive organizational user database if such a database exists. This ID shall be unique within the organization.&lt;br /&gt;
It is strongly recommended to use the &amp;lt;unique-local-ID&amp;gt; part of the niifUniqueID as a value for niifPersonOrgID.&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|values= For integration with niifUniqueID, value must not contain the '@' mark.&lt;br /&gt;
|notes= It is recommended to import the user ID into &amp;lt;unique-local-ID&amp;gt; from a comprehensive user database (like Neptun and ETR at Hungarian Universities) if such a database exists.&lt;br /&gt;
This attribute is for facilitating the use of user ID's in intra-organizational applications in cases when standard uid attribute can not be applied for some reason.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonCityOfBirth ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonCityOfBirth&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.155&lt;br /&gt;
|description= The city or settlement where the person was born&lt;br /&gt;
|semantics= Name of the city or settlement where the person was born. If the place of birth is outside the borders of Hungary, the name may be given in Hungarian.&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|availability= confidential&lt;br /&gt;
|example= Kolozsvár&lt;br /&gt;
|notes= It's recommended to use the schacPlaceOfBirth attribute instead.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonCountryOfBirth ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonCountryOfBirth&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.156&lt;br /&gt;
|description= The country where the person was born&lt;br /&gt;
|semantics= Name of the country where the person was born. If the place of birth is outside the borders of Hungary, the name must be given in Hungarian.&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|availability= confidential&lt;br /&gt;
|example= Románia&lt;br /&gt;
|notes= It's recommended to use the schacPlaceOfBirth attribute instead.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonMothersName ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonMothersName&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.157&lt;br /&gt;
|description= Name of the mother of the person&lt;br /&gt;
|semantics= Maiden name of the mother of the person.&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|availability= confidential&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonIdentityNumber ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonIdentityNumber&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.158&lt;br /&gt;
|description= Number of the Identity Card&lt;br /&gt;
|semantics= Number of the Identity Card of the person or Passport Number for those who are non-Hungarian citizens&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|availability= confidential&lt;br /&gt;
|example= 329906AA&lt;br /&gt;
|notes= Every Hungarian citizen by the age of 14 receives an Identity Card. For foreigners, Passport Number should be used. This number should never be made public.&lt;br /&gt;
Format of the code may vary as numbering scheme has been changed in the recent years.&lt;br /&gt;
It's recommended to use the URN-formatted schacPersonalUniqueID attribute instead.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifPersonResidentialAddress ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifPersonResidentialAddress&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.159&lt;br /&gt;
|description= Home address of the person&lt;br /&gt;
|semantics= Permanent home address of the person. The postal code, the name of the city, street and apartment number shall be included.&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|availability= confidential&lt;br /&gt;
|example= 1234 Budapest, Harap u. 3.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Attributes of niifEduPerson ==&lt;br /&gt;
&lt;br /&gt;
=== niifEduPersonFaculty ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifEduPersonFaculty&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.160&lt;br /&gt;
|description= Faculty of the person&lt;br /&gt;
|semantics= Full name of the faculty the person belongs to. List of accredited faculties can be found here (in institutional order): http://www.mab.hu/doc/akkrint040106.doc (in Hungarian)&lt;br /&gt;
|availability= organizational&lt;br /&gt;
|example= Villamosmérnöki és Informatikai Kar&lt;br /&gt;
|notes= Local directory policy may mark this attribute as mandatory.&lt;br /&gt;
It is recommended if an LDAP entry has niifEduPersonFaculty attribute set, it should also have an eduPersonFacultyDN attribute pointing to the entry of the faculty.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifEduPersonFacultyDN ===&lt;br /&gt;
{{LDAPAttributeDef|name=niifEduPersonFacultyDN&lt;br /&gt;
|OID=1.3.6.1.4.1.11914.0.1.161&lt;br /&gt;
|description= Pointer to the faculty of the person&lt;br /&gt;
|semantics= DN of the faculty the person belongs to. It is recommended that faculties are placed under the ou=Units branch under the root suffix of the organization.&lt;br /&gt;
|syntax= DN&lt;br /&gt;
|availability= organizational&lt;br /&gt;
|example= ou=VIK,ou=Units,o=BME,c=HU&lt;br /&gt;
|notes= This attribute has a meaning only if the person participates in education (eduPersonAffiliation=student or faculty)&lt;br /&gt;
Local directory policy may mark this attribute as mandatory.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifEduPersonMajor ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifEduPersonMajor&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.162&lt;br /&gt;
|description= Major(s) of the student&lt;br /&gt;
|semantics= Majors are defined at http://www.mab.hu/listak2.html (in Hungarian)&lt;br /&gt;
|availability= organizational&lt;br /&gt;
|example= műszaki informatikai&lt;br /&gt;
|notes= This attribute has a meaning only if the person is a student (eduPersonAffiliation=student)&lt;br /&gt;
Local directory policy may mark this attribute as mandatory for students.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifEduPersonAcademicYear ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifEduPersonAcademicYear&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.163&lt;br /&gt;
|description= Current academic year of the student. This attribute is '''DEPRECATED'''.&lt;br /&gt;
|values= Integer numbers from 1 to the number of years required for graduation&lt;br /&gt;
|availability= confidential&lt;br /&gt;
|notes= This attribute has a meaning only if the person is a student (eduPersonAffiliation = student)&lt;br /&gt;
It is unclear that if a student has more than one majors, the number of which should be stored in this attribute and how a connection between major and year can be set up. As the concept of academic year gets lesser important (and not well-defined), depending on the value of this attribute is deprecated.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifEduPersonAttendedCourse ===&lt;br /&gt;
{{LDAPAttributeDef|name=niifEduPersonAttendedCourse&lt;br /&gt;
|OID=1.3.6.1.4.1.11914.0.1.164&lt;br /&gt;
|description= Code of the courses the student attends to in the current semester&lt;br /&gt;
|values= Course codes defined in the student calendar.&lt;br /&gt;
|example=&lt;br /&gt;
* BMEVIMM1234&lt;br /&gt;
* BMEVIMA3214&lt;br /&gt;
|notes= This attribute has a meaning only if the person is a student (eduPersonAffiliation = student), and the values should be taken from the student calendar.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifEduPersonArchiveCourse ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifEduPersonArchiveCourse&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.171&lt;br /&gt;
|description= Code of the courses the student have ever attended&lt;br /&gt;
|values= Course codes defined in the student calendar.&lt;br /&gt;
|notes= This attribute has a meaning only if the person is a student (eduPersonAffiliation = student), and the values should be taken from the student calendar.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifEduPersonHeldCourse ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name= niifEduPersonHeldCourse&lt;br /&gt;
|OID= 1.3.6.1.4.1.11914.0.1.172&lt;br /&gt;
|description= Code of the courses which are associated with the faculty member or professor in the current semester.&lt;br /&gt;
|values= Course codes defined in the student calendar.&lt;br /&gt;
|notes= This attribute has a meaning only if the person is a faculty (eduPersonAffiliation = faculty), the values should be taken from the student calendar.&lt;br /&gt;
For authorization decision reasons, courses from previous semester(s) might appear in this attribute if the local policy needs these additional values.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Attributes of niifAuthenticatedObject ==&lt;br /&gt;
&lt;br /&gt;
=== niifEduroamPassword ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name=niifEduroamPassword&lt;br /&gt;
|OID=1.3.6.1.4.1.11914.0.1.4&lt;br /&gt;
|description=Clear text password for eduroam authentication&lt;br /&gt;
|notes=SUP userPassword&lt;br /&gt;
|syntax=Octet String&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifValidityStart ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name=niifValidityStart&lt;br /&gt;
|OID=1.3.6.1.4.1.11914.0.1.5&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|description=When to enable this account&lt;br /&gt;
|syntax=Generalized Time&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifExpireTime ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name=niifExpireTime&lt;br /&gt;
|OID=1.3.6.1.4.1.11914.0.1.6&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|description=When to disable this account&lt;br /&gt;
|syntax=Generalized Time&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== niifEduroamVLANID ===&lt;br /&gt;
{{LDAPAttributeDef&lt;br /&gt;
|name=niifEduroamVLANID&lt;br /&gt;
|OID=1.3.6.1.4.1.11914.0.1.7&lt;br /&gt;
|numofvalues= single&lt;br /&gt;
|description=VLAN ID for eduroam&lt;br /&gt;
|syntax=Numeric String&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Matteo(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Harica&amp;diff=5054</id>
		<title>Harica</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Harica&amp;diff=5054"/>
				<updated>2025-01-22T15:28:02Z</updated>
		
		<summary type="html">&lt;p&gt;Matteo(AT)niif.hu: /* Magyarázat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Harica =&lt;br /&gt;
= Egy gyakori probléma =&lt;br /&gt;
&lt;br /&gt;
A HARICA rendszerében a felhasználói fiók létrehozása nem sikerül, mert az Identity Provider (IdP) nem biztosítja a szükséges attribútumokat a Service Provider (SP) részére. A hibaüzenet a következő:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Your Identity Provider (IdP) does not provide HARICA with the appropriate info (attributes) for your account. Please contact your IdP to fix this issue.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A megoldáshoz szükséges attribútumok listája a következő:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Attribútum || OID || Kötelező&lt;br /&gt;
|-&lt;br /&gt;
| eduPersonTargetedID || urn:oid:1.3.6.1.4.1.5923.1.1.1.10 || Igen&lt;br /&gt;
|-&lt;br /&gt;
| givenName || urn:oid:2.5.4.42 || Igen&lt;br /&gt;
|-&lt;br /&gt;
| mail || urn:oid:0.9.2342.19200300.100.1.3 || Igen&lt;br /&gt;
|-&lt;br /&gt;
| surname || urn:oid:2.5.4.4 || Igen&lt;br /&gt;
|-&lt;br /&gt;
| displayName || urn:oid:2.16.840.1.113730.3.1.241 || Nem&lt;br /&gt;
|-&lt;br /&gt;
| eduPersonEntitlement || urn:oid:1.3.6.1.4.1.5923.1.1.1.7 || Nem&lt;br /&gt;
|-&lt;br /&gt;
| eduPersonOrgUnitDN || urn:oid:1.3.6.1.4.1.5923.1.1.1.3 || Nem&lt;br /&gt;
|-&lt;br /&gt;
| eduPersonPrimaryAffiliation || urn:oid:1.3.6.1.4.1.5923.1.1.1.5 || Nem&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Megoldás ==&lt;br /&gt;
&lt;br /&gt;
Az attribútumok kezelésére a [[https://github.com/NIIF/simplesamlphp-module-attributelimit| NIIF SimpleSAMLphp AttributeLimit ]] modul  került használatra. Az alábbi konfiguráció az authproc szekcióban biztosítja, hogy a szükséges attribútumok átadásra kerüljenek a HARICA SP-jeinek.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguráció ===&lt;br /&gt;
&lt;br /&gt;
Az alábbi beállításokat add hozzá ahhoz a filehoz ahol az authproc történik, pl saml20-idp-hosted.php:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    10 =&amp;gt; [&lt;br /&gt;
        'class' =&amp;gt; 'attributelimit:AttributeLimit',&lt;br /&gt;
        'https://www.harica.gr/simplesamlphp/module.php/saml/sp/metadata.php/pki-grnet-sp' =&amp;gt; [&lt;br /&gt;
            'urn:oid:0.9.2342.19200300.100.1.3', // mail&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', // eduPersonPrincipalName&lt;br /&gt;
            'urn:oid:2.5.4.42', // givenName&lt;br /&gt;
            'urn:oid:2.5.4.4', // surname (sn)&lt;br /&gt;
            'urn:oid:2.16.840.1.113730.3.1.241', // displayName&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.25178.1.2.9', // schacHomeOrganization&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', // eduPersonTargetedId&lt;br /&gt;
        ],&lt;br /&gt;
        'https://cm-stg.harica.gr/simplesamlphp/module.php/saml/sp/metadata.php/harica-cm-stg-sp' =&amp;gt; [&lt;br /&gt;
            'urn:oid:0.9.2342.19200300.100.1.3', // mail&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', // eduPersonPrincipalName&lt;br /&gt;
            'urn:oid:2.5.4.42', // givenName&lt;br /&gt;
            'urn:oid:2.5.4.4', // surname (sn)&lt;br /&gt;
            'urn:oid:2.16.840.1.113730.3.1.241', // displayName&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.25178.1.2.9', // schacHomeOrganization&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', // eduPersonTargetedId&lt;br /&gt;
        ],&lt;br /&gt;
    ],&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Magyarázat ===&lt;br /&gt;
1. Az `authproc` szekcióban a `attributelimit` modul segítségével szabályozzuk, hogy mely attribútumok kerüljenek továbbításra az SP részére.&lt;br /&gt;
&lt;br /&gt;
2. Az egyes SP-khez tartozó attribútumokat külön definiáljuk az SP metaadat URL alapján.&lt;br /&gt;
&lt;br /&gt;
3. Az attribútumokat az OID alapján adjuk meg, például:  &lt;br /&gt;
   - `urn:oid:0.9.2342.19200300.100.1.3` a **mail** attribútumot jelenti.&lt;br /&gt;
&lt;br /&gt;
== Ellenőrzés ==&lt;br /&gt;
&lt;br /&gt;
Jelentkezz be az IdP-n keresztül, és ellenőrizd, például saml tracer segítségével hogy átadásra kerülnek e a kötelező attribútumok.&lt;br /&gt;
&lt;br /&gt;
== Egyéb megoldás ==&lt;br /&gt;
&lt;br /&gt;
Amennyiben az idp-nk nem simplesamlphp vagy nem szeretnénk az attributelimit modult használni, más módon kell rábírni az IdP-t a kötelező attribútumok kiadására.&lt;/div&gt;</summary>
		<author><name>Matteo(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Harica&amp;diff=5053</id>
		<title>Harica</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Harica&amp;diff=5053"/>
				<updated>2025-01-22T15:27:08Z</updated>
		
		<summary type="html">&lt;p&gt;Matteo(AT)niif.hu: Új oldal, tartalma: „= Harica = = Egy gyakori probléma =  A HARICA rendszerében a felhasználói fiók létrehozása nem sikerül, mert az Identity Provider (IdP) nem biztosítja a szüks…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Harica =&lt;br /&gt;
= Egy gyakori probléma =&lt;br /&gt;
&lt;br /&gt;
A HARICA rendszerében a felhasználói fiók létrehozása nem sikerül, mert az Identity Provider (IdP) nem biztosítja a szükséges attribútumokat a Service Provider (SP) részére. A hibaüzenet a következő:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Your Identity Provider (IdP) does not provide HARICA with the appropriate info (attributes) for your account. Please contact your IdP to fix this issue.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A megoldáshoz szükséges attribútumok listája a következő:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Attribútum || OID || Kötelező&lt;br /&gt;
|-&lt;br /&gt;
| eduPersonTargetedID || urn:oid:1.3.6.1.4.1.5923.1.1.1.10 || Igen&lt;br /&gt;
|-&lt;br /&gt;
| givenName || urn:oid:2.5.4.42 || Igen&lt;br /&gt;
|-&lt;br /&gt;
| mail || urn:oid:0.9.2342.19200300.100.1.3 || Igen&lt;br /&gt;
|-&lt;br /&gt;
| surname || urn:oid:2.5.4.4 || Igen&lt;br /&gt;
|-&lt;br /&gt;
| displayName || urn:oid:2.16.840.1.113730.3.1.241 || Nem&lt;br /&gt;
|-&lt;br /&gt;
| eduPersonEntitlement || urn:oid:1.3.6.1.4.1.5923.1.1.1.7 || Nem&lt;br /&gt;
|-&lt;br /&gt;
| eduPersonOrgUnitDN || urn:oid:1.3.6.1.4.1.5923.1.1.1.3 || Nem&lt;br /&gt;
|-&lt;br /&gt;
| eduPersonPrimaryAffiliation || urn:oid:1.3.6.1.4.1.5923.1.1.1.5 || Nem&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Megoldás ==&lt;br /&gt;
&lt;br /&gt;
Az attribútumok kezelésére a [[https://github.com/NIIF/simplesamlphp-module-attributelimit| NIIF SimpleSAMLphp AttributeLimit ]] modul  került használatra. Az alábbi konfiguráció az authproc szekcióban biztosítja, hogy a szükséges attribútumok átadásra kerüljenek a HARICA SP-jeinek.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguráció ===&lt;br /&gt;
&lt;br /&gt;
Az alábbi beállításokat add hozzá ahhoz a filehoz ahol az authproc történik, pl saml20-idp-hosted.php:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    10 =&amp;gt; [&lt;br /&gt;
        'class' =&amp;gt; 'attributelimit:AttributeLimit',&lt;br /&gt;
        'https://www.harica.gr/simplesamlphp/module.php/saml/sp/metadata.php/pki-grnet-sp' =&amp;gt; [&lt;br /&gt;
            'urn:oid:0.9.2342.19200300.100.1.3', // mail&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', // eduPersonPrincipalName&lt;br /&gt;
            'urn:oid:2.5.4.42', // givenName&lt;br /&gt;
            'urn:oid:2.5.4.4', // surname (sn)&lt;br /&gt;
            'urn:oid:2.16.840.1.113730.3.1.241', // displayName&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.25178.1.2.9', // schacHomeOrganization&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', // eduPersonTargetedId&lt;br /&gt;
        ],&lt;br /&gt;
        'https://cm-stg.harica.gr/simplesamlphp/module.php/saml/sp/metadata.php/harica-cm-stg-sp' =&amp;gt; [&lt;br /&gt;
            'urn:oid:0.9.2342.19200300.100.1.3', // mail&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', // eduPersonPrincipalName&lt;br /&gt;
            'urn:oid:2.5.4.42', // givenName&lt;br /&gt;
            'urn:oid:2.5.4.4', // surname (sn)&lt;br /&gt;
            'urn:oid:2.16.840.1.113730.3.1.241', // displayName&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.25178.1.2.9', // schacHomeOrganization&lt;br /&gt;
            'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', // eduPersonTargetedId&lt;br /&gt;
        ],&lt;br /&gt;
    ],&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Magyarázat ===&lt;br /&gt;
1. Az `authproc` szekcióban a `attributelimit` modul segítségével szabályozzuk, hogy mely attribútumok kerüljenek továbbításra az SP részére.&lt;br /&gt;
2. Az egyes SP-khez tartozó attribútumokat külön definiáljuk az SP metaadat URL alapján.&lt;br /&gt;
3. Az attribútumokat az OID alapján adjuk meg, például:&lt;br /&gt;
   - `urn:oid:0.9.2342.19200300.100.1.3` a **mail** attribútumot jelenti.&lt;br /&gt;
&lt;br /&gt;
== Ellenőrzés ==&lt;br /&gt;
&lt;br /&gt;
Jelentkezz be az IdP-n keresztül, és ellenőrizd, például saml tracer segítségével hogy átadásra kerülnek e a kötelező attribútumok.&lt;br /&gt;
&lt;br /&gt;
== Egyéb megoldás ==&lt;br /&gt;
&lt;br /&gt;
Amennyiben az idp-nk nem simplesamlphp vagy nem szeretnénk az attributelimit modult használni, más módon kell rábírni az IdP-t a kötelező attribútumok kiadására.&lt;/div&gt;</summary>
		<author><name>Matteo(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5041</id>
		<title>SSP2</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5041"/>
				<updated>2024-08-13T09:49:53Z</updated>
		
		<summary type="html">&lt;p&gt;Matteo(AT)niif.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Az alábbi lapon megkíséreljük összefoglalni a legfontosabb lépéseket, melyek általános esetben elegendőek ahhoz, hogy működő SimpleSAMLphp (SSP) alkalmazást állítsunk üzembe.&lt;br /&gt;
&lt;br /&gt;
==Telepítés==&lt;br /&gt;
Először is nagyvonalakban leírásra kerülnek az előkészületek ezt követően pedig maga a szoftver telepítése és beállítása.&lt;br /&gt;
===Előkészületek===&lt;br /&gt;
Ahhoz, hogy problémamentesen telepíthessük SSP alkalmazásunkat, az alábbi szoftverkomponenseknek kell működniük szerverünkön.&lt;br /&gt;
* A következő könyvtárakat kiegészítőket telepíteni kell:  &amp;lt;code&amp;gt;wget openssl unzip build-essential libldap2-dev libldap-common&amp;lt;/code&amp;gt;&lt;br /&gt;
* PHP futtatására alkalmas webszerver&lt;br /&gt;
* PHP környezet (&amp;gt;=8.0)&lt;br /&gt;
* A következő PHP kiterjesztéseket engedélyezni kell&lt;br /&gt;
** &amp;lt;code&amp;gt;posix, date , dom , fileinfo , filter , hash , json , libxml , mbstring , openssl , pcre , session , simplexml , sodium , SPL, zlib, ldap&amp;lt;/code&amp;gt;&lt;br /&gt;
** Adatbázisból történő autentikáció esetén a megfelelő adatbázis-csatolót &amp;lt;code&amp;gt;mysqli, pdo, pdo_mysql&amp;lt;/code&amp;gt;&lt;br /&gt;
** RADIUS szerveren keresztül történő autentikáció esetén: &amp;lt;code&amp;gt;radius&amp;lt;/code&amp;gt;&lt;br /&gt;
* Információk, certek:&lt;br /&gt;
** Bár a szoftver képes futni mariadb, és redis nélkül, ezek vagy hasonló megoldások használata éles környezetben ajánlott.&lt;br /&gt;
*** Amennyiben ezeket szándékozunk használni database connection stringgel kell rendelkezni, redis elérhetőséggel és jelszóval rendelkezni.&lt;br /&gt;
*** Az adatbázis szerkezetének kialakítása a használt moduloktól függ, a leggyakoribb a consent modul, ott van is dokumentáció az adatbázis inicializálásáról.&lt;br /&gt;
&lt;br /&gt;
** Szükséges 2 certpár, az egyik az apachenak a másik az SSP-nek ezutóbbi lehet önalárírt, és nem ajánlott ugyan azt használni.&lt;br /&gt;
&lt;br /&gt;
====Composer====&lt;br /&gt;
&lt;br /&gt;
A '''[https://getcomposer.org composer]''' PHP csomagkezelőt is telepíteni kell (akár forrásból, akár csomagból), hogy telepíteni lehessen a SimpleSAMLphp futásához szükséges PHP library-ket.&lt;br /&gt;
&lt;br /&gt;
===Telepítés===&lt;br /&gt;
Elvégezhető composerrel például a &amp;lt;code&amp;gt;/var/&amp;lt;/code&amp;gt; mappában:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;composer create-project simplesamlphp/simplesamlphp:2.1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mappaszerkezet módosítása:&lt;br /&gt;
&lt;br /&gt;
 mv simplesamlphp simplesamlphp-prod #Tetszőleges átnevezés&lt;br /&gt;
 mkdir -p simplesamlphp-prod/cert&lt;br /&gt;
 mkdir -p /var/simplesamlphp-prod/log/stats/&lt;br /&gt;
 mkdir -p /var/simplesamlphp-prod/mdx-cache/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/mdx-cache/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/log/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/metadata/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Composerrel a szükséges modulok telepítése (például LDAP, REDIS, vagy consent):&lt;br /&gt;
&lt;br /&gt;
 composer require simplesamlphp/simplesamlphp-module-ldap:v2.3.2&lt;br /&gt;
 composer require predis/predis:2.2.2&lt;br /&gt;
 composer require simplesamlphp/simplesamlphp-module-consent:1.3.2&lt;br /&gt;
&lt;br /&gt;
Ezzel a telepítés, és a szükséges kiegészítők telepítése megtörtént.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apache konfigurálás===&lt;br /&gt;
&lt;br /&gt;
A webről csak a &amp;lt;code&amp;gt;/var/simplesamlphp-prod/public&amp;lt;/code&amp;gt; könyvtárat kell elérni. '''Tilos''' a teljes simplesamlphp könyvtárat a DocumentRoot alá tenni!&lt;br /&gt;
&lt;br /&gt;
 Alias /simplesaml /var/simplesamlphp-prod/public&lt;br /&gt;
 &amp;lt;Directory /var/simplesamlphp-prod/public&amp;gt;&lt;br /&gt;
   Require all granted&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
===Simplesamlphp Alapbeállítások===&lt;br /&gt;
====Konfigurációs fájlok====&lt;br /&gt;
Amennyiben korábbi verziókat használtunk,&lt;br /&gt;
&lt;br /&gt;
jó megközelítés lehet diff segítségével ellenőrizni a különbségeket a korábbi &amp;lt;code&amp;gt;config.php&amp;lt;/code&amp;gt; fileunk és a &amp;lt;code&amp;gt;config.php.dist&amp;lt;/code&amp;gt; között.&lt;br /&gt;
&lt;br /&gt;
Ha ilyennel nem rendelkezünk akkor lehet rögtön alapul venni a &amp;lt;code&amp;gt;config.php.dist&amp;lt;/code&amp;gt;-et és hasonlóképp a metadata-templates mappát.&lt;br /&gt;
&lt;br /&gt;
====Konfigurációs fájlok szerkesztése====&lt;br /&gt;
&lt;br /&gt;
=====Baseurlpath beállítása=====&lt;br /&gt;
&lt;br /&gt;
- Állítsuk be a baseurlpath opciót. Mutasson a telepítés URL-jére, ahol a SimpleSAMLphp elérhető:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;'baseurlpath' =&amp;gt; 'https://your.canonical.host.name/simplesaml/',&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Adminisztrációs adatok beállítása=====&lt;br /&gt;
&lt;br /&gt;
* '''Az &amp;quot;admin&amp;quot; felhasználó jelszavát, mellyel webes felületen keresztül be tud lépni a települő SSP-be.'''&lt;br /&gt;
 'auth.adminpassword'        =&amp;gt; 'ujjelszotirdide',&lt;br /&gt;
* '''Titkosítási feladatokhoz szükséges &amp;quot;salt&amp;quot;, azaz véletlenszerűen összeálló karaktersorozat'''&lt;br /&gt;
 'secretsalt' =&amp;gt; 'randombytesinsertedhere',&lt;br /&gt;
A karaktersorozat előállításában segíthet az alábbi parancs: &lt;br /&gt;
 tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' &amp;lt;/dev/urandom | dd bs=32 count=1 2&amp;gt;/dev/null;echo&lt;br /&gt;
* '''Elérhetőségeket, amely adatok bekerülnek majd a generált metaadatba'''&lt;br /&gt;
 'technicalcontact_name'     =&amp;gt; 'Gipsz Jakab',&lt;br /&gt;
 'technicalcontact_email'    =&amp;gt; 'jakab.gipsz@example.org',&lt;br /&gt;
* '''Nyelv és időzóna adatok'''&lt;br /&gt;
 'language.default'      =&amp;gt; 'hu',&lt;br /&gt;
 'timezone' =&amp;gt; 'Europe/Budapest',&lt;br /&gt;
&lt;br /&gt;
Az alapadatok megadása után mentsük és zárjuk be a '''config.php'''-t.&lt;br /&gt;
&lt;br /&gt;
=====Naplózás beállítása=====&lt;br /&gt;
&lt;br /&gt;
Alapértelmezetten a SimpleSAMLphp a '''syslog'''-ba irányítja a naplózást.&lt;br /&gt;
&lt;br /&gt;
Ha fájlba akarunk naplózni, akkor a megfelelő könyvtárhoz biztosítsunk írás jogot a webszerver felhasználónak, és ne felejtsünk el gondoskodni a naplófájlok rotálásáról!&lt;br /&gt;
&lt;br /&gt;
* Naplózási szint beállítása a '''config/config.php'''-ban&lt;br /&gt;
 'debug' =&amp;gt; array(&lt;br /&gt;
        'saml' =&amp;gt; true,&lt;br /&gt;
        'backtraces' =&amp;gt; true,&lt;br /&gt;
        'validatexml' =&amp;gt; false,&lt;br /&gt;
 ),&lt;br /&gt;
 'logging.level' =&amp;gt; SimpleSAML\Logger::DEBUG,&lt;br /&gt;
 'logging.handler' =&amp;gt; 'file',&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;A &amp;quot;SimpleSAML\Logger::DEBUG&amp;quot; a legrészletesebb naplózási beállítás, éles rendszernél nem ajánlott csak hiba keresés esetén.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Modulok engedélyezése=====&lt;br /&gt;
 'module.enable' =&amp;gt; [&lt;br /&gt;
  'exampleauth' =&amp;gt; true,&lt;br /&gt;
  'saml' =&amp;gt; false, //&lt;br /&gt;
  'core' =&amp;gt; null, // Alapértelmezett érték&lt;br /&gt;
  'ldap' =&amp;gt; true, // 2.x verzióban külön telepíteni és engedélyezni kell az ldap modult.&lt;br /&gt;
  'admin' =&amp;gt; true, // Ezt szükséges engedélyezni hogy elérhessük az adminisztrációs felületet&lt;br /&gt;
 ],&lt;br /&gt;
&lt;br /&gt;
=====Tanúsítvány készítése=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Nem ajánlott a SimpleSAMLphp-hoz és webszerverhez ugyanazt a tanúsítvány használni!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A SimpleSAMLphp alapértelmezetten a tanúsítványt a '''cert''' mappában keresi.&lt;br /&gt;
&lt;br /&gt;
* Az alábbi paranccsal egy 10 éves [[FedCerts |  self-signed tanúsítvány]] generálunk a SimpleSMALphp számára.&lt;br /&gt;
 openssl req -new -newkey rsa:3072 -x509 -days 3652 -nodes -out cert/saml-example-org.crt -keyout cert/saml-example-org.key&lt;br /&gt;
&lt;br /&gt;
A fingerprint az alábbi módon kérdezhető le a legegyszerűbben&lt;br /&gt;
 openssl x509 -fingerprint -noout -in cert/saml-example-org.crt&lt;br /&gt;
&lt;br /&gt;
===Telepítés kész===&lt;br /&gt;
Amennyiben elkészültünk a fenti lépésekkel, úgy a [https://service.example.org/simplesaml/admin https://service.example.org/simplesaml/admin] címen elérjük a telepített SSP-nk webes adminfelületét.&lt;br /&gt;
&lt;br /&gt;
==Identity Provider (IdP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
'''IdP''' engedélyezése: a '''config/config.php''' fájlban kell a saml20 idp-t &amp;quot;true&amp;quot;-re állítani.&lt;br /&gt;
 'enable.saml20-idp' =&amp;gt; true,&lt;br /&gt;
&lt;br /&gt;
===Metaadat alapok===&lt;br /&gt;
A beállítandó IdP alapvető paraméterei a &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlban állíthatók. Az alábbi kódrészlet egy minimális, de már működő példát mutat.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $metadata['https://example.org/saml-idp'] = [&lt;br /&gt;
    /*&lt;br /&gt;
     * The hostname for this IdP. This makes it possible to run multiple&lt;br /&gt;
     * IdPs from the same configuration. '__DEFAULT__' means that this one&lt;br /&gt;
     * should be used by default.&lt;br /&gt;
     */&lt;br /&gt;
    'host' =&amp;gt; '__DEFAULT__',&lt;br /&gt;
    /*&lt;br /&gt;
     * The private key and certificate to use when signing responses.&lt;br /&gt;
     * These can be stored as files in the cert-directory or retrieved&lt;br /&gt;
     * from a database.&lt;br /&gt;
     */&lt;br /&gt;
    'privatekey' =&amp;gt; 'example.org.pem',&lt;br /&gt;
    'certificate' =&amp;gt; 'example.org.crt',&lt;br /&gt;
    /*&lt;br /&gt;
     * The authentication source which should be used to authenticate the&lt;br /&gt;
     * user. This must match one of the entries in config/authsources.php.&lt;br /&gt;
     */&lt;br /&gt;
    'auth' =&amp;gt; 'example-ldap',&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fentebb hivatkozott certeket korábban létrehoztuk, de az example-ldap auth forrást még nem:&lt;br /&gt;
&lt;br /&gt;
===LDAP autentikáció===&lt;br /&gt;
&lt;br /&gt;
Javasolt az LDAP-ban egy olyan bejegyzést létrehozni az IdP számára, amely olvasni tudja a felhasználóknak a föderációban használt attribútumait. Az azonosítás alapértelmezett módon a felhasználó nevében történő újra bind-olással történik, így a jelszóhoz nem kell hozzáférést adni.&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy megadhassuk az LDAP-hoz tartozó beállításokat, a &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; fájlt kell szerkesztenünk. Az alábbi kódrészletet elegendő beszúrni, és az egyes változóknak a helyi LDAP-nak megfelelő adatokat értékül adni.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
'example-ldap' =&amp;gt; [&lt;br /&gt;
        'ldap:Ldap',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The connection string for the LDAP-server.&lt;br /&gt;
         * You can add multiple by separating them with a space.&lt;br /&gt;
         */&lt;br /&gt;
        'connection_string' =&amp;gt; 'ldap.example.org',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Whether SSL/TLS should be used when contacting the LDAP server.&lt;br /&gt;
         * Possible values are 'ssl', 'tls' or 'none'&lt;br /&gt;
         */&lt;br /&gt;
        'encryption' =&amp;gt; 'ssl',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The LDAP version to use when interfacing the LDAP-server.&lt;br /&gt;
         * Defaults to 3&lt;br /&gt;
         */&lt;br /&gt;
        'version' =&amp;gt; 3,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Set to TRUE to enable LDAP debug level. Passed to the LDAP connector class.&lt;br /&gt;
         *&lt;br /&gt;
         * Default: FALSE&lt;br /&gt;
         * Required: No&lt;br /&gt;
         */&lt;br /&gt;
        'debug' =&amp;gt; false,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The LDAP-options to pass when setting up a connection&lt;br /&gt;
         * See [Symfony documentation]&lt;br /&gt;
         */&lt;br /&gt;
        'options' =&amp;gt; [&lt;br /&gt;
            /**&lt;br /&gt;
             * Set whether to follow referrals.&lt;br /&gt;
             * AD Controllers may require 0x00 to function.&lt;br /&gt;
             * Possible values are 0x00 (NEVER), 0x01 (SEARCHING),&lt;br /&gt;
             *   0x02 (FINDING) or 0x03 (ALWAYS).&lt;br /&gt;
             */&lt;br /&gt;
            'referrals' =&amp;gt; 0x00,&lt;br /&gt;
&lt;br /&gt;
            'network_timeout' =&amp;gt; 3,&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The connector to use.&lt;br /&gt;
         * Defaults to '\SimpleSAML\Module\ldap\Connector\Ldap', but can be set&lt;br /&gt;
         * to '\SimpleSAML\Module\ldap\Connector\ActiveDirectory' when&lt;br /&gt;
         * authenticating against Microsoft Active Directory. This will&lt;br /&gt;
         * provide you with more specific error messages.&lt;br /&gt;
         */&lt;br /&gt;
        'connector' =&amp;gt; '\SimpleSAML\Module\ldap\Connector\Ldap',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Which attributes should be retrieved from the LDAP server.&lt;br /&gt;
         * This can be an array of attribute names, or NULL, in which case&lt;br /&gt;
         * all attributes are fetched.&lt;br /&gt;
         */&lt;br /&gt;
        'attributes' =&amp;gt; null,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Which attributes should be base64 encoded after retrieval from&lt;br /&gt;
         * the LDAP server.&lt;br /&gt;
         */&lt;br /&gt;
        'attributes.binary' =&amp;gt; [&lt;br /&gt;
            'jpegPhoto',&lt;br /&gt;
            'objectGUID',&lt;br /&gt;
            'objectSid',&lt;br /&gt;
            'mS-DS-ConsistencyGuid'&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The pattern which should be used to create the user's DN given&lt;br /&gt;
         * the username. %username% in this pattern will be replaced with&lt;br /&gt;
         * the user's username.&lt;br /&gt;
         *&lt;br /&gt;
         * This option is not used if the search.enable option is set to TRUE.&lt;br /&gt;
         */&lt;br /&gt;
        'dnpattern' =&amp;gt; 'uid=%username%,ou=people,dc=example,dc=org',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * As an alternative to specifying a pattern for the users DN, it is&lt;br /&gt;
         * possible to search for the username in a set of attributes. This is&lt;br /&gt;
         * enabled by this option.&lt;br /&gt;
         */&lt;br /&gt;
        'search.enable' =&amp;gt; false,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * An array on DNs which will be used as a base for the search. In&lt;br /&gt;
         * case of multiple strings, they will be searched in the order given.&lt;br /&gt;
         */&lt;br /&gt;
        'search.base' =&amp;gt; [&lt;br /&gt;
            'ou=people,dc=example,dc=org',&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The scope of the search. Valid values are 'sub' and 'one' and&lt;br /&gt;
         * 'base', first one being the default if no value is set.&lt;br /&gt;
         */&lt;br /&gt;
        'search.scope' =&amp;gt; 'sub',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The attribute(s) the username should match against.&lt;br /&gt;
         *&lt;br /&gt;
         * This is an array with one or more attribute names. Any of the&lt;br /&gt;
         * attributes in the array may match the value the username.&lt;br /&gt;
         */&lt;br /&gt;
        'search.attributes' =&amp;gt; ['uid', 'mail'],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Additional filters that must match for the entire LDAP search to&lt;br /&gt;
         * be true.&lt;br /&gt;
         *&lt;br /&gt;
         * This should be a single string conforming to [RFC 1960]&lt;br /&gt;
         * and [RFC 2544]. The string is appended to the search attributes&lt;br /&gt;
         */&lt;br /&gt;
        'search.filter' =&amp;gt; '(&amp;amp;(objectClass=Person)(|(sn=Doe)(cn=John *)))',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The username &amp;amp; password where SimpleSAMLphp should bind to before&lt;br /&gt;
         * searching. If this is left NULL, no bind will be performed before&lt;br /&gt;
         * searching.&lt;br /&gt;
         */&lt;br /&gt;
        'search.username' =&amp;gt; null,&lt;br /&gt;
        'search.password' =&amp;gt; null,&lt;br /&gt;
    ],&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Megfelelő beállítások után a dinamikusan generált metadata a &amp;lt;code&amp;gt;/saml2/idp/metadata.php&amp;lt;/code&amp;gt; útvonalon érhető el.&lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
A usereknek már nincs adminisztrációs felület azonban adminként még be lehet lépni amennyiben a core modulok között engedélyeztük az admin felületet: `https://service.example.org/simplesaml/admin/`&lt;br /&gt;
&lt;br /&gt;
A belépést követően a teszt fülre kattintva tesztelhetjük az authentikációs forrásokat:&lt;br /&gt;
&lt;br /&gt;
https://idp.niif.hu/simplesaml/module.php/admin/test&lt;br /&gt;
&lt;br /&gt;
===Kézi metadata csere, élesített SP-vel===&lt;br /&gt;
&lt;br /&gt;
Az IdP metadata valamint metadata eszközök megtalálhatók a következő oldalon (admin fiók szükséges): [https://idp.example/simplesaml/module.php/admin/federation](https://idp.example/simplesaml/module.php/admin/federation)&lt;br /&gt;
&lt;br /&gt;
Amennyiben az SP is simplesamlphp használhatjuk a fentihez hasonló elérési úton található SimplesSAMLphp SP Metadatát, ez php formátumban van, ellenkező esetben pl shibboleth sp meg kell keresnünk a metaadat XML-t majd a fentebb említett federation oldalon található XML →simplesamlphp metadata konvertert használni.&lt;br /&gt;
&lt;br /&gt;
Az így kapott php formátumú metaadatokat pedig be kell illeszteni az IdP-n a &amp;lt;code&amp;gt;metadata/saml20-sp-remote.php&amp;lt;/code&amp;gt; fileba a következő példához hasonlóképp:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$metadata['https://sp.example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = [&lt;br /&gt;
    'AssertionConsumerService' =&amp;gt; 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    'SingleLogoutService' =&amp;gt; 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik (SP) oldalon amennyiben szintén simplesamlphp van, az idp metaadatokat hasonlóképp hasonlóképp érjük el majd illesszük be a   metadata/saml20-idp-remote.php&lt;br /&gt;
fileba. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$metadata['https://example.org/saml-idp'] = [&lt;br /&gt;
    'SingleSignOnService'  =&amp;gt; 'https://example.org/simplesaml/saml2/idp/SSOService.php',&lt;br /&gt;
    'SingleLogoutService'  =&amp;gt; 'https://example.org/simplesaml/saml2/idp/SingleLogoutService.php',&lt;br /&gt;
    'certificate'          =&amp;gt; 'example.pem',&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A certet a config php-ban beállított certdir-ben keresi (alapértelmezetten /cert)&lt;br /&gt;
Amennyiben más SP-t használunk az idp XML metadatájára lesz szükség amely szintén föderáció fül alatt érhető el ([https://idp.example/simplesaml/module.php/admin/federation](https://idp.niif.hu/simplesaml/module.php/admin/federation)), és az SPn-nek releváns dokumentációt kell követni.&lt;br /&gt;
&lt;br /&gt;
==Service Provider (SP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
&lt;br /&gt;
A telepített alkalmazásunk által kezelt SP-ket a '''config/authsources.php''' fájlban tudjuk beállítani. &lt;br /&gt;
A SimpleSAMLphp a tanúsítvány fájlokat a korábban létrehozott '''cert''' mappában fogja keresni, a fájlokat elég relatív elérési úttal megadni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$config = [&lt;br /&gt;
&lt;br /&gt;
    /* This is the name of this authentication source, and will be used to access it later. */&lt;br /&gt;
    'default-sp' =&amp;gt; [&lt;br /&gt;
        'saml:SP',&lt;br /&gt;
        'entityID' =&amp;gt; 'https://myapp.example.org/',&lt;br /&gt;
        'privatekey' =&amp;gt; 'saml.pem',&lt;br /&gt;
        'certificate' =&amp;gt; 'saml.crt',&lt;br /&gt;
        'idp' =&amp;gt; 'https://example.org/saml-idp', //Alapértelmezett IdP beállítása&lt;br /&gt;
    ],&lt;br /&gt;
&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
&lt;br /&gt;
A fent elvégzett alapbeállítások után már tudjuk tesztelni a, hogy a felépített IdP - SP kapcsolat működik-e.&lt;br /&gt;
&lt;br /&gt;
SP oldalon nyissuk meg a '''admin''' teszt felületet:&lt;br /&gt;
&lt;br /&gt;
https://idp.niif.hu/simplesaml/module.php/admin/test&lt;br /&gt;
&lt;br /&gt;
Itt kattintsunk a default SP-re&lt;br /&gt;
&lt;br /&gt;
==HREF-integráció==&lt;br /&gt;
&lt;br /&gt;
===Metadata beállítása (IdP és SP is)===&lt;br /&gt;
Javasolt [[MDX | dinamikus metaadatforrást (MDX)]] használni, opcionálisan kiegészítve statikus állományokkal. Részletes leírás itt: [[SimpleSAMLMixedMetadata]]&lt;br /&gt;
&lt;br /&gt;
===IdP===&lt;br /&gt;
Amennyiben van SSP alapú IdP-nk, melyet szeretnénk a föderáció részévé tenni, úgy a teendők a következők.&lt;br /&gt;
* (Az adminisztratív teendőktől itt most eltekintünk, a csatlakozás folyamata [[HREFJoin|itt van leírva]])&lt;br /&gt;
* Kell küldeni egy levelet a [mailto:info@eduid.hu info@eduid.hu] címre, benne néhány mondat mellett az IdP metaadatának URL-jével (https://example/org/simplesaml/module.php/saml/idp/metadata)&lt;br /&gt;
* Ha minden rendben megy, akkor az IdP bekerül a [[Resource_Registry]]-be, ezáltal a föderációs metaadatba is.&lt;br /&gt;
* Az előző pontban leírt módon be kell állítani a központi metadata feldolgozását.&lt;br /&gt;
* Amennyiben a föderációs metaadatban már szerepel a mi IdP-nk is, úgy a föderáció valamelyik, tesztelési célokat szolgáló SP-jénél ki is próbálhatjuk a bejelentkezést. &lt;br /&gt;
&lt;br /&gt;
:'''Fontos''', hogy a föderációs Discovery Service óránként generálja újra az IdP-k listáját, így ennyi idő mindenképp szükséges, hogy az új IdP megjelenjen itt, az egyes SP-k pedig két óránként töltik újra a metaadatot, így előfordulhat, hogy azonnal nem fog minden működni, de néhány óra alatt várhatóan beindul. :)&lt;br /&gt;
&lt;br /&gt;
:Tesztelésre használható oldal: https://attributes.eduid.hu&lt;br /&gt;
&lt;br /&gt;
* Ahhoz, hogy a Resource Registry-be is be tudjunk lépni és az IdP további, a föderációra vonatkozó beállításait meg tudjuk ejteni, ehhez az IdP-nek ki kell adnia az alábbi attribútumokat:&lt;br /&gt;
** [[HREFAttributeSpec#mail|mail]] - ez belépés után, manuálisan is beállítható&lt;br /&gt;
** [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]&lt;br /&gt;
** &amp;lt;del&amp;gt;[[HREFAttributeSpec#schacHomeOrganizationType|schacHomeOrganizationType]]&amp;lt;/del&amp;gt; (az attribútumot hamarosan kivezetjük a kötelező attribútumok közül)&lt;br /&gt;
** [[HREFAttributeSpec#eduScopedAffiliation|eduPersonScopedAffiliation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútumok kezelése====&lt;br /&gt;
Beállított IdP-nk alapértelmezés szerint azokat az attribútumokat adja ki, melyeket a metaadat alapján az SP kért (Lásd a metadatában a RequestedAttribute elemeket), és egyúttal alapból meg tudta szerezni a felhasználói adatbázisból, esetünkben az LDAP-ból. Mivel néhány attribútum nem szerepel az LDAP-ban, hanem az IdP-ben kell előállítani, így pár helyen módosítanunk kell az alapértelmezett konfiguráción.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlba szerkesszük be az alábbi kódrészlet értelemszerűen módosított változatát. Az &amp;lt;code&amp;gt;'auth' =&amp;gt; 'example-ldap',&amp;lt;/code&amp;gt; sor alatt kezdjük. Fontos, hogy egyúttal a config.php &amp;lt;code&amp;gt;authproc.idp&amp;lt;/code&amp;gt; részét kikommentezzük, nehogy az ottani sorszámokkal megadott default feladatok bekavarjanak.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'AttributeNameFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',&lt;br /&gt;
 'userid.attribute' =&amp;gt; 'uid', // Itt adjuk meg, hogy mely, az LDAPból származó attribútum alapján fogja az IdP kiszámítani az eduPersonTargetedID-t&lt;br /&gt;
 'authproc' =&amp;gt; array(&lt;br /&gt;
                10 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'uid' =&amp;gt; 'eduPersonPrincipalName'&lt;br /&gt;
                //Itt az 'uid' az az attribútum az LDAP-ban, amely a felhasználó azonosítóját tartalmazza, mert ebből képezzük az eduPersonPrincipalName-t.&lt;br /&gt;
                ),&lt;br /&gt;
                # 20 =&amp;gt; array(&lt;br /&gt;
                #         'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                #         'schacHomeOrganizationType' =&amp;gt; array('urn:schac:homeOrganizationType:hu:university')&lt;br /&gt;
                # //Kötelező statikus attribútum az [[HREFAttributeSpec#schacHomeOrganizationType|intézmény jellegének]] megfelelően&lt;br /&gt;
                # ),&lt;br /&gt;
                30 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonPrincipalName már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                40 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonAffiliation',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonAffiliation már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                50 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'eduPersonAffiliation' =&amp;gt; 'eduPersonScopedAffiliation'&lt;br /&gt;
                // Az LDAP-ból eduPersonAffiliation-ként érkező attribútumból föderációs elvárásoknak megfelelően eduPersonScopedAffiliationt készítünk&lt;br /&gt;
                ),&lt;br /&gt;
                60 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                        'eduPersonScopedAffiliation' =&amp;gt; array('member@intezmenydomain.hu')&lt;br /&gt;
                // Az eduPersonScopedAffiliation-ben tesztelés céljából kiadhatjuk member értéket, &lt;br /&gt;
                // így ha LDAP-ból nem jön érték, akkor is láthatjuk, hogy működik az attribútum kiadás &lt;br /&gt;
                ),&lt;br /&gt;
                61 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:TargetedID',&lt;br /&gt;
                        'nameId' =&amp;gt; TRUE,&lt;br /&gt;
                ),&lt;br /&gt;
               // Itt állítjuk be, hogy az IdP előállítson és kiadhasson állandóazonosítóként eduPersonTargetedID-t, ha kérik&lt;br /&gt;
                70 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'name2oid'&lt;br /&gt;
                // Az LDAP-os attribútum nevekből itt kreálunk szabványos urn:oid formátumúakat&lt;br /&gt;
                ),&lt;br /&gt;
                80 =&amp;gt; 'core:AttributeLimit',&lt;br /&gt;
              ), // .authproc&lt;br /&gt;
       'simplesaml.nameidattribute' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
       'attributeencodings' =&amp;gt; array(&lt;br /&gt;
               'urn:oid:1.3.6.1.4.1.5923.1.1.1.10' =&amp;gt; 'raw',&lt;br /&gt;
        ),&lt;br /&gt;
        'sign.logout' =&amp;gt; true&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: További tudnivalók a [[Resource_Registry|Resource Registry-ről]], ill. a [[HREFAttributeSpec|Föderációs attribútum specifikációról]].&lt;br /&gt;
&lt;br /&gt;
* Ha minden rendben ment, akkor a Resource Registry-ben regisztrált IdP-hez tartozó adminisztrációs jogok átkerülnek az IdP technikai gazdájához, s ezzel a folyamat kész is.&lt;br /&gt;
&lt;br /&gt;
===SP===&lt;br /&gt;
Amennyiben IdP-t is beállítottunk, és be is tudunk lépni a Resource Registry-be, úgy nincs más dolgunk, mint az RR-ben új SP-t hozzáadni a föderációhoz, amely a megfelelő átfutási idő után a föderáció minden tagjánál látható is lesz.&lt;br /&gt;
&lt;br /&gt;
Ellenkező esetben (nincs IdP, és nem is tervezünk beállítani), akkor az IdP hozzáadásánál részletezett pontokon kell végig menni a metaadat betöltéséig, s a továbbiakat az említett e-mail címen megbeszélni.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútum scopeok használata====&lt;br /&gt;
A HREF föderáció IdP-i ún. scopeolt attribútumokat is használnak. Ez a scopeolás azt jelenti, hogy minden egyes IdP csak a saját scopejában ad ki attribútumokat, és a Shibboleth SP-k ezt ellenőrzik is. A scope és az attribútum valódi értéke egy '@' karakterrel kerül elválasztásra (ilyen attribútumok jelenleg: [[HREFAttributeSpec#eduPersonAffiliation|eduPersonScopedAffiliation]] illetve [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]).&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp alapértelmezett telepítése nem szűri a hibásan scopeolt értékeket. Kiegészítő modulként szűrésre használható az NIIF által fejlesztett [https://github.com/NIIF/simplesamlphp-module-attributescope attributescope modul], ami reményeink szerint rövid távon a hivatalos SimpleSAMLphp kiadás része lehet.&lt;br /&gt;
&lt;br /&gt;
A telepítésről és konfigurációról bővebben itt lehet olvasni: https://github.com/NIIF/simplesamlphp-module-attributescope&lt;br /&gt;
&lt;br /&gt;
: Az &amp;lt;code&amp;gt;attributescope&amp;lt;/code&amp;gt; modul használata esetén a következőképp kell módosítani a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlt:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 authproc.sp =  array(&lt;br /&gt;
                      ...&lt;br /&gt;
                     // 49 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap', 'oid2name'),&lt;br /&gt;
                     50 =&amp;gt; array(             'class' =&amp;gt; 'attributescope:FilterAttributes'&lt;br /&gt;
                     ),&lt;br /&gt;
                     ...&lt;br /&gt;
                ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Figyeljünk arra, hogy mire a modulhoz ér a vezérlés, az attribútumok  nevei ''friendlyName'' alakúak legyenek (ne pedig ''oid''-ok). A  példában erre utal a 49-es sor.&lt;br /&gt;
&lt;br /&gt;
[[Category: AAI]] [[Category: simpleSAMLphp]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Matteo(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5040</id>
		<title>SSP2</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5040"/>
				<updated>2024-08-13T09:27:24Z</updated>
		
		<summary type="html">&lt;p&gt;Matteo(AT)niif.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Az alábbi lapon megkíséreljük összefoglalni a legfontosabb lépéseket, melyek általános esetben elegendőek ahhoz, hogy működő SimpleSAMLphp (SSP) alkalmazást állítsunk üzembe.&lt;br /&gt;
&lt;br /&gt;
==Telepítés==&lt;br /&gt;
Először is nagyvonalakban leírásra kerülnek az előkészületek ezt követően pedig maga a szoftver telepítése és beállítása.&lt;br /&gt;
===Előkészületek===&lt;br /&gt;
Ahhoz, hogy problémamentesen telepíthessük SSP alkalmazásunkat, az alábbi szoftverkomponenseknek kell működniük szerverünkön.&lt;br /&gt;
* A következő könyvtárakat kiegészítőket telepíteni kell:  &amp;lt;code&amp;gt;wget openssl unzip build-essential libldap2-dev libldap-common&amp;lt;/code&amp;gt;&lt;br /&gt;
* PHP futtatására alkalmas webszerver&lt;br /&gt;
* PHP környezet (&amp;gt;=8.0)&lt;br /&gt;
* A következő PHP kiterjesztéseket engedélyezni kell&lt;br /&gt;
** &amp;lt;code&amp;gt;posix, date , dom , fileinfo , filter , hash , json , libxml , mbstring , openssl , pcre , session , simplexml , sodium , SPL, zlib, ldap&amp;lt;/code&amp;gt;&lt;br /&gt;
** Adatbázisból történő autentikáció esetén a megfelelő adatbázis-csatolót &amp;lt;code&amp;gt;mysqli, pdo, pdo_mysql&amp;lt;/code&amp;gt;&lt;br /&gt;
** RADIUS szerveren keresztül történő autentikáció esetén: &amp;lt;code&amp;gt;radius&amp;lt;/code&amp;gt;&lt;br /&gt;
* Információk, certek:&lt;br /&gt;
** Bár a szoftver képes futni mariadb, és redis nélkül, ezek vagy hasonló megoldások használata éles környezetben ajánlott.&lt;br /&gt;
*** Amennyiben ezeket szándékozunk használni database connection stringgel kell rendelkezni, redis elérhetőséggel és jelszóval rendelkezni.&lt;br /&gt;
*** Az adatbázis szerkezetének kialakítása a használt moduloktól függ, a leggyakoribb a consent modul, ott van is dokumentáció az adatbázis inicializálásáról.&lt;br /&gt;
&lt;br /&gt;
** Szükséges 2 certpár, az egyik az apachenak a másik az SSP-nek ezutóbbi lehet önalárírt, és nem ajánlott ugyan azt használni.&lt;br /&gt;
&lt;br /&gt;
====Composer====&lt;br /&gt;
&lt;br /&gt;
A '''[https://getcomposer.org composer]''' PHP csomagkezelőt is telepíteni kell (akár forrásból, akár csomagból), hogy telepíteni lehessen a SimpleSAMLphp futásához szükséges PHP library-ket.&lt;br /&gt;
&lt;br /&gt;
===Telepítés===&lt;br /&gt;
Elvégezhető composerrel például a &amp;lt;code&amp;gt;/var/&amp;lt;/code&amp;gt; mappában:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;composer create-project simplesamlphp/simplesamlphp:2.1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mappaszerkezet módosítása:&lt;br /&gt;
&lt;br /&gt;
 mv simplesamlphp simplesamlphp-prod #Tetszőleges átnevezés&lt;br /&gt;
 mkdir -p simplesamlphp-prod/cert&lt;br /&gt;
 mkdir -p /var/simplesamlphp-prod/log/stats/&lt;br /&gt;
 mkdir -p /var/simplesamlphp-prod/mdx-cache/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/mdx-cache/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/log/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/metadata/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Composerrel a szükséges modulok telepítése (például LDAP, REDIS, vagy consent):&lt;br /&gt;
&lt;br /&gt;
 composer require simplesamlphp/simplesamlphp-module-ldap:v2.3.2&lt;br /&gt;
 composer require predis/predis:2.2.2&lt;br /&gt;
 composer require simplesamlphp/simplesamlphp-module-consent:1.3.2&lt;br /&gt;
&lt;br /&gt;
Ezzel a telepítés, és a szükséges kiegészítők telepítése megtörtént.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apache konfigurálás===&lt;br /&gt;
&lt;br /&gt;
A webről csak a &amp;lt;code&amp;gt;/var/simplesamlphp-prod/public&amp;lt;/code&amp;gt; könyvtárat kell elérni. '''Tilos''' a teljes simplesamlphp könyvtárat a DocumentRoot alá tenni!&lt;br /&gt;
&lt;br /&gt;
 Alias /simplesaml /var/simplesamlphp-prod/public&lt;br /&gt;
 &amp;lt;Directory /var/simplesamlphp-prod/public&amp;gt;&lt;br /&gt;
   Require all granted&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
===Simplesamlphp Alapbeállítások===&lt;br /&gt;
====Konfigurációs fájlok====&lt;br /&gt;
Amennyiben korábbi verziókat használtunk,&lt;br /&gt;
&lt;br /&gt;
jó megközelítés lehet diff segítségével ellenőrizni a különbségeket a korábbi &amp;lt;code&amp;gt;config.php&amp;lt;/code&amp;gt; fileunk és a &amp;lt;code&amp;gt;config.php.dist&amp;lt;/code&amp;gt; között.&lt;br /&gt;
&lt;br /&gt;
Ha ilyennel nem rendelkezünk akkor lehet rögtön alapul venni a &amp;lt;code&amp;gt;config.php.dist&amp;lt;/code&amp;gt;-et és hasonlóképp a metadata-templates mappát.&lt;br /&gt;
&lt;br /&gt;
====Konfigurációs fájlok szerkesztése====&lt;br /&gt;
&lt;br /&gt;
=====Baseurlpath beállítása=====&lt;br /&gt;
&lt;br /&gt;
- Állítsuk be a baseurlpath opciót. Mutasson a telepítés URL-jére, ahol a SimpleSAMLphp elérhető:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;'baseurlpath' =&amp;gt; 'https://your.canonical.host.name/simplesaml/',&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Adminisztrációs adatok beállítása=====&lt;br /&gt;
&lt;br /&gt;
* '''Az &amp;quot;admin&amp;quot; felhasználó jelszavát, mellyel webes felületen keresztül be tud lépni a települő SSP-be.'''&lt;br /&gt;
 'auth.adminpassword'        =&amp;gt; 'ujjelszotirdide',&lt;br /&gt;
* '''Titkosítási feladatokhoz szükséges &amp;quot;salt&amp;quot;, azaz véletlenszerűen összeálló karaktersorozat'''&lt;br /&gt;
 'secretsalt' =&amp;gt; 'randombytesinsertedhere',&lt;br /&gt;
A karaktersorozat előállításában segíthet az alábbi parancs: &lt;br /&gt;
 tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' &amp;lt;/dev/urandom | dd bs=32 count=1 2&amp;gt;/dev/null;echo&lt;br /&gt;
* '''Elérhetőségeket, amely adatok bekerülnek majd a generált metaadatba'''&lt;br /&gt;
 'technicalcontact_name'     =&amp;gt; 'Gipsz Jakab',&lt;br /&gt;
 'technicalcontact_email'    =&amp;gt; 'jakab.gipsz@example.org',&lt;br /&gt;
* '''Nyelv és időzóna adatok'''&lt;br /&gt;
 'language.default'      =&amp;gt; 'hu',&lt;br /&gt;
 'timezone' =&amp;gt; 'Europe/Budapest',&lt;br /&gt;
&lt;br /&gt;
Az alapadatok megadása után mentsük és zárjuk be a '''config.php'''-t.&lt;br /&gt;
&lt;br /&gt;
=====Naplózás beállítása=====&lt;br /&gt;
&lt;br /&gt;
Alapértelmezetten a SimpleSAMLphp a '''syslog'''-ba irányítja a naplózást.&lt;br /&gt;
&lt;br /&gt;
Ha fájlba akarunk naplózni, akkor a megfelelő könyvtárhoz biztosítsunk írás jogot a webszerver felhasználónak, és ne felejtsünk el gondoskodni a naplófájlok rotálásáról!&lt;br /&gt;
&lt;br /&gt;
* Naplózási szint beállítása a '''config/config.php'''-ban&lt;br /&gt;
 'debug' =&amp;gt; array(&lt;br /&gt;
        'saml' =&amp;gt; true,&lt;br /&gt;
        'backtraces' =&amp;gt; true,&lt;br /&gt;
        'validatexml' =&amp;gt; false,&lt;br /&gt;
 ),&lt;br /&gt;
 'logging.level' =&amp;gt; SimpleSAML\Logger::DEBUG,&lt;br /&gt;
 'logging.handler' =&amp;gt; 'file',&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;A &amp;quot;SimpleSAML\Logger::DEBUG&amp;quot; a legrészletesebb naplózási beállítás, éles rendszernél nem ajánlott csak hiba keresés esetén.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Modulok engedélyezése=====&lt;br /&gt;
 'module.enable' =&amp;gt; [&lt;br /&gt;
  'exampleauth' =&amp;gt; true,&lt;br /&gt;
  'saml' =&amp;gt; false, //&lt;br /&gt;
  'core' =&amp;gt; null, // Alapértelmezett érték&lt;br /&gt;
  'ldap' =&amp;gt; true, // 2.x verzióban külön telepíteni és engedélyezni kell az ldap modult.&lt;br /&gt;
  'admin' =&amp;gt; true, // Ezt szükséges engedélyezni hogy elérhessük az adminisztrációs felületet&lt;br /&gt;
 ],&lt;br /&gt;
&lt;br /&gt;
=====Tanúsítvány készítése=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Nem ajánlott a SimpleSAMLphp-hoz és webszerverhez ugyanazt a tanúsítvány használni!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A SimpleSAMLphp alapértelmezetten a tanúsítványt a '''cert''' mappában keresi.&lt;br /&gt;
&lt;br /&gt;
* Az alábbi paranccsal egy 10 éves [[FedCerts |  self-signed tanúsítvány]] generálunk a SimpleSMALphp számára.&lt;br /&gt;
 openssl req -new -newkey rsa:3072 -x509 -days 3652 -nodes -out cert/saml-example-org.crt -keyout cert/saml-example-org.key&lt;br /&gt;
&lt;br /&gt;
A fingerprint az alábbi módon kérdezhető le a legegyszerűbben&lt;br /&gt;
 openssl x509 -fingerprint -noout -in cert/saml-example-org.crt&lt;br /&gt;
&lt;br /&gt;
===Telepítés kész===&lt;br /&gt;
Amennyiben elkészültünk a fenti lépésekkel, úgy a [https://service.example.org/simplesaml/admin https://service.example.org/simplesaml/admin] címen elérjük a telepített SSP-nk webes adminfelületét.&lt;br /&gt;
&lt;br /&gt;
==Identity Provider (IdP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
'''IdP''' engedélyezése: a '''config/config.php''' fájlban kell a saml20 idp-t &amp;quot;true&amp;quot;-re állítani.&lt;br /&gt;
 'enable.saml20-idp' =&amp;gt; true,&lt;br /&gt;
&lt;br /&gt;
===Metaadat alapok===&lt;br /&gt;
A beállítandó IdP alapvető paraméterei a &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlban állíthatók. Az alábbi kódrészlet egy minimális, de már működő példát mutat.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $metadata['https://example.org/saml-idp'] = [&lt;br /&gt;
    /*&lt;br /&gt;
     * The hostname for this IdP. This makes it possible to run multiple&lt;br /&gt;
     * IdPs from the same configuration. '__DEFAULT__' means that this one&lt;br /&gt;
     * should be used by default.&lt;br /&gt;
     */&lt;br /&gt;
    'host' =&amp;gt; '__DEFAULT__',&lt;br /&gt;
    /*&lt;br /&gt;
     * The private key and certificate to use when signing responses.&lt;br /&gt;
     * These can be stored as files in the cert-directory or retrieved&lt;br /&gt;
     * from a database.&lt;br /&gt;
     */&lt;br /&gt;
    'privatekey' =&amp;gt; 'example.org.pem',&lt;br /&gt;
    'certificate' =&amp;gt; 'example.org.crt',&lt;br /&gt;
    /*&lt;br /&gt;
     * The authentication source which should be used to authenticate the&lt;br /&gt;
     * user. This must match one of the entries in config/authsources.php.&lt;br /&gt;
     */&lt;br /&gt;
    'auth' =&amp;gt; 'example-ldap',&lt;br /&gt;
 ];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fentebb hivatkozott certeket korábban létrehoztuk, de az example-ldap auth forrást még nem:&lt;br /&gt;
&lt;br /&gt;
===LDAP autentikáció===&lt;br /&gt;
&lt;br /&gt;
Javasolt az LDAP-ban egy olyan bejegyzést létrehozni az IdP számára, amely olvasni tudja a felhasználóknak a föderációban használt attribútumait. Az azonosítás alapértelmezett módon a felhasználó nevében történő újra bind-olással történik, így a jelszóhoz nem kell hozzáférést adni.&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy megadhassuk az LDAP-hoz tartozó beállításokat, a &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; fájlt kell szerkesztenünk. Az alábbi kódrészletet elegendő beszúrni, és az egyes változóknak a helyi LDAP-nak megfelelő adatokat értékül adni.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
'example-ldap' =&amp;gt; [&lt;br /&gt;
        'ldap:Ldap',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The connection string for the LDAP-server.&lt;br /&gt;
         * You can add multiple by separating them with a space.&lt;br /&gt;
         */&lt;br /&gt;
        'connection_string' =&amp;gt; 'ldap.example.org',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Whether SSL/TLS should be used when contacting the LDAP server.&lt;br /&gt;
         * Possible values are 'ssl', 'tls' or 'none'&lt;br /&gt;
         */&lt;br /&gt;
        'encryption' =&amp;gt; 'ssl',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The LDAP version to use when interfacing the LDAP-server.&lt;br /&gt;
         * Defaults to 3&lt;br /&gt;
         */&lt;br /&gt;
        'version' =&amp;gt; 3,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Set to TRUE to enable LDAP debug level. Passed to the LDAP connector class.&lt;br /&gt;
         *&lt;br /&gt;
         * Default: FALSE&lt;br /&gt;
         * Required: No&lt;br /&gt;
         */&lt;br /&gt;
        'debug' =&amp;gt; false,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The LDAP-options to pass when setting up a connection&lt;br /&gt;
         * See [Symfony documentation]&lt;br /&gt;
         */&lt;br /&gt;
        'options' =&amp;gt; [&lt;br /&gt;
            /**&lt;br /&gt;
             * Set whether to follow referrals.&lt;br /&gt;
             * AD Controllers may require 0x00 to function.&lt;br /&gt;
             * Possible values are 0x00 (NEVER), 0x01 (SEARCHING),&lt;br /&gt;
             *   0x02 (FINDING) or 0x03 (ALWAYS).&lt;br /&gt;
             */&lt;br /&gt;
            'referrals' =&amp;gt; 0x00,&lt;br /&gt;
&lt;br /&gt;
            'network_timeout' =&amp;gt; 3,&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The connector to use.&lt;br /&gt;
         * Defaults to '\SimpleSAML\Module\ldap\Connector\Ldap', but can be set&lt;br /&gt;
         * to '\SimpleSAML\Module\ldap\Connector\ActiveDirectory' when&lt;br /&gt;
         * authenticating against Microsoft Active Directory. This will&lt;br /&gt;
         * provide you with more specific error messages.&lt;br /&gt;
         */&lt;br /&gt;
        'connector' =&amp;gt; '\SimpleSAML\Module\ldap\Connector\Ldap',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Which attributes should be retrieved from the LDAP server.&lt;br /&gt;
         * This can be an array of attribute names, or NULL, in which case&lt;br /&gt;
         * all attributes are fetched.&lt;br /&gt;
         */&lt;br /&gt;
        'attributes' =&amp;gt; null,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Which attributes should be base64 encoded after retrieval from&lt;br /&gt;
         * the LDAP server.&lt;br /&gt;
         */&lt;br /&gt;
        'attributes.binary' =&amp;gt; [&lt;br /&gt;
            'jpegPhoto',&lt;br /&gt;
            'objectGUID',&lt;br /&gt;
            'objectSid',&lt;br /&gt;
            'mS-DS-ConsistencyGuid'&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The pattern which should be used to create the user's DN given&lt;br /&gt;
         * the username. %username% in this pattern will be replaced with&lt;br /&gt;
         * the user's username.&lt;br /&gt;
         *&lt;br /&gt;
         * This option is not used if the search.enable option is set to TRUE.&lt;br /&gt;
         */&lt;br /&gt;
        'dnpattern' =&amp;gt; 'uid=%username%,ou=people,dc=example,dc=org',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * As an alternative to specifying a pattern for the users DN, it is&lt;br /&gt;
         * possible to search for the username in a set of attributes. This is&lt;br /&gt;
         * enabled by this option.&lt;br /&gt;
         */&lt;br /&gt;
        'search.enable' =&amp;gt; false,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * An array on DNs which will be used as a base for the search. In&lt;br /&gt;
         * case of multiple strings, they will be searched in the order given.&lt;br /&gt;
         */&lt;br /&gt;
        'search.base' =&amp;gt; [&lt;br /&gt;
            'ou=people,dc=example,dc=org',&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The scope of the search. Valid values are 'sub' and 'one' and&lt;br /&gt;
         * 'base', first one being the default if no value is set.&lt;br /&gt;
         */&lt;br /&gt;
        'search.scope' =&amp;gt; 'sub',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The attribute(s) the username should match against.&lt;br /&gt;
         *&lt;br /&gt;
         * This is an array with one or more attribute names. Any of the&lt;br /&gt;
         * attributes in the array may match the value the username.&lt;br /&gt;
         */&lt;br /&gt;
        'search.attributes' =&amp;gt; ['uid', 'mail'],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Additional filters that must match for the entire LDAP search to&lt;br /&gt;
         * be true.&lt;br /&gt;
         *&lt;br /&gt;
         * This should be a single string conforming to [RFC 1960]&lt;br /&gt;
         * and [RFC 2544]. The string is appended to the search attributes&lt;br /&gt;
         */&lt;br /&gt;
        'search.filter' =&amp;gt; '(&amp;amp;(objectClass=Person)(|(sn=Doe)(cn=John *)))',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The username &amp;amp; password where SimpleSAMLphp should bind to before&lt;br /&gt;
         * searching. If this is left NULL, no bind will be performed before&lt;br /&gt;
         * searching.&lt;br /&gt;
         */&lt;br /&gt;
        'search.username' =&amp;gt; null,&lt;br /&gt;
        'search.password' =&amp;gt; null,&lt;br /&gt;
    ],&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Megfelelő beállítások után a dinamikusan generált metadata a &amp;lt;code&amp;gt;/saml2/idp/metadata.php&amp;lt;/code&amp;gt; útvonalon érhető el.&lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
A usereknek már nincs adminisztrációs felület azonban adminként még be lehet lépni amennyiben a core modulok között engedélyeztük az admin felületet: `https://service.example.org/simplesaml/admin/`&lt;br /&gt;
&lt;br /&gt;
A belépést követően a teszt fülre kattintva tesztelhetjük az authentikációs forrásokat:&lt;br /&gt;
&lt;br /&gt;
https://idp.niif.hu/simplesaml/module.php/admin/test&lt;br /&gt;
&lt;br /&gt;
===Kézi metadata csere, élesített SP-vel===&lt;br /&gt;
&lt;br /&gt;
Az IdP metadata valamint metadata eszközök megtalálhatók a következő oldalon (admin fiók szükséges): [https://idp.example/simplesaml/module.php/admin/federation](https://idp.niif.hu/simplesaml/module.php/admin/federation)&lt;br /&gt;
&lt;br /&gt;
Amennyiben az SP is simplesamlphp használhatjuk a fentihez hasonló elérési úton található SimplesSAMLphp SP Metadatát, ez php formátumban van, ellenkező esetben pl shibboleth sp meg kell keresnünk a metaadat XML-t majd a fentebb említett federation oldalon található XML →simplesamlphp metadata konvertert használni.&lt;br /&gt;
&lt;br /&gt;
Az így kapott php formátumú metaadatokat pedig be kell illeszteni az IdP-n a &lt;br /&gt;
  `metadata/saml20-sp-remote.php`  fileba a következő példához hasonlóképp&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
$metadata['https://sp.example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = [&lt;br /&gt;
    'AssertionConsumerService' =&amp;gt; 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    'SingleLogoutService' =&amp;gt; 'https://sp.example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A másik (SP) oldalon amennyiben szintén simplesamlphp van, az idp metaadatokat hasonlóképp hasonlóképp érjük el majd illesszük be a   metadata/saml20-idp-remote.php&lt;br /&gt;
fileba. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$metadata['https://example.org/saml-idp'] = [&lt;br /&gt;
    'SingleSignOnService'  =&amp;gt; 'https://example.org/simplesaml/saml2/idp/SSOService.php',&lt;br /&gt;
    'SingleLogoutService'  =&amp;gt; 'https://example.org/simplesaml/saml2/idp/SingleLogoutService.php',&lt;br /&gt;
    'certificate'          =&amp;gt; 'example.pem',&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A certet a config php-ban beállított certdir-ben keresi (alapértelmezetten /cert)&lt;br /&gt;
Amennyiben más SP-t használunk az idp XML metadatájára lesz szükség amely szintén föderáció fül alatt érhető el ([https://idp.example/simplesaml/module.php/admin/federation](https://idp.niif.hu/simplesaml/module.php/admin/federation)), és az SPn-nek releváns dokumentációt kell követni.&lt;br /&gt;
&lt;br /&gt;
==Service Provider (SP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
&lt;br /&gt;
A telepített alkalmazásunk által kezelt SP-ket a '''config/authsources.php''' fájlban tudjuk beállítani. Az ''entityID, idp, discoURL'' értékeket most hagyjuk ''NULL'' értéken és adjuk hozzá a '''privatekey''' / '''certificate''' részt.&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp a tanúsítvány fájlokat a korábban létrehozott '''cert''' mappában fogja keresni, a fájlokat elég relatív elérési úttal megadni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'default-sp' =&amp;gt; array(&lt;br /&gt;
        'saml:SP',&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of this SP.&lt;br /&gt;
        // Can be NULL/unset, in which case an entity ID is generated based on the metadata URL.&lt;br /&gt;
        'entityID' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of the IdP this should SP should contact.&lt;br /&gt;
        // Can be NULL/unset, in which case the user will be shown a list of available IdPs.&lt;br /&gt;
        'idp' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The URL to the discovery service.&lt;br /&gt;
        // Can be NULL/unset, in which case a builtin discovery service will be used.&lt;br /&gt;
        'discoURL' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        'privatekey' =&amp;gt; 'saml-example-org.key',&lt;br /&gt;
        'certificate' =&amp;gt; 'saml-example-org.crt',&lt;br /&gt;
 &lt;br /&gt;
 ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fenti beállítások alapján az SP entityID-ja megegyezik a metadata elérési útvonalával (szokásos megoldás SSP-nél), nem adunk meg alapértelmezett idp-t, ezáltal az SSP választási lehetőséget kínál fel számunkra, mikor az SP-re szeretnénk bejelentkezni, ill. most még Discovery Service URL-t sem adunk meg, hanem a beépítettet használjuk. Ez utóbbit majd a HREF-be történő integrációkor meg kell változtatni - lásd lejjebb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SP készen áll arra, hogy összekössük egy IdP-vel (ez jellemzően szintén egy SimpleSAMLphp alkalmazás). Ehhez szükséges, hogy SP oldalon beállítsuk az IdP metadata-t és IdP oldalon is beállítsuk az SP metadata-t.&lt;br /&gt;
&lt;br /&gt;
====Metadata====&lt;br /&gt;
====Metadata fájlok====&lt;br /&gt;
A különböző metadata template fájlok a '''metadata-templates''' mappában találhatóak. A nekünk szükséges template fájlt másoljuk át a metadata mappába.&lt;br /&gt;
&lt;br /&gt;
* '''SP''' oldalon lennie kell egy''' metadata/saml20-idp-remote.php'''  fájlnak. Ez a fájl tartalmazza az IdP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-idp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
* '''IdP''' oldalon lennie kell egy '''metadata/saml20-sp-remote.php''' fájlnak. Ez a fájl tartalmazza az SP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-sp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
====Metadata letöltés====&lt;br /&gt;
&lt;br /&gt;
Ezen az oldalon megtaláljuk az SP vagy IdP-re vonatkozó '''metadata'''-t, '''XML''' és '''PHP''' formátumban: https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp?output=xhtml&lt;br /&gt;
&lt;br /&gt;
====SP metadata beállítás IdP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 SP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 SP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array (&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'AssertionConsumerService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 0,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    1 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 1,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    2 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 2,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    3 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 3,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:artifact-01',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp/artifact',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'contacts' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'emailAddress' =&amp;gt; 'admin@example.org',&lt;br /&gt;
      'contactType' =&amp;gt; 'technical',&lt;br /&gt;
      'givenName' =&amp;gt; 'Example Corp. IT Dept.',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot IdP oldalon, a '''metadata/saml20-sp-remote.php''' fájl végére illesszük be.&lt;br /&gt;
&lt;br /&gt;
====IdP metadata beállítás SP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://idp.example.org/simplesaml/saml2/idp/metadata.php'] = array (&lt;br /&gt;
  'metadata-set' =&amp;gt; 'saml20-idp-remote',&lt;br /&gt;
  'entityid' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/metadata.php',&lt;br /&gt;
  'SingleSignOnService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SSOService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SingleLogoutService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
  'NameIDFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot SP oldalon, a '''metadata/saml20-idp-remote.php''' fájl végére illesszük be. &lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
&lt;br /&gt;
A fent elvégzett alapbeállítások után már tudjuk tesztelni a, hogy a felépített IdP - SP kapcsolat működik-e.&lt;br /&gt;
&lt;br /&gt;
SP oldalon nyissuk meg a '''simplesaml''' kezdőlapot:&lt;br /&gt;
&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Azonosítás (autentikáció)&amp;quot; fül / &amp;quot;Azonosítási (autentikációs) beállítások tesztelése&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Authentication&amp;quot; fül / &amp;quot;Test configured authentication sources&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
&lt;br /&gt;
A legördülő menüben az IdP-nk &amp;quot;nevére&amp;quot; kattintva, be kell tudnunk jelentkezni (az IdP-n keresztül). Ha működik, akkor az IdP visszairányít az SP-re, kiírja az azonosított felhasználó attribútumait. &lt;br /&gt;
&lt;br /&gt;
Az alapvető lépsekkel kész vagyunk, van egy működő SP-nk és egy működő IdP-nk.&lt;br /&gt;
&lt;br /&gt;
==HREF-integráció==&lt;br /&gt;
&lt;br /&gt;
===Metadata beállítása (IdP és SP is)===&lt;br /&gt;
Javasolt [[MDX | dinamikus metaadatforrást (MDX)]] használni, opcionálisan kiegészítve statikus állományokkal. Részletes leírás itt: [[SimpleSAMLMixedMetadata]]&lt;br /&gt;
&lt;br /&gt;
===IdP===&lt;br /&gt;
Amennyiben van SSP alapú IdP-nk, melyet szeretnénk a föderáció részévé tenni, úgy a teendők a következők.&lt;br /&gt;
* (Az adminisztratív teendőktől itt most eltekintünk, a csatlakozás folyamata [[HREFJoin|itt van leírva]])&lt;br /&gt;
* Kell küldeni egy levelet a [mailto:info@eduid.hu info@eduid.hu] címre, benne néhány mondat mellett az IdP metaadatának URL-jével (https://example.org/simplesamlphp/saml2/idp/metadata.php)&lt;br /&gt;
* Ha minden rendben megy, akkor az IdP bekerül a [[Resource_Registry]]-be, ezáltal a föderációs metaadatba is.&lt;br /&gt;
* Az előző pontban leírt módon be kell állítani a központi metadata feldolgozását.&lt;br /&gt;
* Amennyiben a föderációs metaadatban már szerepel a mi IdP-nk is, úgy a föderáció valamelyik, tesztelési célokat szolgáló SP-jénél ki is próbálhatjuk a bejelentkezést. &lt;br /&gt;
&lt;br /&gt;
:'''Fontos''', hogy a föderációs Discovery Service óránként generálja újra az IdP-k listáját, így ennyi idő mindenképp szükséges, hogy az új IdP megjelenjen itt, az egyes SP-k pedig két óránként töltik újra a metaadatot, így előfordulhat, hogy azonnal nem fog minden működni, de néhány óra alatt várhatóan beindul. :)&lt;br /&gt;
&lt;br /&gt;
:Tesztelésre használható oldal: https://attributes.eduid.hu&lt;br /&gt;
&lt;br /&gt;
* Ahhoz, hogy a Resource Registry-be is be tudjunk lépni és az IdP további, a föderációra vonatkozó beállításait meg tudjuk ejteni, ehhez az IdP-nek ki kell adnia az alábbi attribútumokat:&lt;br /&gt;
** [[HREFAttributeSpec#mail|mail]] - ez belépés után, manuálisan is beállítható&lt;br /&gt;
** [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]&lt;br /&gt;
** &amp;lt;del&amp;gt;[[HREFAttributeSpec#schacHomeOrganizationType|schacHomeOrganizationType]]&amp;lt;/del&amp;gt; (az attribútumot hamarosan kivezetjük a kötelező attribútumok közül)&lt;br /&gt;
** [[HREFAttributeSpec#eduScopedAffiliation|eduPersonScopedAffiliation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútumok kezelése====&lt;br /&gt;
Beállított IdP-nk alapértelmezés szerint azokat az attribútumokat adja ki, melyeket a metaadat alapján az SP kért (Lásd a metadatában a RequestedAttribute elemeket), és egyúttal alapból meg tudta szerezni a felhasználói adatbázisból, esetünkben az LDAP-ból. Mivel néhány attribútum nem szerepel az LDAP-ban, hanem az IdP-ben kell előállítani, így pár helyen módosítanunk kell az alapértelmezett konfiguráción.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlba szerkesszük be az alábbi kódrészlet értelemszerűen módosított változatát. Az &amp;lt;code&amp;gt;'auth' =&amp;gt; 'example-ldap',&amp;lt;/code&amp;gt; sor alatt kezdjük. Fontos, hogy egyúttal a config.php &amp;lt;code&amp;gt;authproc.idp&amp;lt;/code&amp;gt; részét kikommentezzük, nehogy az ottani sorszámokkal megadott default feladatok bekavarjanak.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'AttributeNameFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',&lt;br /&gt;
 'userid.attribute' =&amp;gt; 'uid', // Itt adjuk meg, hogy mely, az LDAPból származó attribútum alapján fogja az IdP kiszámítani az eduPersonTargetedID-t&lt;br /&gt;
 'authproc' =&amp;gt; array(&lt;br /&gt;
                10 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'uid' =&amp;gt; 'eduPersonPrincipalName'&lt;br /&gt;
                //Itt az 'uid' az az attribútum az LDAP-ban, amely a felhasználó azonosítóját tartalmazza, mert ebből képezzük az eduPersonPrincipalName-t.&lt;br /&gt;
                ),&lt;br /&gt;
                # 20 =&amp;gt; array(&lt;br /&gt;
                #         'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                #         'schacHomeOrganizationType' =&amp;gt; array('urn:schac:homeOrganizationType:hu:university')&lt;br /&gt;
                # //Kötelező statikus attribútum az [[HREFAttributeSpec#schacHomeOrganizationType|intézmény jellegének]] megfelelően&lt;br /&gt;
                # ),&lt;br /&gt;
                30 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonPrincipalName már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                40 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonAffiliation',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonAffiliation már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                50 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'eduPersonAffiliation' =&amp;gt; 'eduPersonScopedAffiliation'&lt;br /&gt;
                // Az LDAP-ból eduPersonAffiliation-ként érkező attribútumból föderációs elvárásoknak megfelelően eduPersonScopedAffiliationt készítünk&lt;br /&gt;
                ),&lt;br /&gt;
                60 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                        'eduPersonScopedAffiliation' =&amp;gt; array('member@intezmenydomain.hu')&lt;br /&gt;
                // Az eduPersonScopedAffiliation-ben tesztelés céljából kiadhatjuk member értéket, &lt;br /&gt;
                // így ha LDAP-ból nem jön érték, akkor is láthatjuk, hogy működik az attribútum kiadás &lt;br /&gt;
                ),&lt;br /&gt;
                61 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:TargetedID',&lt;br /&gt;
                        'nameId' =&amp;gt; TRUE,&lt;br /&gt;
                ),&lt;br /&gt;
               // Itt állítjuk be, hogy az IdP előállítson és kiadhasson állandóazonosítóként eduPersonTargetedID-t, ha kérik&lt;br /&gt;
                70 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'name2oid'&lt;br /&gt;
                // Az LDAP-os attribútum nevekből itt kreálunk szabványos urn:oid formátumúakat&lt;br /&gt;
                ),&lt;br /&gt;
                80 =&amp;gt; 'core:AttributeLimit',&lt;br /&gt;
              ), // .authproc&lt;br /&gt;
       'simplesaml.nameidattribute' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
       'attributeencodings' =&amp;gt; array(&lt;br /&gt;
               'urn:oid:1.3.6.1.4.1.5923.1.1.1.10' =&amp;gt; 'raw',&lt;br /&gt;
        ),&lt;br /&gt;
        'sign.logout' =&amp;gt; true&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: További tudnivalók a [[Resource_Registry|Resource Registry-ről]], ill. a [[HREFAttributeSpec|Föderációs attribútum specifikációról]].&lt;br /&gt;
&lt;br /&gt;
* Ha minden rendben ment, akkor a Resource Registry-ben regisztrált IdP-hez tartozó adminisztrációs jogok átkerülnek az IdP technikai gazdájához, s ezzel a folyamat kész is.&lt;br /&gt;
&lt;br /&gt;
===SP===&lt;br /&gt;
Amennyiben IdP-t is beállítottunk, és be is tudunk lépni a Resource Registry-be, úgy nincs más dolgunk, mint az RR-ben új SP-t hozzáadni a föderációhoz, amely a megfelelő átfutási idő után a föderáció minden tagjánál látható is lesz.&lt;br /&gt;
&lt;br /&gt;
Ellenkező esetben (nincs IdP, és nem is tervezünk beállítani), akkor az IdP hozzáadásánál részletezett pontokon kell végig menni a metaadat betöltéséig, s a továbbiakat az említett e-mail címen megbeszélni.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútum scopeok használata====&lt;br /&gt;
A HREF föderáció IdP-i ún. scopeolt attribútumokat is használnak. Ez a scopeolás azt jelenti, hogy minden egyes IdP csak a saját scopejában ad ki attribútumokat, és a Shibboleth SP-k ezt ellenőrzik is. A scope és az attribútum valódi értéke egy '@' karakterrel kerül elválasztásra (ilyen attribútumok jelenleg: [[HREFAttributeSpec#eduPersonAffiliation|eduPersonScopedAffiliation]] illetve [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]).&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp alapértelmezett telepítése nem szűri a hibásan scopeolt értékeket. Kiegészítő modulként szűrésre használható az NIIF által fejlesztett [https://github.com/NIIF/simplesamlphp-module-attributescope attributescope modul], ami reményeink szerint rövid távon a hivatalos SimpleSAMLphp kiadás része lehet.&lt;br /&gt;
&lt;br /&gt;
A telepítésről és konfigurációról bővebben itt lehet olvasni: https://github.com/NIIF/simplesamlphp-module-attributescope&lt;br /&gt;
&lt;br /&gt;
: Az &amp;lt;code&amp;gt;attributescope&amp;lt;/code&amp;gt; modul használata esetén a következőképp kell módosítani a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlt:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 authproc.sp =  array(&lt;br /&gt;
                      ...&lt;br /&gt;
                     // 49 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap', 'oid2name'),&lt;br /&gt;
                     50 =&amp;gt; array(             'class' =&amp;gt; 'attributescope:FilterAttributes'&lt;br /&gt;
                     ),&lt;br /&gt;
                     ...&lt;br /&gt;
                ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Figyeljünk arra, hogy mire a modulhoz ér a vezérlés, az attribútumok  nevei ''friendlyName'' alakúak legyenek (ne pedig ''oid''-ok). A  példában erre utal a 49-es sor.&lt;br /&gt;
&lt;br /&gt;
[[Category: AAI]] [[Category: simpleSAMLphp]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Matteo(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5039</id>
		<title>SSP2</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5039"/>
				<updated>2024-08-13T09:15:13Z</updated>
		
		<summary type="html">&lt;p&gt;Matteo(AT)niif.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Az alábbi lapon megkíséreljük összefoglalni a legfontosabb lépéseket, melyek általános esetben elegendőek ahhoz, hogy működő SimpleSAMLphp (SSP) alkalmazást állítsunk üzembe.&lt;br /&gt;
&lt;br /&gt;
==Telepítés==&lt;br /&gt;
Először is nagyvonalakban leírásra kerülnek az előkészületek ezt követően pedig maga a szoftver telepítése és beállítása.&lt;br /&gt;
===Előkészületek===&lt;br /&gt;
Ahhoz, hogy problémamentesen telepíthessük SSP alkalmazásunkat, az alábbi szoftverkomponenseknek kell működniük szerverünkön.&lt;br /&gt;
* A következő könyvtárakat kiegészítőket telepíteni kell:  &amp;lt;code&amp;gt;wget openssl unzip build-essential libldap2-dev libldap-common&amp;lt;/code&amp;gt;&lt;br /&gt;
* PHP futtatására alkalmas webszerver&lt;br /&gt;
* PHP környezet (&amp;gt;=8.0)&lt;br /&gt;
* A következő PHP kiterjesztéseket engedélyezni kell&lt;br /&gt;
** &amp;lt;code&amp;gt;posix, date , dom , fileinfo , filter , hash , json , libxml , mbstring , openssl , pcre , session , simplexml , sodium , SPL, zlib, ldap&amp;lt;/code&amp;gt;&lt;br /&gt;
** Adatbázisból történő autentikáció esetén a megfelelő adatbázis-csatolót &amp;lt;code&amp;gt;mysqli, pdo, pdo_mysql&amp;lt;/code&amp;gt;&lt;br /&gt;
** RADIUS szerveren keresztül történő autentikáció esetén: &amp;lt;code&amp;gt;radius&amp;lt;/code&amp;gt;&lt;br /&gt;
* Információk, certek:&lt;br /&gt;
** Bár a szoftver képes futni mariadb, és redis nélkül, ezek vagy hasonló megoldások használata éles környezetben ajánlott.&lt;br /&gt;
*** Amennyiben ezeket szándékozunk használni database connection stringgel kell rendelkezni, redis elérhetőséggel és jelszóval rendelkezni.&lt;br /&gt;
*** Az adatbázis szerkezetének kialakítása a használt moduloktól függ, a leggyakoribb a consent modul, ott van is dokumentáció az adatbázis inicializálásáról.&lt;br /&gt;
&lt;br /&gt;
** Szükséges 2 certpár, az egyik az apachenak a másik az SSP-nek ezutóbbi lehet önalárírt, és nem ajánlott ugyan azt használni.&lt;br /&gt;
&lt;br /&gt;
====Composer====&lt;br /&gt;
&lt;br /&gt;
A '''[https://getcomposer.org composer]''' PHP csomagkezelőt is telepíteni kell (akár forrásból, akár csomagból), hogy telepíteni lehessen a SimpleSAMLphp futásához szükséges PHP library-ket.&lt;br /&gt;
&lt;br /&gt;
===Telepítés===&lt;br /&gt;
Elvégezhető composerrel például a &amp;lt;code&amp;gt;/var/&amp;lt;/code&amp;gt; mappában:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;composer create-project simplesamlphp/simplesamlphp:2.1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mappaszerkezet módosítása:&lt;br /&gt;
&lt;br /&gt;
 mv simplesamlphp simplesamlphp-prod #Tetszőleges átnevezés&lt;br /&gt;
 mkdir -p simplesamlphp-prod/cert&lt;br /&gt;
 mkdir -p /var/simplesamlphp-prod/log/stats/&lt;br /&gt;
 mkdir -p /var/simplesamlphp-prod/mdx-cache/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/mdx-cache/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/log/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/metadata/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Composerrel a szükséges modulok telepítése (például LDAP, REDIS, vagy consent):&lt;br /&gt;
&lt;br /&gt;
 composer require simplesamlphp/simplesamlphp-module-ldap:v2.3.2&lt;br /&gt;
 composer require predis/predis:2.2.2&lt;br /&gt;
 composer require simplesamlphp/simplesamlphp-module-consent:1.3.2&lt;br /&gt;
&lt;br /&gt;
Ezzel a telepítés, és a szükséges kiegészítők telepítése megtörtént.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apache konfigurálás===&lt;br /&gt;
&lt;br /&gt;
A webről csak a &amp;lt;code&amp;gt;/var/simplesamlphp-prod/public&amp;lt;/code&amp;gt; könyvtárat kell elérni. '''Tilos''' a teljes simplesamlphp könyvtárat a DocumentRoot alá tenni!&lt;br /&gt;
&lt;br /&gt;
 Alias /simplesaml /var/simplesamlphp-prod/public&lt;br /&gt;
 &amp;lt;Directory /var/simplesamlphp-prod/public&amp;gt;&lt;br /&gt;
   Require all granted&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
===Simplesamlphp Alapbeállítások===&lt;br /&gt;
====Konfigurációs fájlok====&lt;br /&gt;
Amennyiben korábbi verziókat használtunk,&lt;br /&gt;
&lt;br /&gt;
jó megközelítés lehet diff segítségével ellenőrizni a különbségeket a korábbi &amp;lt;code&amp;gt;config.php&amp;lt;/code&amp;gt; fileunk és a &amp;lt;code&amp;gt;config.php.dist&amp;lt;/code&amp;gt; között.&lt;br /&gt;
&lt;br /&gt;
Ha ilyennel nem rendelkezünk akkor lehet rögtön alapul venni a &amp;lt;code&amp;gt;config.php.dist&amp;lt;/code&amp;gt;-et és hasonlóképp a metadata-templates mappát.&lt;br /&gt;
&lt;br /&gt;
====Konfigurációs fájlok szerkesztése====&lt;br /&gt;
&lt;br /&gt;
=====Baseurlpath beállítása=====&lt;br /&gt;
&lt;br /&gt;
- Állítsuk be a baseurlpath opciót. Mutasson a telepítés URL-jére, ahol a SimpleSAMLphp elérhető:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;'baseurlpath' =&amp;gt; 'https://your.canonical.host.name/simplesaml/',&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Adminisztrációs adatok beállítása=====&lt;br /&gt;
&lt;br /&gt;
* '''Az &amp;quot;admin&amp;quot; felhasználó jelszavát, mellyel webes felületen keresztül be tud lépni a települő SSP-be.'''&lt;br /&gt;
 'auth.adminpassword'        =&amp;gt; 'ujjelszotirdide',&lt;br /&gt;
* '''Titkosítási feladatokhoz szükséges &amp;quot;salt&amp;quot;, azaz véletlenszerűen összeálló karaktersorozat'''&lt;br /&gt;
 'secretsalt' =&amp;gt; 'randombytesinsertedhere',&lt;br /&gt;
A karaktersorozat előállításában segíthet az alábbi parancs: &lt;br /&gt;
 tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' &amp;lt;/dev/urandom | dd bs=32 count=1 2&amp;gt;/dev/null;echo&lt;br /&gt;
* '''Elérhetőségeket, amely adatok bekerülnek majd a generált metaadatba'''&lt;br /&gt;
 'technicalcontact_name'     =&amp;gt; 'Gipsz Jakab',&lt;br /&gt;
 'technicalcontact_email'    =&amp;gt; 'jakab.gipsz@example.org',&lt;br /&gt;
* '''Nyelv és időzóna adatok'''&lt;br /&gt;
 'language.default'      =&amp;gt; 'hu',&lt;br /&gt;
 'timezone' =&amp;gt; 'Europe/Budapest',&lt;br /&gt;
&lt;br /&gt;
Az alapadatok megadása után mentsük és zárjuk be a '''config.php'''-t.&lt;br /&gt;
&lt;br /&gt;
=====Naplózás beállítása=====&lt;br /&gt;
&lt;br /&gt;
Alapértelmezetten a SimpleSAMLphp a '''syslog'''-ba irányítja a naplózást.&lt;br /&gt;
&lt;br /&gt;
Ha fájlba akarunk naplózni, akkor a megfelelő könyvtárhoz biztosítsunk írás jogot a webszerver felhasználónak, és ne felejtsünk el gondoskodni a naplófájlok rotálásáról!&lt;br /&gt;
&lt;br /&gt;
* Naplózási szint beállítása a '''config/config.php'''-ban&lt;br /&gt;
 'debug' =&amp;gt; array(&lt;br /&gt;
        'saml' =&amp;gt; true,&lt;br /&gt;
        'backtraces' =&amp;gt; true,&lt;br /&gt;
        'validatexml' =&amp;gt; false,&lt;br /&gt;
 ),&lt;br /&gt;
 'logging.level' =&amp;gt; SimpleSAML\Logger::DEBUG,&lt;br /&gt;
 'logging.handler' =&amp;gt; 'file',&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;A &amp;quot;SimpleSAML\Logger::DEBUG&amp;quot; a legrészletesebb naplózási beállítás, éles rendszernél nem ajánlott csak hiba keresés esetén.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Modulok engedélyezése=====&lt;br /&gt;
 'module.enable' =&amp;gt; [&lt;br /&gt;
  'exampleauth' =&amp;gt; true,&lt;br /&gt;
  'saml' =&amp;gt; false, //&lt;br /&gt;
  'core' =&amp;gt; null, // Alapértelmezett érték&lt;br /&gt;
  'ldap' =&amp;gt; true, // 2.x verzióban külön telepíteni és engedélyezni kell az ldap modult.&lt;br /&gt;
  'admin' =&amp;gt; true, // Ezt szükséges engedélyezni hogy elérhessük az adminisztrációs felületet&lt;br /&gt;
 ],&lt;br /&gt;
&lt;br /&gt;
=====Tanúsítvány készítése=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Nem ajánlott a SimpleSAMLphp-hoz és webszerverhez ugyanazt a tanúsítvány használni!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A SimpleSAMLphp alapértelmezetten a tanúsítványt a '''cert''' mappában keresi.&lt;br /&gt;
&lt;br /&gt;
* Az alábbi paranccsal egy 10 éves [[FedCerts |  self-signed tanúsítvány]] generálunk a SimpleSMALphp számára.&lt;br /&gt;
 openssl req -new -newkey rsa:3072 -x509 -days 3652 -nodes -out cert/saml-example-org.crt -keyout cert/saml-example-org.key&lt;br /&gt;
&lt;br /&gt;
A fingerprint az alábbi módon kérdezhető le a legegyszerűbben&lt;br /&gt;
 openssl x509 -fingerprint -noout -in cert/saml-example-org.crt&lt;br /&gt;
&lt;br /&gt;
===Telepítés kész===&lt;br /&gt;
Amennyiben elkészültünk a fenti lépésekkel, úgy a [https://service.example.org/simplesaml/admin https://service.example.org/simplesaml/admin] címen elérjük a telepített SSP-nk webes adminfelületét.&lt;br /&gt;
&lt;br /&gt;
==Identity Provider (IdP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
'''IdP''' engedélyezése: a '''config/config.php''' fájlban kell a saml20 idp-t &amp;quot;true&amp;quot;-re állítani.&lt;br /&gt;
 'enable.saml20-idp' =&amp;gt; true,&lt;br /&gt;
&lt;br /&gt;
===metadata/saml20-idp-hosted.php===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
 $metadata['https://example.org/saml-idp'] = [&lt;br /&gt;
    /*&lt;br /&gt;
     * The hostname for this IdP. This makes it possible to run multiple&lt;br /&gt;
     * IdPs from the same configuration. '__DEFAULT__' means that this one&lt;br /&gt;
     * should be used by default.&lt;br /&gt;
     */&lt;br /&gt;
    'host' =&amp;gt; '__DEFAULT__',&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * The private key and certificate to use when signing responses.&lt;br /&gt;
     * These can be stored as files in the cert-directory or retrieved&lt;br /&gt;
     * from a database.&lt;br /&gt;
     */&lt;br /&gt;
    'privatekey' =&amp;gt; 'example.org.pem',&lt;br /&gt;
    'certificate' =&amp;gt; 'example.org.crt',&lt;br /&gt;
&lt;br /&gt;
    /*&lt;br /&gt;
     * The authentication source which should be used to authenticate the&lt;br /&gt;
     * user. This must match one of the entries in config/authsources.php.&lt;br /&gt;
     */&lt;br /&gt;
    'auth' =&amp;gt; 'example-ldap',&lt;br /&gt;
 ];&lt;br /&gt;
&lt;br /&gt;
A fentebb hivatkozott certeket korábban létrehoztuk, de az example-ldap auth forrást még nem:&lt;br /&gt;
&lt;br /&gt;
===LDAP autentikáció===&lt;br /&gt;
&lt;br /&gt;
Javasolt az LDAP-ban egy olyan bejegyzést létrehozni az IdP számára, amely olvasni tudja a felhasználóknak a föderációban használt attribútumait. Az azonosítás alapértelmezett módon a felhasználó nevében történő újra bind-olással történik, így a jelszóhoz nem kell hozzáférést adni.&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy megadhassuk az LDAP-hoz tartozó beállításokat, a &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; fájlt kell szerkesztenünk. Az alábbi kódrészletet elegendő beszúrni, és az egyes változóknak a helyi LDAP-nak megfelelő adatokat értékül adni.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
'example-ldap' =&amp;gt; [&lt;br /&gt;
        'ldap:Ldap',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The connection string for the LDAP-server.&lt;br /&gt;
         * You can add multiple by separating them with a space.&lt;br /&gt;
         */&lt;br /&gt;
        'connection_string' =&amp;gt; 'ldap.example.org',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Whether SSL/TLS should be used when contacting the LDAP server.&lt;br /&gt;
         * Possible values are 'ssl', 'tls' or 'none'&lt;br /&gt;
         */&lt;br /&gt;
        'encryption' =&amp;gt; 'ssl',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The LDAP version to use when interfacing the LDAP-server.&lt;br /&gt;
         * Defaults to 3&lt;br /&gt;
         */&lt;br /&gt;
        'version' =&amp;gt; 3,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Set to TRUE to enable LDAP debug level. Passed to the LDAP connector class.&lt;br /&gt;
         *&lt;br /&gt;
         * Default: FALSE&lt;br /&gt;
         * Required: No&lt;br /&gt;
         */&lt;br /&gt;
        'debug' =&amp;gt; false,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The LDAP-options to pass when setting up a connection&lt;br /&gt;
         * See [Symfony documentation]&lt;br /&gt;
         */&lt;br /&gt;
        'options' =&amp;gt; [&lt;br /&gt;
            /**&lt;br /&gt;
             * Set whether to follow referrals.&lt;br /&gt;
             * AD Controllers may require 0x00 to function.&lt;br /&gt;
             * Possible values are 0x00 (NEVER), 0x01 (SEARCHING),&lt;br /&gt;
             *   0x02 (FINDING) or 0x03 (ALWAYS).&lt;br /&gt;
             */&lt;br /&gt;
            'referrals' =&amp;gt; 0x00,&lt;br /&gt;
&lt;br /&gt;
            'network_timeout' =&amp;gt; 3,&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The connector to use.&lt;br /&gt;
         * Defaults to '\SimpleSAML\Module\ldap\Connector\Ldap', but can be set&lt;br /&gt;
         * to '\SimpleSAML\Module\ldap\Connector\ActiveDirectory' when&lt;br /&gt;
         * authenticating against Microsoft Active Directory. This will&lt;br /&gt;
         * provide you with more specific error messages.&lt;br /&gt;
         */&lt;br /&gt;
        'connector' =&amp;gt; '\SimpleSAML\Module\ldap\Connector\Ldap',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Which attributes should be retrieved from the LDAP server.&lt;br /&gt;
         * This can be an array of attribute names, or NULL, in which case&lt;br /&gt;
         * all attributes are fetched.&lt;br /&gt;
         */&lt;br /&gt;
        'attributes' =&amp;gt; null,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Which attributes should be base64 encoded after retrieval from&lt;br /&gt;
         * the LDAP server.&lt;br /&gt;
         */&lt;br /&gt;
        'attributes.binary' =&amp;gt; [&lt;br /&gt;
            'jpegPhoto',&lt;br /&gt;
            'objectGUID',&lt;br /&gt;
            'objectSid',&lt;br /&gt;
            'mS-DS-ConsistencyGuid'&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The pattern which should be used to create the user's DN given&lt;br /&gt;
         * the username. %username% in this pattern will be replaced with&lt;br /&gt;
         * the user's username.&lt;br /&gt;
         *&lt;br /&gt;
         * This option is not used if the search.enable option is set to TRUE.&lt;br /&gt;
         */&lt;br /&gt;
        'dnpattern' =&amp;gt; 'uid=%username%,ou=people,dc=example,dc=org',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * As an alternative to specifying a pattern for the users DN, it is&lt;br /&gt;
         * possible to search for the username in a set of attributes. This is&lt;br /&gt;
         * enabled by this option.&lt;br /&gt;
         */&lt;br /&gt;
        'search.enable' =&amp;gt; false,&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * An array on DNs which will be used as a base for the search. In&lt;br /&gt;
         * case of multiple strings, they will be searched in the order given.&lt;br /&gt;
         */&lt;br /&gt;
        'search.base' =&amp;gt; [&lt;br /&gt;
            'ou=people,dc=example,dc=org',&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The scope of the search. Valid values are 'sub' and 'one' and&lt;br /&gt;
         * 'base', first one being the default if no value is set.&lt;br /&gt;
         */&lt;br /&gt;
        'search.scope' =&amp;gt; 'sub',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The attribute(s) the username should match against.&lt;br /&gt;
         *&lt;br /&gt;
         * This is an array with one or more attribute names. Any of the&lt;br /&gt;
         * attributes in the array may match the value the username.&lt;br /&gt;
         */&lt;br /&gt;
        'search.attributes' =&amp;gt; ['uid', 'mail'],&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * Additional filters that must match for the entire LDAP search to&lt;br /&gt;
         * be true.&lt;br /&gt;
         *&lt;br /&gt;
         * This should be a single string conforming to [RFC 1960]&lt;br /&gt;
         * and [RFC 2544]. The string is appended to the search attributes&lt;br /&gt;
         */&lt;br /&gt;
        'search.filter' =&amp;gt; '(&amp;amp;(objectClass=Person)(|(sn=Doe)(cn=John *)))',&lt;br /&gt;
&lt;br /&gt;
        /**&lt;br /&gt;
         * The username &amp;amp; password where SimpleSAMLphp should bind to before&lt;br /&gt;
         * searching. If this is left NULL, no bind will be performed before&lt;br /&gt;
         * searching.&lt;br /&gt;
         */&lt;br /&gt;
        'search.username' =&amp;gt; null,&lt;br /&gt;
        'search.password' =&amp;gt; null,&lt;br /&gt;
    ],&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Metaadat alapok===&lt;br /&gt;
A beállítandó IdP alapvető paraméterei a &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlban állíthatók. Az alábbi kódrészlet egy minimális, de már működő példát mutat.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 $metadata['__DYNAMIC:1__'] = array(&lt;br /&gt;
    /*&lt;br /&gt;
     * The hostname for this IdP. This makes it possible to run multiple&lt;br /&gt;
     * IdPs from the same configuration. '__DEFAULT__' means that this one&lt;br /&gt;
     * should be used by default.&lt;br /&gt;
     */&lt;br /&gt;
    'host' =&amp;gt; '__DEFAULT__',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The private key and certificate to use when signing responses.&lt;br /&gt;
     * These are stored in the cert-directory.&lt;br /&gt;
     */&lt;br /&gt;
    'privatekey' =&amp;gt; 'saml-example-org.key',&lt;br /&gt;
    'certificate' =&amp;gt; 'saml-example-org.crt',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The authentication source which should be used to authenticate the&lt;br /&gt;
     * user. This must match one of the entries in config/authsources.php.&lt;br /&gt;
     */&lt;br /&gt;
    'auth' =&amp;gt; 'example-ldap',&lt;br /&gt;
 );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Megfelelő beállítások után a dinamikusan generált metadata a &amp;lt;code&amp;gt;/saml2/idp/metadata.php&amp;lt;/code&amp;gt; útvonalon érhető el.&lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
Legegyszerűbben a telepített SSP felületén tudjuk ellenőrizni, hogy a beállított autentikációs forrás működik-e. A felületen az Authentication fül alatt található egy 'Test authentication sources' link, amelyre kattintva látható minden beállított autentikációs forrás is, így a két alapértelmezett, teszt célokat szolgáló alatt a most beállított example-ldap névre hallgatónak is meg kell jelenni. (A közvetlen url erre az oldalra: simplesaml/module.php/core/authenticate.php) Ez utóbbira kattintva a beállított LDAP-ból autentikálva be kell tudnunk jelentkeznünk; siker esetén az LDAP-ból kinyerhető attribútumokat láthatjuk.&lt;br /&gt;
&lt;br /&gt;
==Service Provider (SP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
&lt;br /&gt;
A telepített alkalmazásunk által kezelt SP-ket a '''config/authsources.php''' fájlban tudjuk beállítani. Az ''entityID, idp, discoURL'' értékeket most hagyjuk ''NULL'' értéken és adjuk hozzá a '''privatekey''' / '''certificate''' részt.&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp a tanúsítvány fájlokat a korábban létrehozott '''cert''' mappában fogja keresni, a fájlokat elég relatív elérési úttal megadni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'default-sp' =&amp;gt; array(&lt;br /&gt;
        'saml:SP',&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of this SP.&lt;br /&gt;
        // Can be NULL/unset, in which case an entity ID is generated based on the metadata URL.&lt;br /&gt;
        'entityID' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of the IdP this should SP should contact.&lt;br /&gt;
        // Can be NULL/unset, in which case the user will be shown a list of available IdPs.&lt;br /&gt;
        'idp' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The URL to the discovery service.&lt;br /&gt;
        // Can be NULL/unset, in which case a builtin discovery service will be used.&lt;br /&gt;
        'discoURL' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        'privatekey' =&amp;gt; 'saml-example-org.key',&lt;br /&gt;
        'certificate' =&amp;gt; 'saml-example-org.crt',&lt;br /&gt;
 &lt;br /&gt;
 ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fenti beállítások alapján az SP entityID-ja megegyezik a metadata elérési útvonalával (szokásos megoldás SSP-nél), nem adunk meg alapértelmezett idp-t, ezáltal az SSP választási lehetőséget kínál fel számunkra, mikor az SP-re szeretnénk bejelentkezni, ill. most még Discovery Service URL-t sem adunk meg, hanem a beépítettet használjuk. Ez utóbbit majd a HREF-be történő integrációkor meg kell változtatni - lásd lejjebb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SP készen áll arra, hogy összekössük egy IdP-vel (ez jellemzően szintén egy SimpleSAMLphp alkalmazás). Ehhez szükséges, hogy SP oldalon beállítsuk az IdP metadata-t és IdP oldalon is beállítsuk az SP metadata-t.&lt;br /&gt;
&lt;br /&gt;
====Metadata====&lt;br /&gt;
====Metadata fájlok====&lt;br /&gt;
A különböző metadata template fájlok a '''metadata-templates''' mappában találhatóak. A nekünk szükséges template fájlt másoljuk át a metadata mappába.&lt;br /&gt;
&lt;br /&gt;
* '''SP''' oldalon lennie kell egy''' metadata/saml20-idp-remote.php'''  fájlnak. Ez a fájl tartalmazza az IdP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-idp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
* '''IdP''' oldalon lennie kell egy '''metadata/saml20-sp-remote.php''' fájlnak. Ez a fájl tartalmazza az SP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-sp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
====Metadata letöltés====&lt;br /&gt;
&lt;br /&gt;
Ezen az oldalon megtaláljuk az SP vagy IdP-re vonatkozó '''metadata'''-t, '''XML''' és '''PHP''' formátumban: https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp?output=xhtml&lt;br /&gt;
&lt;br /&gt;
====SP metadata beállítás IdP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 SP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 SP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array (&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'AssertionConsumerService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 0,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    1 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 1,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    2 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 2,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    3 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 3,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:artifact-01',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp/artifact',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'contacts' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'emailAddress' =&amp;gt; 'admin@example.org',&lt;br /&gt;
      'contactType' =&amp;gt; 'technical',&lt;br /&gt;
      'givenName' =&amp;gt; 'Example Corp. IT Dept.',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot IdP oldalon, a '''metadata/saml20-sp-remote.php''' fájl végére illesszük be.&lt;br /&gt;
&lt;br /&gt;
====IdP metadata beállítás SP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://idp.example.org/simplesaml/saml2/idp/metadata.php'] = array (&lt;br /&gt;
  'metadata-set' =&amp;gt; 'saml20-idp-remote',&lt;br /&gt;
  'entityid' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/metadata.php',&lt;br /&gt;
  'SingleSignOnService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SSOService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SingleLogoutService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
  'NameIDFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot SP oldalon, a '''metadata/saml20-idp-remote.php''' fájl végére illesszük be. &lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
&lt;br /&gt;
A fent elvégzett alapbeállítások után már tudjuk tesztelni a, hogy a felépített IdP - SP kapcsolat működik-e.&lt;br /&gt;
&lt;br /&gt;
SP oldalon nyissuk meg a '''simplesaml''' kezdőlapot:&lt;br /&gt;
&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Azonosítás (autentikáció)&amp;quot; fül / &amp;quot;Azonosítási (autentikációs) beállítások tesztelése&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Authentication&amp;quot; fül / &amp;quot;Test configured authentication sources&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
&lt;br /&gt;
A legördülő menüben az IdP-nk &amp;quot;nevére&amp;quot; kattintva, be kell tudnunk jelentkezni (az IdP-n keresztül). Ha működik, akkor az IdP visszairányít az SP-re, kiírja az azonosított felhasználó attribútumait. &lt;br /&gt;
&lt;br /&gt;
Az alapvető lépsekkel kész vagyunk, van egy működő SP-nk és egy működő IdP-nk.&lt;br /&gt;
&lt;br /&gt;
==HREF-integráció==&lt;br /&gt;
&lt;br /&gt;
===Metadata beállítása (IdP és SP is)===&lt;br /&gt;
Javasolt [[MDX | dinamikus metaadatforrást (MDX)]] használni, opcionálisan kiegészítve statikus állományokkal. Részletes leírás itt: [[SimpleSAMLMixedMetadata]]&lt;br /&gt;
&lt;br /&gt;
===IdP===&lt;br /&gt;
Amennyiben van SSP alapú IdP-nk, melyet szeretnénk a föderáció részévé tenni, úgy a teendők a következők.&lt;br /&gt;
* (Az adminisztratív teendőktől itt most eltekintünk, a csatlakozás folyamata [[HREFJoin|itt van leírva]])&lt;br /&gt;
* Kell küldeni egy levelet a [mailto:info@eduid.hu info@eduid.hu] címre, benne néhány mondat mellett az IdP metaadatának URL-jével (https://example.org/simplesamlphp/saml2/idp/metadata.php)&lt;br /&gt;
* Ha minden rendben megy, akkor az IdP bekerül a [[Resource_Registry]]-be, ezáltal a föderációs metaadatba is.&lt;br /&gt;
* Az előző pontban leírt módon be kell állítani a központi metadata feldolgozását.&lt;br /&gt;
* Amennyiben a föderációs metaadatban már szerepel a mi IdP-nk is, úgy a föderáció valamelyik, tesztelési célokat szolgáló SP-jénél ki is próbálhatjuk a bejelentkezést. &lt;br /&gt;
&lt;br /&gt;
:'''Fontos''', hogy a föderációs Discovery Service óránként generálja újra az IdP-k listáját, így ennyi idő mindenképp szükséges, hogy az új IdP megjelenjen itt, az egyes SP-k pedig két óránként töltik újra a metaadatot, így előfordulhat, hogy azonnal nem fog minden működni, de néhány óra alatt várhatóan beindul. :)&lt;br /&gt;
&lt;br /&gt;
:Tesztelésre használható oldal: https://attributes.eduid.hu&lt;br /&gt;
&lt;br /&gt;
* Ahhoz, hogy a Resource Registry-be is be tudjunk lépni és az IdP további, a föderációra vonatkozó beállításait meg tudjuk ejteni, ehhez az IdP-nek ki kell adnia az alábbi attribútumokat:&lt;br /&gt;
** [[HREFAttributeSpec#mail|mail]] - ez belépés után, manuálisan is beállítható&lt;br /&gt;
** [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]&lt;br /&gt;
** &amp;lt;del&amp;gt;[[HREFAttributeSpec#schacHomeOrganizationType|schacHomeOrganizationType]]&amp;lt;/del&amp;gt; (az attribútumot hamarosan kivezetjük a kötelező attribútumok közül)&lt;br /&gt;
** [[HREFAttributeSpec#eduScopedAffiliation|eduPersonScopedAffiliation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútumok kezelése====&lt;br /&gt;
Beállított IdP-nk alapértelmezés szerint azokat az attribútumokat adja ki, melyeket a metaadat alapján az SP kért (Lásd a metadatában a RequestedAttribute elemeket), és egyúttal alapból meg tudta szerezni a felhasználói adatbázisból, esetünkben az LDAP-ból. Mivel néhány attribútum nem szerepel az LDAP-ban, hanem az IdP-ben kell előállítani, így pár helyen módosítanunk kell az alapértelmezett konfiguráción.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlba szerkesszük be az alábbi kódrészlet értelemszerűen módosított változatát. Az &amp;lt;code&amp;gt;'auth' =&amp;gt; 'example-ldap',&amp;lt;/code&amp;gt; sor alatt kezdjük. Fontos, hogy egyúttal a config.php &amp;lt;code&amp;gt;authproc.idp&amp;lt;/code&amp;gt; részét kikommentezzük, nehogy az ottani sorszámokkal megadott default feladatok bekavarjanak.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'AttributeNameFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',&lt;br /&gt;
 'userid.attribute' =&amp;gt; 'uid', // Itt adjuk meg, hogy mely, az LDAPból származó attribútum alapján fogja az IdP kiszámítani az eduPersonTargetedID-t&lt;br /&gt;
 'authproc' =&amp;gt; array(&lt;br /&gt;
                10 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'uid' =&amp;gt; 'eduPersonPrincipalName'&lt;br /&gt;
                //Itt az 'uid' az az attribútum az LDAP-ban, amely a felhasználó azonosítóját tartalmazza, mert ebből képezzük az eduPersonPrincipalName-t.&lt;br /&gt;
                ),&lt;br /&gt;
                # 20 =&amp;gt; array(&lt;br /&gt;
                #         'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                #         'schacHomeOrganizationType' =&amp;gt; array('urn:schac:homeOrganizationType:hu:university')&lt;br /&gt;
                # //Kötelező statikus attribútum az [[HREFAttributeSpec#schacHomeOrganizationType|intézmény jellegének]] megfelelően&lt;br /&gt;
                # ),&lt;br /&gt;
                30 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonPrincipalName már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                40 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonAffiliation',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonAffiliation már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                50 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'eduPersonAffiliation' =&amp;gt; 'eduPersonScopedAffiliation'&lt;br /&gt;
                // Az LDAP-ból eduPersonAffiliation-ként érkező attribútumból föderációs elvárásoknak megfelelően eduPersonScopedAffiliationt készítünk&lt;br /&gt;
                ),&lt;br /&gt;
                60 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                        'eduPersonScopedAffiliation' =&amp;gt; array('member@intezmenydomain.hu')&lt;br /&gt;
                // Az eduPersonScopedAffiliation-ben tesztelés céljából kiadhatjuk member értéket, &lt;br /&gt;
                // így ha LDAP-ból nem jön érték, akkor is láthatjuk, hogy működik az attribútum kiadás &lt;br /&gt;
                ),&lt;br /&gt;
                61 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:TargetedID',&lt;br /&gt;
                        'nameId' =&amp;gt; TRUE,&lt;br /&gt;
                ),&lt;br /&gt;
               // Itt állítjuk be, hogy az IdP előállítson és kiadhasson állandóazonosítóként eduPersonTargetedID-t, ha kérik&lt;br /&gt;
                70 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'name2oid'&lt;br /&gt;
                // Az LDAP-os attribútum nevekből itt kreálunk szabványos urn:oid formátumúakat&lt;br /&gt;
                ),&lt;br /&gt;
                80 =&amp;gt; 'core:AttributeLimit',&lt;br /&gt;
              ), // .authproc&lt;br /&gt;
       'simplesaml.nameidattribute' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
       'attributeencodings' =&amp;gt; array(&lt;br /&gt;
               'urn:oid:1.3.6.1.4.1.5923.1.1.1.10' =&amp;gt; 'raw',&lt;br /&gt;
        ),&lt;br /&gt;
        'sign.logout' =&amp;gt; true&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: További tudnivalók a [[Resource_Registry|Resource Registry-ről]], ill. a [[HREFAttributeSpec|Föderációs attribútum specifikációról]].&lt;br /&gt;
&lt;br /&gt;
* Ha minden rendben ment, akkor a Resource Registry-ben regisztrált IdP-hez tartozó adminisztrációs jogok átkerülnek az IdP technikai gazdájához, s ezzel a folyamat kész is.&lt;br /&gt;
&lt;br /&gt;
===SP===&lt;br /&gt;
Amennyiben IdP-t is beállítottunk, és be is tudunk lépni a Resource Registry-be, úgy nincs más dolgunk, mint az RR-ben új SP-t hozzáadni a föderációhoz, amely a megfelelő átfutási idő után a föderáció minden tagjánál látható is lesz.&lt;br /&gt;
&lt;br /&gt;
Ellenkező esetben (nincs IdP, és nem is tervezünk beállítani), akkor az IdP hozzáadásánál részletezett pontokon kell végig menni a metaadat betöltéséig, s a továbbiakat az említett e-mail címen megbeszélni.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútum scopeok használata====&lt;br /&gt;
A HREF föderáció IdP-i ún. scopeolt attribútumokat is használnak. Ez a scopeolás azt jelenti, hogy minden egyes IdP csak a saját scopejában ad ki attribútumokat, és a Shibboleth SP-k ezt ellenőrzik is. A scope és az attribútum valódi értéke egy '@' karakterrel kerül elválasztásra (ilyen attribútumok jelenleg: [[HREFAttributeSpec#eduPersonAffiliation|eduPersonScopedAffiliation]] illetve [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]).&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp alapértelmezett telepítése nem szűri a hibásan scopeolt értékeket. Kiegészítő modulként szűrésre használható az NIIF által fejlesztett [https://github.com/NIIF/simplesamlphp-module-attributescope attributescope modul], ami reményeink szerint rövid távon a hivatalos SimpleSAMLphp kiadás része lehet.&lt;br /&gt;
&lt;br /&gt;
A telepítésről és konfigurációról bővebben itt lehet olvasni: https://github.com/NIIF/simplesamlphp-module-attributescope&lt;br /&gt;
&lt;br /&gt;
: Az &amp;lt;code&amp;gt;attributescope&amp;lt;/code&amp;gt; modul használata esetén a következőképp kell módosítani a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlt:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 authproc.sp =  array(&lt;br /&gt;
                      ...&lt;br /&gt;
                     // 49 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap', 'oid2name'),&lt;br /&gt;
                     50 =&amp;gt; array(             'class' =&amp;gt; 'attributescope:FilterAttributes'&lt;br /&gt;
                     ),&lt;br /&gt;
                     ...&lt;br /&gt;
                ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Figyeljünk arra, hogy mire a modulhoz ér a vezérlés, az attribútumok  nevei ''friendlyName'' alakúak legyenek (ne pedig ''oid''-ok). A  példában erre utal a 49-es sor.&lt;br /&gt;
&lt;br /&gt;
[[Category: AAI]] [[Category: simpleSAMLphp]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Matteo(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5038</id>
		<title>SSP2</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5038"/>
				<updated>2024-08-13T08:44:52Z</updated>
		
		<summary type="html">&lt;p&gt;Matteo(AT)niif.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Az alábbi lapon megkíséreljük összefoglalni a legfontosabb lépéseket, melyek általános esetben elegendőek ahhoz, hogy működő SimpleSAMLphp (SSP) alkalmazást állítsunk üzembe.&lt;br /&gt;
&lt;br /&gt;
==Telepítés==&lt;br /&gt;
Először is nagyvonalakban leírásra kerülnek az előkészületek ezt követően pedig maga a szoftver telepítése és beállítása.&lt;br /&gt;
===Előkészületek===&lt;br /&gt;
Ahhoz, hogy problémamentesen telepíthessük SSP alkalmazásunkat, az alábbi szoftverkomponenseknek kell működniük szerverünkön.&lt;br /&gt;
* A következő könyvtárakat kiegészítőket telepíteni kell:  &amp;lt;code&amp;gt;wget openssl unzip build-essential libldap2-dev libldap-common&amp;lt;/code&amp;gt;&lt;br /&gt;
* PHP futtatására alkalmas webszerver&lt;br /&gt;
* PHP környezet (&amp;gt;=8.0)&lt;br /&gt;
* A következő PHP kiterjesztéseket engedélyezni kell&lt;br /&gt;
** &amp;lt;code&amp;gt;posix, date , dom , fileinfo , filter , hash , json , libxml , mbstring , openssl , pcre , session , simplexml , sodium , SPL, zlib, ldap&amp;lt;/code&amp;gt;&lt;br /&gt;
** Adatbázisból történő autentikáció esetén a megfelelő adatbázis-csatolót &amp;lt;code&amp;gt;mysqli, pdo, pdo_mysql&amp;lt;/code&amp;gt;&lt;br /&gt;
** RADIUS szerveren keresztül történő autentikáció esetén: &amp;lt;code&amp;gt;radius&amp;lt;/code&amp;gt;&lt;br /&gt;
* Információk, certek:&lt;br /&gt;
** Bár a szoftver képes futni mariadb, és redis nélkül, ezek vagy hasonló megoldások használata éles környezetben ajánlott.&lt;br /&gt;
*** Amennyiben ezeket szándékozunk használni database connection stringgel kell rendelkezni, redis elérhetőséggel és jelszóval rendelkezni.&lt;br /&gt;
*** Az adatbázis szerkezetének kialakítása a használt moduloktól függ, a leggyakoribb a consent modul, ott van is dokumentáció az adatbázis inicializálásáról.&lt;br /&gt;
&lt;br /&gt;
** Szükséges 2 certpár, az egyik az apachenak a másik az SSP-nek ezutóbbi lehet önalárírt, és nem ajánlott ugyan azt használni.&lt;br /&gt;
&lt;br /&gt;
====Composer====&lt;br /&gt;
&lt;br /&gt;
A '''[https://getcomposer.org composer]''' PHP csomagkezelőt is telepíteni kell (akár forrásból, akár csomagból), hogy telepíteni lehessen a SimpleSAMLphp futásához szükséges PHP library-ket.&lt;br /&gt;
&lt;br /&gt;
===Telepítés===&lt;br /&gt;
Elvégezhető composerrel például a &amp;lt;code&amp;gt;/var/&amp;lt;/code&amp;gt; mappában:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;composer create-project simplesamlphp/simplesamlphp:2.1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
Mappaszerkezet módosítása:&lt;br /&gt;
&lt;br /&gt;
 mv simplesamlphp simplesamlphp-prod #Tetszőleges átnevezés&lt;br /&gt;
 mkdir -p simplesamlphp-prod/cert&lt;br /&gt;
 mkdir -p /var/simplesamlphp-prod/log/stats/&lt;br /&gt;
 mkdir -p /var/simplesamlphp-prod/mdx-cache/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/mdx-cache/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/log/&lt;br /&gt;
 chown -R www-data:www-data /var/simplesamlphp-prod/metadata/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Composerrel a szükséges modulok telepítése (például LDAP, REDIS, vagy consent):&lt;br /&gt;
&lt;br /&gt;
 composer require simplesamlphp/simplesamlphp-module-ldap:v2.3.2&lt;br /&gt;
 composer require predis/predis:2.2.2&lt;br /&gt;
 composer require simplesamlphp/simplesamlphp-module-consent:1.3.2&lt;br /&gt;
&lt;br /&gt;
Ezzel a telepítés, és a szükséges kiegészítők telepítése megtörtént.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apache konfigurálás===&lt;br /&gt;
&lt;br /&gt;
A webről csak a &amp;lt;code&amp;gt;/var/simplesamlphp-prod/public&amp;lt;/code&amp;gt; könyvtárat kell elérni. '''Tilos''' a teljes simplesamlphp könyvtárat a DocumentRoot alá tenni!&lt;br /&gt;
&lt;br /&gt;
 Alias /simplesaml /var/simplesamlphp-prod/public&lt;br /&gt;
 &amp;lt;Directory /var/simplesamlphp-prod/public&amp;gt;&lt;br /&gt;
   Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
   Require all granted&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
====Konfigurációs fájlok másolása====&lt;br /&gt;
Mielőtt aktiváljuk valamelyik főszolgáltatását (IdP,SP...) a telepített alkalmazásnak, néhány beállítást meg kell adnunk a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; konfigurációs fájlokban.&lt;br /&gt;
&lt;br /&gt;
* '''config.php''' másolása a '''config-templates''' mappából&lt;br /&gt;
 cp config-templates/config.php config/&lt;br /&gt;
&lt;br /&gt;
* '''authsources.php''' másolása a '''config-templates''' mappából&lt;br /&gt;
 cp config-templates/authsources.php config/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;A '''config.php''' és '''authsources.php''' fájlok másolása utána ellenőrizzük, hogy a SimpleSAMLphp működik-e, a https://example.org/simplesaml oldalon.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Konfigurációs fájlok szerkesztése====&lt;br /&gt;
=====Adminisztrációs adatok beállítása=====&lt;br /&gt;
&lt;br /&gt;
Amennyiben az SimpleSAMLphp kezdőlapja hiba nélkül megjelent, akkor nyissuk meg a '''config/config.php''' fájl szerkesztésre és végezzük el az alábbi beállításokat.&lt;br /&gt;
&lt;br /&gt;
* '''Az &amp;quot;admin&amp;quot; felhasználó jelszavát, mellyel webes felületen keresztül be tud lépni a települő SSP-be.'''&lt;br /&gt;
 'auth.adminpassword'        =&amp;gt; 'ujjelszotirdide',&lt;br /&gt;
* '''Titkosítási feladatokhoz szükséges &amp;quot;salt&amp;quot;, azaz véletlenszerűen összeálló karaktersorozat'''&lt;br /&gt;
 'secretsalt' =&amp;gt; 'randombytesinsertedhere',&lt;br /&gt;
A karaktersorozat előállításában segíthet az alábbi parancs: &lt;br /&gt;
 tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' &amp;lt;/dev/urandom | dd bs=32 count=1 2&amp;gt;/dev/null;echo&lt;br /&gt;
* '''Elérhetőségeket, amely adatok bekerülnek majd a generált metaadatba'''&lt;br /&gt;
 'technicalcontact_name'     =&amp;gt; 'Gipsz Jakab',&lt;br /&gt;
 'technicalcontact_email'    =&amp;gt; 'jakab.gipsz@example.org',&lt;br /&gt;
* '''Nyelv és időzóna adatok'''&lt;br /&gt;
 'language.default'      =&amp;gt; 'hu',&lt;br /&gt;
 'timezone' =&amp;gt; 'Europe/Budapest',&lt;br /&gt;
&lt;br /&gt;
Az alapadatok megadása után mentsük és zárjuk be a '''config.php'''-t.&lt;br /&gt;
&lt;br /&gt;
=====Naplózás beállítása=====&lt;br /&gt;
&lt;br /&gt;
Alapértelmezetten a SimpleSAMLphp a '''syslog'''-ba irányítja a naplózást.&lt;br /&gt;
&lt;br /&gt;
Ha fájlba akarunk naplózni, akkor a megfelelő könyvtárhoz biztosítsunk írás jogot a webszerver felhasználónak, és ne felejtsünk el gondoskodni a naplófájlok rotálásáról!&lt;br /&gt;
&lt;br /&gt;
* '''log''' mappa létrehozása és jogosultság beállítása&lt;br /&gt;
 sudo mkdir log; sudo chown www-data:adm log; sudo chmod 755 log&lt;br /&gt;
&lt;br /&gt;
* Naplózási szint beállítása a '''config/config.php'''-ban&lt;br /&gt;
 'debug' =&amp;gt; array(&lt;br /&gt;
        'saml' =&amp;gt; true,&lt;br /&gt;
        'backtraces' =&amp;gt; true,&lt;br /&gt;
        'validatexml' =&amp;gt; false,&lt;br /&gt;
 ),&lt;br /&gt;
 'logging.level' =&amp;gt; SimpleSAML\Logger::DEBUG,&lt;br /&gt;
 'logging.handler' =&amp;gt; 'file',&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;A &amp;quot;SimpleSAML\Logger::DEBUG&amp;quot; a legrészletesebb naplózási beállítás, éles rendszernél nem ajánlott csak hiba keresés esetén.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tanúsítvány készítése=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Nem ajánlott a SimpleSAMLphp-hoz és webszerverhez ugyanazt a tanúsítvány használni!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A SimpleSAMLphp alapértelmezetten a tanúsítványt a '''cert''' mappában keresi.&lt;br /&gt;
 mkdir cert&lt;br /&gt;
&lt;br /&gt;
* Az alábbi paranccsal egy 10 éves [[FedCerts |  self-signed tanúsítvány]] generálunk a SimpleSMALphp számára.&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out cert/saml-example-org.crt -keyout cert/saml-example-org.key&lt;br /&gt;
&lt;br /&gt;
A fingerprint az alábbi módon kérdezhető le a legegyszerűbben&lt;br /&gt;
 openssl x509 -fingerprint -noout -in cert/saml-example-org.crt&lt;br /&gt;
&lt;br /&gt;
===Telepítés kész===&lt;br /&gt;
Amennyiben elkészültünk a fenti lépésekkel, úgy a [https://service.example.org/simplesaml/ https://service.example.org/simplesaml/] címen elérjük a telepített SSP-nk webes adminfelületét, ahol megejthetjük a további beállítások nagy részét.&lt;br /&gt;
&lt;br /&gt;
==Identity Provider (IdP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
'''IdP''' engedélyezése: a '''config/config.php''' fájlban kell a saml20 idp-t &amp;quot;true&amp;quot;-re állítani.&lt;br /&gt;
 'enable.saml20-idp' =&amp;gt; true,&lt;br /&gt;
&lt;br /&gt;
===LDAP autentikáció===&lt;br /&gt;
Meg kell adni, hogy az IdP milyen módon azonosítsa a felhasználót, amennyiben alapértelmezés szerint nem engedélyezett modult szeretnénk használni, úgy a megfelelő modult a &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; könyvtár alatt engedélyezni kell. Az alábbi példában az LDAP alapú azonosítást mutatjuk be, amely külön modult nem igényel, alapértelmezés szerint része a telepített alkalmazásnak.&lt;br /&gt;
&lt;br /&gt;
Javasolt az LDAP-ban egy olyan bejegyzést létrehozni az IdP számára, amely olvasni tudja a felhasználóknak a föderációban használt attribútumait. Az azonosítás alapértelmezett módon a felhasználó nevében történő újra bind-olással történik, így a jelszóhoz nem kell hozzáférést adni.&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy megadhassuk az LDAP-hoz tartozó beállításokat, a &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; fájlt kell szerkesztenünk. Az alábbi kódrészletet elegendő beszúrni, és az egyes változóknak a helyi LDAP-nak megfelelő adatokat értékül adni.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'example-ldap' =&amp;gt; array(&lt;br /&gt;
    'ldap:LDAP',&lt;br /&gt;
 &lt;br /&gt;
    /* The hostname of the LDAP server. */&lt;br /&gt;
    'hostname' =&amp;gt; 'ldap.example.org',&lt;br /&gt;
 &lt;br /&gt;
    /* Whether SSL/TLS should be used when contacting the LDAP server. */&lt;br /&gt;
    'enable_tls' =&amp;gt; FALSE,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * Which attributes should be retrieved from the LDAP server.&lt;br /&gt;
     * This can be an array of attribute names, or NULL, in which case&lt;br /&gt;
     * all attributes are fetched.&lt;br /&gt;
     */&lt;br /&gt;
    'attributes' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The pattern which should be used to create the users DN given the username.&lt;br /&gt;
     * %username% in this pattern will be replaced with the users username.&lt;br /&gt;
     *&lt;br /&gt;
     * This option is not used if the search.enable option is set to TRUE.&lt;br /&gt;
    'dnpattern' =&amp;gt; 'uid=%username%,ou=people,dc=example,dc=org',&lt;br /&gt;
     */&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * As an alternative to specifying a pattern for the users DN, it is possible to&lt;br /&gt;
     * search for the username in a set of attributes. This is enabled by this option.&lt;br /&gt;
     */&lt;br /&gt;
    'search.enable' =&amp;gt; TRUE,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The DN which will be used as a base for the search.&lt;br /&gt;
     * This can be a single string, in which case only that DN is searched, or an&lt;br /&gt;
     * array of strings, in which case they will be searched in the order given.&lt;br /&gt;
     */&lt;br /&gt;
    'search.base' =&amp;gt; 'ou=people,dc=example,dc=org',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The attribute(s) the username should match against.&lt;br /&gt;
     *&lt;br /&gt;
     * This is an array with one or more attribute names. Any of the attributes in&lt;br /&gt;
     * the array may match the value the username.&lt;br /&gt;
     */&lt;br /&gt;
    'search.attributes' =&amp;gt; array('uid', 'mail'),&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The username &amp;amp; password the simpleSAMLphp should bind to before searching. If&lt;br /&gt;
     * this is left as NULL, no bind will be performed before searching.&lt;br /&gt;
     */&lt;br /&gt;
    'search.username' =&amp;gt; 'cn=simplesamlphp,dc=example,dc=org',&lt;br /&gt;
    'search.password' =&amp;gt; 'servicepassword',&lt;br /&gt;
&lt;br /&gt;
    'priv.read' =&amp;gt; TRUE,&lt;br /&gt;
    // The DN &amp;amp; password the SimpleSAMLphp should bind to before&lt;br /&gt;
    // retrieving attributes. These options are required if&lt;br /&gt;
    // 'priv.read' is set to TRUE.&lt;br /&gt;
    'priv.username' =&amp;gt; 'cn=simplesamlphp,dc=example,dc=org',&lt;br /&gt;
    'priv.password' =&amp;gt; 'servicepassword;,&lt;br /&gt;
   ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Metaadat alapok===&lt;br /&gt;
A beállítandó IdP alapvető paraméterei a &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlban állíthatók. Az alábbi kódrészlet egy minimális, de már működő példát mutat.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 $metadata['__DYNAMIC:1__'] = array(&lt;br /&gt;
    /*&lt;br /&gt;
     * The hostname for this IdP. This makes it possible to run multiple&lt;br /&gt;
     * IdPs from the same configuration. '__DEFAULT__' means that this one&lt;br /&gt;
     * should be used by default.&lt;br /&gt;
     */&lt;br /&gt;
    'host' =&amp;gt; '__DEFAULT__',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The private key and certificate to use when signing responses.&lt;br /&gt;
     * These are stored in the cert-directory.&lt;br /&gt;
     */&lt;br /&gt;
    'privatekey' =&amp;gt; 'saml-example-org.key',&lt;br /&gt;
    'certificate' =&amp;gt; 'saml-example-org.crt',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The authentication source which should be used to authenticate the&lt;br /&gt;
     * user. This must match one of the entries in config/authsources.php.&lt;br /&gt;
     */&lt;br /&gt;
    'auth' =&amp;gt; 'example-ldap',&lt;br /&gt;
 );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Megfelelő beállítások után a dinamikusan generált metadata a &amp;lt;code&amp;gt;/saml2/idp/metadata.php&amp;lt;/code&amp;gt; útvonalon érhető el.&lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
Legegyszerűbben a telepített SSP felületén tudjuk ellenőrizni, hogy a beállított autentikációs forrás működik-e. A felületen az Authentication fül alatt található egy 'Test authentication sources' link, amelyre kattintva látható minden beállított autentikációs forrás is, így a két alapértelmezett, teszt célokat szolgáló alatt a most beállított example-ldap névre hallgatónak is meg kell jelenni. (A közvetlen url erre az oldalra: simplesaml/module.php/core/authenticate.php) Ez utóbbira kattintva a beállított LDAP-ból autentikálva be kell tudnunk jelentkeznünk; siker esetén az LDAP-ból kinyerhető attribútumokat láthatjuk.&lt;br /&gt;
&lt;br /&gt;
==Service Provider (SP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
&lt;br /&gt;
A telepített alkalmazásunk által kezelt SP-ket a '''config/authsources.php''' fájlban tudjuk beállítani. Az ''entityID, idp, discoURL'' értékeket most hagyjuk ''NULL'' értéken és adjuk hozzá a '''privatekey''' / '''certificate''' részt.&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp a tanúsítvány fájlokat a korábban létrehozott '''cert''' mappában fogja keresni, a fájlokat elég relatív elérési úttal megadni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'default-sp' =&amp;gt; array(&lt;br /&gt;
        'saml:SP',&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of this SP.&lt;br /&gt;
        // Can be NULL/unset, in which case an entity ID is generated based on the metadata URL.&lt;br /&gt;
        'entityID' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of the IdP this should SP should contact.&lt;br /&gt;
        // Can be NULL/unset, in which case the user will be shown a list of available IdPs.&lt;br /&gt;
        'idp' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The URL to the discovery service.&lt;br /&gt;
        // Can be NULL/unset, in which case a builtin discovery service will be used.&lt;br /&gt;
        'discoURL' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        'privatekey' =&amp;gt; 'saml-example-org.key',&lt;br /&gt;
        'certificate' =&amp;gt; 'saml-example-org.crt',&lt;br /&gt;
 &lt;br /&gt;
 ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fenti beállítások alapján az SP entityID-ja megegyezik a metadata elérési útvonalával (szokásos megoldás SSP-nél), nem adunk meg alapértelmezett idp-t, ezáltal az SSP választási lehetőséget kínál fel számunkra, mikor az SP-re szeretnénk bejelentkezni, ill. most még Discovery Service URL-t sem adunk meg, hanem a beépítettet használjuk. Ez utóbbit majd a HREF-be történő integrációkor meg kell változtatni - lásd lejjebb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SP készen áll arra, hogy összekössük egy IdP-vel (ez jellemzően szintén egy SimpleSAMLphp alkalmazás). Ehhez szükséges, hogy SP oldalon beállítsuk az IdP metadata-t és IdP oldalon is beállítsuk az SP metadata-t.&lt;br /&gt;
&lt;br /&gt;
====Metadata====&lt;br /&gt;
====Metadata fájlok====&lt;br /&gt;
A különböző metadata template fájlok a '''metadata-templates''' mappában találhatóak. A nekünk szükséges template fájlt másoljuk át a metadata mappába.&lt;br /&gt;
&lt;br /&gt;
* '''SP''' oldalon lennie kell egy''' metadata/saml20-idp-remote.php'''  fájlnak. Ez a fájl tartalmazza az IdP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-idp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
* '''IdP''' oldalon lennie kell egy '''metadata/saml20-sp-remote.php''' fájlnak. Ez a fájl tartalmazza az SP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-sp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
====Metadata letöltés====&lt;br /&gt;
&lt;br /&gt;
Ezen az oldalon megtaláljuk az SP vagy IdP-re vonatkozó '''metadata'''-t, '''XML''' és '''PHP''' formátumban: https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp?output=xhtml&lt;br /&gt;
&lt;br /&gt;
====SP metadata beállítás IdP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 SP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 SP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array (&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'AssertionConsumerService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 0,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    1 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 1,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    2 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 2,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    3 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 3,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:artifact-01',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp/artifact',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'contacts' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'emailAddress' =&amp;gt; 'admin@example.org',&lt;br /&gt;
      'contactType' =&amp;gt; 'technical',&lt;br /&gt;
      'givenName' =&amp;gt; 'Example Corp. IT Dept.',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot IdP oldalon, a '''metadata/saml20-sp-remote.php''' fájl végére illesszük be.&lt;br /&gt;
&lt;br /&gt;
====IdP metadata beállítás SP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://idp.example.org/simplesaml/saml2/idp/metadata.php'] = array (&lt;br /&gt;
  'metadata-set' =&amp;gt; 'saml20-idp-remote',&lt;br /&gt;
  'entityid' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/metadata.php',&lt;br /&gt;
  'SingleSignOnService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SSOService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SingleLogoutService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
  'NameIDFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot SP oldalon, a '''metadata/saml20-idp-remote.php''' fájl végére illesszük be. &lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
&lt;br /&gt;
A fent elvégzett alapbeállítások után már tudjuk tesztelni a, hogy a felépített IdP - SP kapcsolat működik-e.&lt;br /&gt;
&lt;br /&gt;
SP oldalon nyissuk meg a '''simplesaml''' kezdőlapot:&lt;br /&gt;
&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Azonosítás (autentikáció)&amp;quot; fül / &amp;quot;Azonosítási (autentikációs) beállítások tesztelése&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Authentication&amp;quot; fül / &amp;quot;Test configured authentication sources&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
&lt;br /&gt;
A legördülő menüben az IdP-nk &amp;quot;nevére&amp;quot; kattintva, be kell tudnunk jelentkezni (az IdP-n keresztül). Ha működik, akkor az IdP visszairányít az SP-re, kiírja az azonosított felhasználó attribútumait. &lt;br /&gt;
&lt;br /&gt;
Az alapvető lépsekkel kész vagyunk, van egy működő SP-nk és egy működő IdP-nk.&lt;br /&gt;
&lt;br /&gt;
==HREF-integráció==&lt;br /&gt;
&lt;br /&gt;
===Metadata beállítása (IdP és SP is)===&lt;br /&gt;
Javasolt [[MDX | dinamikus metaadatforrást (MDX)]] használni, opcionálisan kiegészítve statikus állományokkal. Részletes leírás itt: [[SimpleSAMLMixedMetadata]]&lt;br /&gt;
&lt;br /&gt;
===IdP===&lt;br /&gt;
Amennyiben van SSP alapú IdP-nk, melyet szeretnénk a föderáció részévé tenni, úgy a teendők a következők.&lt;br /&gt;
* (Az adminisztratív teendőktől itt most eltekintünk, a csatlakozás folyamata [[HREFJoin|itt van leírva]])&lt;br /&gt;
* Kell küldeni egy levelet a [mailto:info@eduid.hu info@eduid.hu] címre, benne néhány mondat mellett az IdP metaadatának URL-jével (https://example.org/simplesamlphp/saml2/idp/metadata.php)&lt;br /&gt;
* Ha minden rendben megy, akkor az IdP bekerül a [[Resource_Registry]]-be, ezáltal a föderációs metaadatba is.&lt;br /&gt;
* Az előző pontban leírt módon be kell állítani a központi metadata feldolgozását.&lt;br /&gt;
* Amennyiben a föderációs metaadatban már szerepel a mi IdP-nk is, úgy a föderáció valamelyik, tesztelési célokat szolgáló SP-jénél ki is próbálhatjuk a bejelentkezést. &lt;br /&gt;
&lt;br /&gt;
:'''Fontos''', hogy a föderációs Discovery Service óránként generálja újra az IdP-k listáját, így ennyi idő mindenképp szükséges, hogy az új IdP megjelenjen itt, az egyes SP-k pedig két óránként töltik újra a metaadatot, így előfordulhat, hogy azonnal nem fog minden működni, de néhány óra alatt várhatóan beindul. :)&lt;br /&gt;
&lt;br /&gt;
:Tesztelésre használható oldal: https://attributes.eduid.hu&lt;br /&gt;
&lt;br /&gt;
* Ahhoz, hogy a Resource Registry-be is be tudjunk lépni és az IdP további, a föderációra vonatkozó beállításait meg tudjuk ejteni, ehhez az IdP-nek ki kell adnia az alábbi attribútumokat:&lt;br /&gt;
** [[HREFAttributeSpec#mail|mail]] - ez belépés után, manuálisan is beállítható&lt;br /&gt;
** [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]&lt;br /&gt;
** &amp;lt;del&amp;gt;[[HREFAttributeSpec#schacHomeOrganizationType|schacHomeOrganizationType]]&amp;lt;/del&amp;gt; (az attribútumot hamarosan kivezetjük a kötelező attribútumok közül)&lt;br /&gt;
** [[HREFAttributeSpec#eduScopedAffiliation|eduPersonScopedAffiliation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútumok kezelése====&lt;br /&gt;
Beállított IdP-nk alapértelmezés szerint azokat az attribútumokat adja ki, melyeket a metaadat alapján az SP kért (Lásd a metadatában a RequestedAttribute elemeket), és egyúttal alapból meg tudta szerezni a felhasználói adatbázisból, esetünkben az LDAP-ból. Mivel néhány attribútum nem szerepel az LDAP-ban, hanem az IdP-ben kell előállítani, így pár helyen módosítanunk kell az alapértelmezett konfiguráción.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlba szerkesszük be az alábbi kódrészlet értelemszerűen módosított változatát. Az &amp;lt;code&amp;gt;'auth' =&amp;gt; 'example-ldap',&amp;lt;/code&amp;gt; sor alatt kezdjük. Fontos, hogy egyúttal a config.php &amp;lt;code&amp;gt;authproc.idp&amp;lt;/code&amp;gt; részét kikommentezzük, nehogy az ottani sorszámokkal megadott default feladatok bekavarjanak.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'AttributeNameFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',&lt;br /&gt;
 'userid.attribute' =&amp;gt; 'uid', // Itt adjuk meg, hogy mely, az LDAPból származó attribútum alapján fogja az IdP kiszámítani az eduPersonTargetedID-t&lt;br /&gt;
 'authproc' =&amp;gt; array(&lt;br /&gt;
                10 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'uid' =&amp;gt; 'eduPersonPrincipalName'&lt;br /&gt;
                //Itt az 'uid' az az attribútum az LDAP-ban, amely a felhasználó azonosítóját tartalmazza, mert ebből képezzük az eduPersonPrincipalName-t.&lt;br /&gt;
                ),&lt;br /&gt;
                # 20 =&amp;gt; array(&lt;br /&gt;
                #         'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                #         'schacHomeOrganizationType' =&amp;gt; array('urn:schac:homeOrganizationType:hu:university')&lt;br /&gt;
                # //Kötelező statikus attribútum az [[HREFAttributeSpec#schacHomeOrganizationType|intézmény jellegének]] megfelelően&lt;br /&gt;
                # ),&lt;br /&gt;
                30 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonPrincipalName már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                40 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonAffiliation',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonAffiliation már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                50 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'eduPersonAffiliation' =&amp;gt; 'eduPersonScopedAffiliation'&lt;br /&gt;
                // Az LDAP-ból eduPersonAffiliation-ként érkező attribútumból föderációs elvárásoknak megfelelően eduPersonScopedAffiliationt készítünk&lt;br /&gt;
                ),&lt;br /&gt;
                60 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                        'eduPersonScopedAffiliation' =&amp;gt; array('member@intezmenydomain.hu')&lt;br /&gt;
                // Az eduPersonScopedAffiliation-ben tesztelés céljából kiadhatjuk member értéket, &lt;br /&gt;
                // így ha LDAP-ból nem jön érték, akkor is láthatjuk, hogy működik az attribútum kiadás &lt;br /&gt;
                ),&lt;br /&gt;
                61 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:TargetedID',&lt;br /&gt;
                        'nameId' =&amp;gt; TRUE,&lt;br /&gt;
                ),&lt;br /&gt;
               // Itt állítjuk be, hogy az IdP előállítson és kiadhasson állandóazonosítóként eduPersonTargetedID-t, ha kérik&lt;br /&gt;
                70 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'name2oid'&lt;br /&gt;
                // Az LDAP-os attribútum nevekből itt kreálunk szabványos urn:oid formátumúakat&lt;br /&gt;
                ),&lt;br /&gt;
                80 =&amp;gt; 'core:AttributeLimit',&lt;br /&gt;
              ), // .authproc&lt;br /&gt;
       'simplesaml.nameidattribute' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
       'attributeencodings' =&amp;gt; array(&lt;br /&gt;
               'urn:oid:1.3.6.1.4.1.5923.1.1.1.10' =&amp;gt; 'raw',&lt;br /&gt;
        ),&lt;br /&gt;
        'sign.logout' =&amp;gt; true&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: További tudnivalók a [[Resource_Registry|Resource Registry-ről]], ill. a [[HREFAttributeSpec|Föderációs attribútum specifikációról]].&lt;br /&gt;
&lt;br /&gt;
* Ha minden rendben ment, akkor a Resource Registry-ben regisztrált IdP-hez tartozó adminisztrációs jogok átkerülnek az IdP technikai gazdájához, s ezzel a folyamat kész is.&lt;br /&gt;
&lt;br /&gt;
===SP===&lt;br /&gt;
Amennyiben IdP-t is beállítottunk, és be is tudunk lépni a Resource Registry-be, úgy nincs más dolgunk, mint az RR-ben új SP-t hozzáadni a föderációhoz, amely a megfelelő átfutási idő után a föderáció minden tagjánál látható is lesz.&lt;br /&gt;
&lt;br /&gt;
Ellenkező esetben (nincs IdP, és nem is tervezünk beállítani), akkor az IdP hozzáadásánál részletezett pontokon kell végig menni a metaadat betöltéséig, s a továbbiakat az említett e-mail címen megbeszélni.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútum scopeok használata====&lt;br /&gt;
A HREF föderáció IdP-i ún. scopeolt attribútumokat is használnak. Ez a scopeolás azt jelenti, hogy minden egyes IdP csak a saját scopejában ad ki attribútumokat, és a Shibboleth SP-k ezt ellenőrzik is. A scope és az attribútum valódi értéke egy '@' karakterrel kerül elválasztásra (ilyen attribútumok jelenleg: [[HREFAttributeSpec#eduPersonAffiliation|eduPersonScopedAffiliation]] illetve [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]).&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp alapértelmezett telepítése nem szűri a hibásan scopeolt értékeket. Kiegészítő modulként szűrésre használható az NIIF által fejlesztett [https://github.com/NIIF/simplesamlphp-module-attributescope attributescope modul], ami reményeink szerint rövid távon a hivatalos SimpleSAMLphp kiadás része lehet.&lt;br /&gt;
&lt;br /&gt;
A telepítésről és konfigurációról bővebben itt lehet olvasni: https://github.com/NIIF/simplesamlphp-module-attributescope&lt;br /&gt;
&lt;br /&gt;
: Az &amp;lt;code&amp;gt;attributescope&amp;lt;/code&amp;gt; modul használata esetén a következőképp kell módosítani a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlt:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 authproc.sp =  array(&lt;br /&gt;
                      ...&lt;br /&gt;
                     // 49 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap', 'oid2name'),&lt;br /&gt;
                     50 =&amp;gt; array(             'class' =&amp;gt; 'attributescope:FilterAttributes'&lt;br /&gt;
                     ),&lt;br /&gt;
                     ...&lt;br /&gt;
                ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Figyeljünk arra, hogy mire a modulhoz ér a vezérlés, az attribútumok  nevei ''friendlyName'' alakúak legyenek (ne pedig ''oid''-ok). A  példában erre utal a 49-es sor.&lt;br /&gt;
&lt;br /&gt;
[[Category: AAI]] [[Category: simpleSAMLphp]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Matteo(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5037</id>
		<title>SSP2</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5037"/>
				<updated>2024-08-13T08:44:00Z</updated>
		
		<summary type="html">&lt;p&gt;Matteo(AT)niif.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Az alábbi lapon megkíséreljük összefoglalni a legfontosabb lépéseket, melyek általános esetben elegendőek ahhoz, hogy működő SimpleSAMLphp (SSP) alkalmazást állítsunk üzembe.&lt;br /&gt;
&lt;br /&gt;
==Telepítés==&lt;br /&gt;
Először is nagyvonalakban leírásra kerülnek az előkészületek ezt követően pedig maga a szoftver telepítése és beállítása.&lt;br /&gt;
===Előkészületek===&lt;br /&gt;
Ahhoz, hogy problémamentesen telepíthessük SSP alkalmazásunkat, az alábbi szoftverkomponenseknek kell működniük szerverünkön.&lt;br /&gt;
* A következő könyvtárakat kiegészítőket telepíteni kell:  &amp;lt;code&amp;gt;wget openssl unzip build-essential libldap2-dev libldap-common&amp;lt;/code&amp;gt;&lt;br /&gt;
* PHP futtatására alkalmas webszerver&lt;br /&gt;
* PHP környezet (&amp;gt;=8.0)&lt;br /&gt;
* A következő PHP kiterjesztéseket engedélyezni kell&lt;br /&gt;
** &amp;lt;code&amp;gt;posix, date , dom , fileinfo , filter , hash , json , libxml , mbstring , openssl , pcre , session , simplexml , sodium , SPL, zlib, ldap&amp;lt;/code&amp;gt;&lt;br /&gt;
** Adatbázisból történő autentikáció esetén a megfelelő adatbázis-csatolót &amp;lt;code&amp;gt;mysqli, pdo, pdo_mysql&amp;lt;/code&amp;gt;&lt;br /&gt;
** RADIUS szerveren keresztül történő autentikáció esetén: &amp;lt;code&amp;gt;radius&amp;lt;/code&amp;gt;&lt;br /&gt;
* Információk, certek:&lt;br /&gt;
** Bár a szoftver képes futni mariadb, és redis nélkül, ezek vagy hasonló megoldások használata éles környezetben ajánlott.&lt;br /&gt;
*** Amennyiben ezeket szándékozunk használni database connection stringgel kell rendelkezni, redis elérhetőséggel és jelszóval rendelkezni.&lt;br /&gt;
*** Az adatbázis szerkezetének kialakítása a használt moduloktól függ, a leggyakoribb a consent modul, ott van is dokumentáció az adatbázis inicializálásáról.&lt;br /&gt;
&lt;br /&gt;
** Szükséges 2 certpár, az egyik az apachenak a másik az SSP-nek ezutóbbi lehet önalárírt, és nem ajánlott ugyan azt használni.&lt;br /&gt;
&lt;br /&gt;
====Composer====&lt;br /&gt;
&lt;br /&gt;
A '''[https://getcomposer.org composer]''' PHP csomagkezelőt is telepíteni kell (akár forrásból, akár csomagból), hogy telepíteni lehessen a SimpleSAMLphp futásához szükséges PHP library-ket.&lt;br /&gt;
&lt;br /&gt;
===Telepítés===&lt;br /&gt;
Elvégezhető composerrel például a &amp;lt;code&amp;gt;/var/&amp;lt;/code&amp;gt; mappában:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;composer create-project simplesamlphp/simplesamlphp:2.1.3&amp;lt;/code&amp;gt;&lt;br /&gt;
Mappaszerkezet módosítása:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
mv simplesamlphp simplesamlphp-prod #Tetszőleges átnevezés&lt;br /&gt;
mkdir -p simplesamlphp-prod/cert&lt;br /&gt;
mkdir -p /var/simplesamlphp-prod/log/stats/&lt;br /&gt;
mkdir -p /var/simplesamlphp-prod/mdx-cache/&lt;br /&gt;
chown -R www-data:www-data /var/simplesamlphp-prod/mdx-cache/&lt;br /&gt;
chown -R www-data:www-data /var/simplesamlphp-prod/log/&lt;br /&gt;
chown -R www-data:www-data /var/simplesamlphp-prod/metadata/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Composerrel a szükséges modulok telepítése (például LDAP, REDIS, vagy consent):&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
composer require simplesamlphp/simplesamlphp-module-ldap:v2.3.2&lt;br /&gt;
composer require predis/predis:2.2.2&lt;br /&gt;
composer require simplesamlphp/simplesamlphp-module-consent:1.3.2&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Ezzel a telepítés, és a szükséges kiegészítők telepítése megtörtént.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Apache konfigurálás===&lt;br /&gt;
&lt;br /&gt;
A webről csak a &amp;lt;code&amp;gt;/var/simplesamlphp-prod/public&amp;lt;/code&amp;gt; könyvtárat kell elérni. '''Tilos''' a teljes simplesamlphp könyvtárat a DocumentRoot alá tenni!&lt;br /&gt;
&lt;br /&gt;
 Alias /simplesaml /var/simplesamlphp-prod/public&lt;br /&gt;
 &amp;lt;Directory /var/simplesamlphp-prod/public&amp;gt;&lt;br /&gt;
   Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
   Require all granted&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
====Konfigurációs fájlok másolása====&lt;br /&gt;
Mielőtt aktiváljuk valamelyik főszolgáltatását (IdP,SP...) a telepített alkalmazásnak, néhány beállítást meg kell adnunk a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; konfigurációs fájlokban.&lt;br /&gt;
&lt;br /&gt;
* '''config.php''' másolása a '''config-templates''' mappából&lt;br /&gt;
 cp config-templates/config.php config/&lt;br /&gt;
&lt;br /&gt;
* '''authsources.php''' másolása a '''config-templates''' mappából&lt;br /&gt;
 cp config-templates/authsources.php config/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;A '''config.php''' és '''authsources.php''' fájlok másolása utána ellenőrizzük, hogy a SimpleSAMLphp működik-e, a https://example.org/simplesaml oldalon.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Konfigurációs fájlok szerkesztése====&lt;br /&gt;
=====Adminisztrációs adatok beállítása=====&lt;br /&gt;
&lt;br /&gt;
Amennyiben az SimpleSAMLphp kezdőlapja hiba nélkül megjelent, akkor nyissuk meg a '''config/config.php''' fájl szerkesztésre és végezzük el az alábbi beállításokat.&lt;br /&gt;
&lt;br /&gt;
* '''Az &amp;quot;admin&amp;quot; felhasználó jelszavát, mellyel webes felületen keresztül be tud lépni a települő SSP-be.'''&lt;br /&gt;
 'auth.adminpassword'        =&amp;gt; 'ujjelszotirdide',&lt;br /&gt;
* '''Titkosítási feladatokhoz szükséges &amp;quot;salt&amp;quot;, azaz véletlenszerűen összeálló karaktersorozat'''&lt;br /&gt;
 'secretsalt' =&amp;gt; 'randombytesinsertedhere',&lt;br /&gt;
A karaktersorozat előállításában segíthet az alábbi parancs: &lt;br /&gt;
 tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' &amp;lt;/dev/urandom | dd bs=32 count=1 2&amp;gt;/dev/null;echo&lt;br /&gt;
* '''Elérhetőségeket, amely adatok bekerülnek majd a generált metaadatba'''&lt;br /&gt;
 'technicalcontact_name'     =&amp;gt; 'Gipsz Jakab',&lt;br /&gt;
 'technicalcontact_email'    =&amp;gt; 'jakab.gipsz@example.org',&lt;br /&gt;
* '''Nyelv és időzóna adatok'''&lt;br /&gt;
 'language.default'      =&amp;gt; 'hu',&lt;br /&gt;
 'timezone' =&amp;gt; 'Europe/Budapest',&lt;br /&gt;
&lt;br /&gt;
Az alapadatok megadása után mentsük és zárjuk be a '''config.php'''-t.&lt;br /&gt;
&lt;br /&gt;
=====Naplózás beállítása=====&lt;br /&gt;
&lt;br /&gt;
Alapértelmezetten a SimpleSAMLphp a '''syslog'''-ba irányítja a naplózást.&lt;br /&gt;
&lt;br /&gt;
Ha fájlba akarunk naplózni, akkor a megfelelő könyvtárhoz biztosítsunk írás jogot a webszerver felhasználónak, és ne felejtsünk el gondoskodni a naplófájlok rotálásáról!&lt;br /&gt;
&lt;br /&gt;
* '''log''' mappa létrehozása és jogosultság beállítása&lt;br /&gt;
 sudo mkdir log; sudo chown www-data:adm log; sudo chmod 755 log&lt;br /&gt;
&lt;br /&gt;
* Naplózási szint beállítása a '''config/config.php'''-ban&lt;br /&gt;
 'debug' =&amp;gt; array(&lt;br /&gt;
        'saml' =&amp;gt; true,&lt;br /&gt;
        'backtraces' =&amp;gt; true,&lt;br /&gt;
        'validatexml' =&amp;gt; false,&lt;br /&gt;
 ),&lt;br /&gt;
 'logging.level' =&amp;gt; SimpleSAML\Logger::DEBUG,&lt;br /&gt;
 'logging.handler' =&amp;gt; 'file',&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;A &amp;quot;SimpleSAML\Logger::DEBUG&amp;quot; a legrészletesebb naplózási beállítás, éles rendszernél nem ajánlott csak hiba keresés esetén.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tanúsítvány készítése=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Nem ajánlott a SimpleSAMLphp-hoz és webszerverhez ugyanazt a tanúsítvány használni!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A SimpleSAMLphp alapértelmezetten a tanúsítványt a '''cert''' mappában keresi.&lt;br /&gt;
 mkdir cert&lt;br /&gt;
&lt;br /&gt;
* Az alábbi paranccsal egy 10 éves [[FedCerts |  self-signed tanúsítvány]] generálunk a SimpleSMALphp számára.&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out cert/saml-example-org.crt -keyout cert/saml-example-org.key&lt;br /&gt;
&lt;br /&gt;
A fingerprint az alábbi módon kérdezhető le a legegyszerűbben&lt;br /&gt;
 openssl x509 -fingerprint -noout -in cert/saml-example-org.crt&lt;br /&gt;
&lt;br /&gt;
===Telepítés kész===&lt;br /&gt;
Amennyiben elkészültünk a fenti lépésekkel, úgy a [https://service.example.org/simplesaml/ https://service.example.org/simplesaml/] címen elérjük a telepített SSP-nk webes adminfelületét, ahol megejthetjük a további beállítások nagy részét.&lt;br /&gt;
&lt;br /&gt;
==Identity Provider (IdP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
'''IdP''' engedélyezése: a '''config/config.php''' fájlban kell a saml20 idp-t &amp;quot;true&amp;quot;-re állítani.&lt;br /&gt;
 'enable.saml20-idp' =&amp;gt; true,&lt;br /&gt;
&lt;br /&gt;
===LDAP autentikáció===&lt;br /&gt;
Meg kell adni, hogy az IdP milyen módon azonosítsa a felhasználót, amennyiben alapértelmezés szerint nem engedélyezett modult szeretnénk használni, úgy a megfelelő modult a &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; könyvtár alatt engedélyezni kell. Az alábbi példában az LDAP alapú azonosítást mutatjuk be, amely külön modult nem igényel, alapértelmezés szerint része a telepített alkalmazásnak.&lt;br /&gt;
&lt;br /&gt;
Javasolt az LDAP-ban egy olyan bejegyzést létrehozni az IdP számára, amely olvasni tudja a felhasználóknak a föderációban használt attribútumait. Az azonosítás alapértelmezett módon a felhasználó nevében történő újra bind-olással történik, így a jelszóhoz nem kell hozzáférést adni.&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy megadhassuk az LDAP-hoz tartozó beállításokat, a &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; fájlt kell szerkesztenünk. Az alábbi kódrészletet elegendő beszúrni, és az egyes változóknak a helyi LDAP-nak megfelelő adatokat értékül adni.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'example-ldap' =&amp;gt; array(&lt;br /&gt;
    'ldap:LDAP',&lt;br /&gt;
 &lt;br /&gt;
    /* The hostname of the LDAP server. */&lt;br /&gt;
    'hostname' =&amp;gt; 'ldap.example.org',&lt;br /&gt;
 &lt;br /&gt;
    /* Whether SSL/TLS should be used when contacting the LDAP server. */&lt;br /&gt;
    'enable_tls' =&amp;gt; FALSE,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * Which attributes should be retrieved from the LDAP server.&lt;br /&gt;
     * This can be an array of attribute names, or NULL, in which case&lt;br /&gt;
     * all attributes are fetched.&lt;br /&gt;
     */&lt;br /&gt;
    'attributes' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The pattern which should be used to create the users DN given the username.&lt;br /&gt;
     * %username% in this pattern will be replaced with the users username.&lt;br /&gt;
     *&lt;br /&gt;
     * This option is not used if the search.enable option is set to TRUE.&lt;br /&gt;
    'dnpattern' =&amp;gt; 'uid=%username%,ou=people,dc=example,dc=org',&lt;br /&gt;
     */&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * As an alternative to specifying a pattern for the users DN, it is possible to&lt;br /&gt;
     * search for the username in a set of attributes. This is enabled by this option.&lt;br /&gt;
     */&lt;br /&gt;
    'search.enable' =&amp;gt; TRUE,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The DN which will be used as a base for the search.&lt;br /&gt;
     * This can be a single string, in which case only that DN is searched, or an&lt;br /&gt;
     * array of strings, in which case they will be searched in the order given.&lt;br /&gt;
     */&lt;br /&gt;
    'search.base' =&amp;gt; 'ou=people,dc=example,dc=org',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The attribute(s) the username should match against.&lt;br /&gt;
     *&lt;br /&gt;
     * This is an array with one or more attribute names. Any of the attributes in&lt;br /&gt;
     * the array may match the value the username.&lt;br /&gt;
     */&lt;br /&gt;
    'search.attributes' =&amp;gt; array('uid', 'mail'),&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The username &amp;amp; password the simpleSAMLphp should bind to before searching. If&lt;br /&gt;
     * this is left as NULL, no bind will be performed before searching.&lt;br /&gt;
     */&lt;br /&gt;
    'search.username' =&amp;gt; 'cn=simplesamlphp,dc=example,dc=org',&lt;br /&gt;
    'search.password' =&amp;gt; 'servicepassword',&lt;br /&gt;
&lt;br /&gt;
    'priv.read' =&amp;gt; TRUE,&lt;br /&gt;
    // The DN &amp;amp; password the SimpleSAMLphp should bind to before&lt;br /&gt;
    // retrieving attributes. These options are required if&lt;br /&gt;
    // 'priv.read' is set to TRUE.&lt;br /&gt;
    'priv.username' =&amp;gt; 'cn=simplesamlphp,dc=example,dc=org',&lt;br /&gt;
    'priv.password' =&amp;gt; 'servicepassword;,&lt;br /&gt;
   ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Metaadat alapok===&lt;br /&gt;
A beállítandó IdP alapvető paraméterei a &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlban állíthatók. Az alábbi kódrészlet egy minimális, de már működő példát mutat.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 $metadata['__DYNAMIC:1__'] = array(&lt;br /&gt;
    /*&lt;br /&gt;
     * The hostname for this IdP. This makes it possible to run multiple&lt;br /&gt;
     * IdPs from the same configuration. '__DEFAULT__' means that this one&lt;br /&gt;
     * should be used by default.&lt;br /&gt;
     */&lt;br /&gt;
    'host' =&amp;gt; '__DEFAULT__',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The private key and certificate to use when signing responses.&lt;br /&gt;
     * These are stored in the cert-directory.&lt;br /&gt;
     */&lt;br /&gt;
    'privatekey' =&amp;gt; 'saml-example-org.key',&lt;br /&gt;
    'certificate' =&amp;gt; 'saml-example-org.crt',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The authentication source which should be used to authenticate the&lt;br /&gt;
     * user. This must match one of the entries in config/authsources.php.&lt;br /&gt;
     */&lt;br /&gt;
    'auth' =&amp;gt; 'example-ldap',&lt;br /&gt;
 );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Megfelelő beállítások után a dinamikusan generált metadata a &amp;lt;code&amp;gt;/saml2/idp/metadata.php&amp;lt;/code&amp;gt; útvonalon érhető el.&lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
Legegyszerűbben a telepített SSP felületén tudjuk ellenőrizni, hogy a beállított autentikációs forrás működik-e. A felületen az Authentication fül alatt található egy 'Test authentication sources' link, amelyre kattintva látható minden beállított autentikációs forrás is, így a két alapértelmezett, teszt célokat szolgáló alatt a most beállított example-ldap névre hallgatónak is meg kell jelenni. (A közvetlen url erre az oldalra: simplesaml/module.php/core/authenticate.php) Ez utóbbira kattintva a beállított LDAP-ból autentikálva be kell tudnunk jelentkeznünk; siker esetén az LDAP-ból kinyerhető attribútumokat láthatjuk.&lt;br /&gt;
&lt;br /&gt;
==Service Provider (SP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
&lt;br /&gt;
A telepített alkalmazásunk által kezelt SP-ket a '''config/authsources.php''' fájlban tudjuk beállítani. Az ''entityID, idp, discoURL'' értékeket most hagyjuk ''NULL'' értéken és adjuk hozzá a '''privatekey''' / '''certificate''' részt.&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp a tanúsítvány fájlokat a korábban létrehozott '''cert''' mappában fogja keresni, a fájlokat elég relatív elérési úttal megadni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'default-sp' =&amp;gt; array(&lt;br /&gt;
        'saml:SP',&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of this SP.&lt;br /&gt;
        // Can be NULL/unset, in which case an entity ID is generated based on the metadata URL.&lt;br /&gt;
        'entityID' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of the IdP this should SP should contact.&lt;br /&gt;
        // Can be NULL/unset, in which case the user will be shown a list of available IdPs.&lt;br /&gt;
        'idp' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The URL to the discovery service.&lt;br /&gt;
        // Can be NULL/unset, in which case a builtin discovery service will be used.&lt;br /&gt;
        'discoURL' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        'privatekey' =&amp;gt; 'saml-example-org.key',&lt;br /&gt;
        'certificate' =&amp;gt; 'saml-example-org.crt',&lt;br /&gt;
 &lt;br /&gt;
 ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fenti beállítások alapján az SP entityID-ja megegyezik a metadata elérési útvonalával (szokásos megoldás SSP-nél), nem adunk meg alapértelmezett idp-t, ezáltal az SSP választási lehetőséget kínál fel számunkra, mikor az SP-re szeretnénk bejelentkezni, ill. most még Discovery Service URL-t sem adunk meg, hanem a beépítettet használjuk. Ez utóbbit majd a HREF-be történő integrációkor meg kell változtatni - lásd lejjebb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SP készen áll arra, hogy összekössük egy IdP-vel (ez jellemzően szintén egy SimpleSAMLphp alkalmazás). Ehhez szükséges, hogy SP oldalon beállítsuk az IdP metadata-t és IdP oldalon is beállítsuk az SP metadata-t.&lt;br /&gt;
&lt;br /&gt;
====Metadata====&lt;br /&gt;
====Metadata fájlok====&lt;br /&gt;
A különböző metadata template fájlok a '''metadata-templates''' mappában találhatóak. A nekünk szükséges template fájlt másoljuk át a metadata mappába.&lt;br /&gt;
&lt;br /&gt;
* '''SP''' oldalon lennie kell egy''' metadata/saml20-idp-remote.php'''  fájlnak. Ez a fájl tartalmazza az IdP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-idp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
* '''IdP''' oldalon lennie kell egy '''metadata/saml20-sp-remote.php''' fájlnak. Ez a fájl tartalmazza az SP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-sp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
====Metadata letöltés====&lt;br /&gt;
&lt;br /&gt;
Ezen az oldalon megtaláljuk az SP vagy IdP-re vonatkozó '''metadata'''-t, '''XML''' és '''PHP''' formátumban: https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp?output=xhtml&lt;br /&gt;
&lt;br /&gt;
====SP metadata beállítás IdP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 SP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 SP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array (&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'AssertionConsumerService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 0,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    1 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 1,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    2 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 2,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    3 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 3,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:artifact-01',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp/artifact',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'contacts' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'emailAddress' =&amp;gt; 'admin@example.org',&lt;br /&gt;
      'contactType' =&amp;gt; 'technical',&lt;br /&gt;
      'givenName' =&amp;gt; 'Example Corp. IT Dept.',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot IdP oldalon, a '''metadata/saml20-sp-remote.php''' fájl végére illesszük be.&lt;br /&gt;
&lt;br /&gt;
====IdP metadata beállítás SP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://idp.example.org/simplesaml/saml2/idp/metadata.php'] = array (&lt;br /&gt;
  'metadata-set' =&amp;gt; 'saml20-idp-remote',&lt;br /&gt;
  'entityid' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/metadata.php',&lt;br /&gt;
  'SingleSignOnService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SSOService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SingleLogoutService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
  'NameIDFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot SP oldalon, a '''metadata/saml20-idp-remote.php''' fájl végére illesszük be. &lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
&lt;br /&gt;
A fent elvégzett alapbeállítások után már tudjuk tesztelni a, hogy a felépített IdP - SP kapcsolat működik-e.&lt;br /&gt;
&lt;br /&gt;
SP oldalon nyissuk meg a '''simplesaml''' kezdőlapot:&lt;br /&gt;
&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Azonosítás (autentikáció)&amp;quot; fül / &amp;quot;Azonosítási (autentikációs) beállítások tesztelése&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Authentication&amp;quot; fül / &amp;quot;Test configured authentication sources&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
&lt;br /&gt;
A legördülő menüben az IdP-nk &amp;quot;nevére&amp;quot; kattintva, be kell tudnunk jelentkezni (az IdP-n keresztül). Ha működik, akkor az IdP visszairányít az SP-re, kiírja az azonosított felhasználó attribútumait. &lt;br /&gt;
&lt;br /&gt;
Az alapvető lépsekkel kész vagyunk, van egy működő SP-nk és egy működő IdP-nk.&lt;br /&gt;
&lt;br /&gt;
==HREF-integráció==&lt;br /&gt;
&lt;br /&gt;
===Metadata beállítása (IdP és SP is)===&lt;br /&gt;
Javasolt [[MDX | dinamikus metaadatforrást (MDX)]] használni, opcionálisan kiegészítve statikus állományokkal. Részletes leírás itt: [[SimpleSAMLMixedMetadata]]&lt;br /&gt;
&lt;br /&gt;
===IdP===&lt;br /&gt;
Amennyiben van SSP alapú IdP-nk, melyet szeretnénk a föderáció részévé tenni, úgy a teendők a következők.&lt;br /&gt;
* (Az adminisztratív teendőktől itt most eltekintünk, a csatlakozás folyamata [[HREFJoin|itt van leírva]])&lt;br /&gt;
* Kell küldeni egy levelet a [mailto:info@eduid.hu info@eduid.hu] címre, benne néhány mondat mellett az IdP metaadatának URL-jével (https://example.org/simplesamlphp/saml2/idp/metadata.php)&lt;br /&gt;
* Ha minden rendben megy, akkor az IdP bekerül a [[Resource_Registry]]-be, ezáltal a föderációs metaadatba is.&lt;br /&gt;
* Az előző pontban leírt módon be kell állítani a központi metadata feldolgozását.&lt;br /&gt;
* Amennyiben a föderációs metaadatban már szerepel a mi IdP-nk is, úgy a föderáció valamelyik, tesztelési célokat szolgáló SP-jénél ki is próbálhatjuk a bejelentkezést. &lt;br /&gt;
&lt;br /&gt;
:'''Fontos''', hogy a föderációs Discovery Service óránként generálja újra az IdP-k listáját, így ennyi idő mindenképp szükséges, hogy az új IdP megjelenjen itt, az egyes SP-k pedig két óránként töltik újra a metaadatot, így előfordulhat, hogy azonnal nem fog minden működni, de néhány óra alatt várhatóan beindul. :)&lt;br /&gt;
&lt;br /&gt;
:Tesztelésre használható oldal: https://attributes.eduid.hu&lt;br /&gt;
&lt;br /&gt;
* Ahhoz, hogy a Resource Registry-be is be tudjunk lépni és az IdP további, a föderációra vonatkozó beállításait meg tudjuk ejteni, ehhez az IdP-nek ki kell adnia az alábbi attribútumokat:&lt;br /&gt;
** [[HREFAttributeSpec#mail|mail]] - ez belépés után, manuálisan is beállítható&lt;br /&gt;
** [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]&lt;br /&gt;
** &amp;lt;del&amp;gt;[[HREFAttributeSpec#schacHomeOrganizationType|schacHomeOrganizationType]]&amp;lt;/del&amp;gt; (az attribútumot hamarosan kivezetjük a kötelező attribútumok közül)&lt;br /&gt;
** [[HREFAttributeSpec#eduScopedAffiliation|eduPersonScopedAffiliation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútumok kezelése====&lt;br /&gt;
Beállított IdP-nk alapértelmezés szerint azokat az attribútumokat adja ki, melyeket a metaadat alapján az SP kért (Lásd a metadatában a RequestedAttribute elemeket), és egyúttal alapból meg tudta szerezni a felhasználói adatbázisból, esetünkben az LDAP-ból. Mivel néhány attribútum nem szerepel az LDAP-ban, hanem az IdP-ben kell előállítani, így pár helyen módosítanunk kell az alapértelmezett konfiguráción.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlba szerkesszük be az alábbi kódrészlet értelemszerűen módosított változatát. Az &amp;lt;code&amp;gt;'auth' =&amp;gt; 'example-ldap',&amp;lt;/code&amp;gt; sor alatt kezdjük. Fontos, hogy egyúttal a config.php &amp;lt;code&amp;gt;authproc.idp&amp;lt;/code&amp;gt; részét kikommentezzük, nehogy az ottani sorszámokkal megadott default feladatok bekavarjanak.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'AttributeNameFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',&lt;br /&gt;
 'userid.attribute' =&amp;gt; 'uid', // Itt adjuk meg, hogy mely, az LDAPból származó attribútum alapján fogja az IdP kiszámítani az eduPersonTargetedID-t&lt;br /&gt;
 'authproc' =&amp;gt; array(&lt;br /&gt;
                10 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'uid' =&amp;gt; 'eduPersonPrincipalName'&lt;br /&gt;
                //Itt az 'uid' az az attribútum az LDAP-ban, amely a felhasználó azonosítóját tartalmazza, mert ebből képezzük az eduPersonPrincipalName-t.&lt;br /&gt;
                ),&lt;br /&gt;
                # 20 =&amp;gt; array(&lt;br /&gt;
                #         'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                #         'schacHomeOrganizationType' =&amp;gt; array('urn:schac:homeOrganizationType:hu:university')&lt;br /&gt;
                # //Kötelező statikus attribútum az [[HREFAttributeSpec#schacHomeOrganizationType|intézmény jellegének]] megfelelően&lt;br /&gt;
                # ),&lt;br /&gt;
                30 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonPrincipalName már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                40 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonAffiliation',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonAffiliation már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                50 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'eduPersonAffiliation' =&amp;gt; 'eduPersonScopedAffiliation'&lt;br /&gt;
                // Az LDAP-ból eduPersonAffiliation-ként érkező attribútumból föderációs elvárásoknak megfelelően eduPersonScopedAffiliationt készítünk&lt;br /&gt;
                ),&lt;br /&gt;
                60 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                        'eduPersonScopedAffiliation' =&amp;gt; array('member@intezmenydomain.hu')&lt;br /&gt;
                // Az eduPersonScopedAffiliation-ben tesztelés céljából kiadhatjuk member értéket, &lt;br /&gt;
                // így ha LDAP-ból nem jön érték, akkor is láthatjuk, hogy működik az attribútum kiadás &lt;br /&gt;
                ),&lt;br /&gt;
                61 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:TargetedID',&lt;br /&gt;
                        'nameId' =&amp;gt; TRUE,&lt;br /&gt;
                ),&lt;br /&gt;
               // Itt állítjuk be, hogy az IdP előállítson és kiadhasson állandóazonosítóként eduPersonTargetedID-t, ha kérik&lt;br /&gt;
                70 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'name2oid'&lt;br /&gt;
                // Az LDAP-os attribútum nevekből itt kreálunk szabványos urn:oid formátumúakat&lt;br /&gt;
                ),&lt;br /&gt;
                80 =&amp;gt; 'core:AttributeLimit',&lt;br /&gt;
              ), // .authproc&lt;br /&gt;
       'simplesaml.nameidattribute' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
       'attributeencodings' =&amp;gt; array(&lt;br /&gt;
               'urn:oid:1.3.6.1.4.1.5923.1.1.1.10' =&amp;gt; 'raw',&lt;br /&gt;
        ),&lt;br /&gt;
        'sign.logout' =&amp;gt; true&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: További tudnivalók a [[Resource_Registry|Resource Registry-ről]], ill. a [[HREFAttributeSpec|Föderációs attribútum specifikációról]].&lt;br /&gt;
&lt;br /&gt;
* Ha minden rendben ment, akkor a Resource Registry-ben regisztrált IdP-hez tartozó adminisztrációs jogok átkerülnek az IdP technikai gazdájához, s ezzel a folyamat kész is.&lt;br /&gt;
&lt;br /&gt;
===SP===&lt;br /&gt;
Amennyiben IdP-t is beállítottunk, és be is tudunk lépni a Resource Registry-be, úgy nincs más dolgunk, mint az RR-ben új SP-t hozzáadni a föderációhoz, amely a megfelelő átfutási idő után a föderáció minden tagjánál látható is lesz.&lt;br /&gt;
&lt;br /&gt;
Ellenkező esetben (nincs IdP, és nem is tervezünk beállítani), akkor az IdP hozzáadásánál részletezett pontokon kell végig menni a metaadat betöltéséig, s a továbbiakat az említett e-mail címen megbeszélni.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútum scopeok használata====&lt;br /&gt;
A HREF föderáció IdP-i ún. scopeolt attribútumokat is használnak. Ez a scopeolás azt jelenti, hogy minden egyes IdP csak a saját scopejában ad ki attribútumokat, és a Shibboleth SP-k ezt ellenőrzik is. A scope és az attribútum valódi értéke egy '@' karakterrel kerül elválasztásra (ilyen attribútumok jelenleg: [[HREFAttributeSpec#eduPersonAffiliation|eduPersonScopedAffiliation]] illetve [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]).&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp alapértelmezett telepítése nem szűri a hibásan scopeolt értékeket. Kiegészítő modulként szűrésre használható az NIIF által fejlesztett [https://github.com/NIIF/simplesamlphp-module-attributescope attributescope modul], ami reményeink szerint rövid távon a hivatalos SimpleSAMLphp kiadás része lehet.&lt;br /&gt;
&lt;br /&gt;
A telepítésről és konfigurációról bővebben itt lehet olvasni: https://github.com/NIIF/simplesamlphp-module-attributescope&lt;br /&gt;
&lt;br /&gt;
: Az &amp;lt;code&amp;gt;attributescope&amp;lt;/code&amp;gt; modul használata esetén a következőképp kell módosítani a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlt:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 authproc.sp =  array(&lt;br /&gt;
                      ...&lt;br /&gt;
                     // 49 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap', 'oid2name'),&lt;br /&gt;
                     50 =&amp;gt; array(             'class' =&amp;gt; 'attributescope:FilterAttributes'&lt;br /&gt;
                     ),&lt;br /&gt;
                     ...&lt;br /&gt;
                ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Figyeljünk arra, hogy mire a modulhoz ér a vezérlés, az attribútumok  nevei ''friendlyName'' alakúak legyenek (ne pedig ''oid''-ok). A  példában erre utal a 49-es sor.&lt;br /&gt;
&lt;br /&gt;
[[Category: AAI]] [[Category: simpleSAMLphp]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Matteo(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5036</id>
		<title>SSP2</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5036"/>
				<updated>2024-08-13T08:36:27Z</updated>
		
		<summary type="html">&lt;p&gt;Matteo(AT)niif.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Az alábbi lapon megkíséreljük összefoglalni a legfontosabb lépéseket, melyek általános esetben elegendőek ahhoz, hogy működő SimpleSAMLphp (SSP) alkalmazást állítsunk üzembe.&lt;br /&gt;
&lt;br /&gt;
==Telepítés==&lt;br /&gt;
Először is nagyvonalakban leírásra kerülnek az előkészületek ezt követően pedig maga a szoftver telepítése és beállítása.&lt;br /&gt;
===Előkészületek===&lt;br /&gt;
Ahhoz, hogy problémamentesen telepíthessük SSP alkalmazásunkat, az alábbi szoftverkomponenseknek kell működniük szerverünkön.&lt;br /&gt;
* A következő könyvtárakat kiegészítőket telepíteni kell:  &amp;lt;code&amp;gt;wget openssl unzip build-essential libldap2-dev libldap-common&amp;lt;/code&amp;gt;&lt;br /&gt;
* PHP futtatására alkalmas webszerver&lt;br /&gt;
* PHP környezet (&amp;gt;=8.0)&lt;br /&gt;
* A következő PHP kiterjesztéseket engedélyezni kell&lt;br /&gt;
** &amp;lt;code&amp;gt;posix, date , dom , fileinfo , filter , hash , json , libxml , mbstring , openssl , pcre , session , simplexml , sodium , SPL, zlib, ldap, &amp;lt;/code&amp;gt;&lt;br /&gt;
** Adatbázisból történő autentikáció esetén a megfelelő adatbázis-csatolót &amp;lt;code&amp;gt;mysqli, pdo, pdo_mysql&amp;lt;/code&amp;gt;&lt;br /&gt;
** RADIUS szerveren keresztül történő autentikáció esetén: &amp;lt;code&amp;gt;radius&amp;lt;/code&amp;gt;&lt;br /&gt;
* Információk, certek:&lt;br /&gt;
** Bár a szoftver képes futni mariadb, és redis nélkül, ezek vagy hasonló megoldások használata éles környezetben ajánlott.&lt;br /&gt;
*** Amennyiben ezeket szándékozunk használni database connection stringgel kell rendelkezni, redis elérhetőséggel és jelszóval rendelkezni.&lt;br /&gt;
*** Az adatbázis szerkezetének kialakítása a használt moduloktól függ, a leggyakoribb a consent modul, ott van is dokumentáció az adatbázis inicializálásáról.&lt;br /&gt;
&lt;br /&gt;
** Kell 2 certpár, az egyik az apachenak a másik az SSP-nek ezutóbbi lehet önalárírt, és nem ajánlott ugyan azt használni.&lt;br /&gt;
&lt;br /&gt;
====Composer====&lt;br /&gt;
&lt;br /&gt;
A '''[https://getcomposer.org composer]''' PHP csomagkezelőt is telepíteni kell (akár forrásból, akár csomagból), hogy telepíteni lehessen a SimpleSAMLphp futásához szükséges PHP library-ket.&lt;br /&gt;
&lt;br /&gt;
===Letöltés===&lt;br /&gt;
A GitHubról történő telepítés előnye, hogy a simplesamlphp könnyen frissíthető marad, csak a third party modulokat kell újratelepíteni. Az utolsó stabil verzió számát a https://simplesamlphp.org/download oldalról tudhatjuk meg.&lt;br /&gt;
&lt;br /&gt;
 cd /var&lt;br /&gt;
 git clone https://github.com/simplesamlphp/simplesamlphp.git&lt;br /&gt;
 cd simplesamlphp&lt;br /&gt;
 git checkout tags/v1.16.2 -b v1.16.2&lt;br /&gt;
 composer install --no-dev&lt;br /&gt;
&lt;br /&gt;
===Apache konfigurálás===&lt;br /&gt;
&lt;br /&gt;
A webről csak a &amp;lt;code&amp;gt;/var/simplesamlphp/www&amp;lt;/code&amp;gt; könyvtárat kell elérni. '''Tilos''' a teljes simplesamlphp könyvtárat a DocumentRoot alá tenni!&lt;br /&gt;
&lt;br /&gt;
 Alias /simplesaml /var/simplesamlphp/www&lt;br /&gt;
 &amp;lt;Directory /var/simplesamlphp/www&amp;gt;&lt;br /&gt;
   Require all granted&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
====Konfigurációs fájlok másolása====&lt;br /&gt;
Mielőtt aktiváljuk valamelyik főszolgáltatását (IdP,SP...) a telepített alkalmazásnak, néhány beállítást meg kell adnunk a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; konfigurációs fájlokban.&lt;br /&gt;
&lt;br /&gt;
* '''config.php''' másolása a '''config-templates''' mappából&lt;br /&gt;
 cp config-templates/config.php config/&lt;br /&gt;
&lt;br /&gt;
* '''authsources.php''' másolása a '''config-templates''' mappából&lt;br /&gt;
 cp config-templates/authsources.php config/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;A '''config.php''' és '''authsources.php''' fájlok másolása utána ellenőrizzük, hogy a SimpleSAMLphp működik-e, a https://example.org/simplesaml oldalon.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Konfigurációs fájlok szerkesztése====&lt;br /&gt;
=====Adminisztrációs adatok beállítása=====&lt;br /&gt;
&lt;br /&gt;
Amennyiben az SimpleSAMLphp kezdőlapja hiba nélkül megjelent, akkor nyissuk meg a '''config/config.php''' fájl szerkesztésre és végezzük el az alábbi beállításokat.&lt;br /&gt;
&lt;br /&gt;
* '''Az &amp;quot;admin&amp;quot; felhasználó jelszavát, mellyel webes felületen keresztül be tud lépni a települő SSP-be.'''&lt;br /&gt;
 'auth.adminpassword'        =&amp;gt; 'ujjelszotirdide',&lt;br /&gt;
* '''Titkosítási feladatokhoz szükséges &amp;quot;salt&amp;quot;, azaz véletlenszerűen összeálló karaktersorozat'''&lt;br /&gt;
 'secretsalt' =&amp;gt; 'randombytesinsertedhere',&lt;br /&gt;
A karaktersorozat előállításában segíthet az alábbi parancs: &lt;br /&gt;
 tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' &amp;lt;/dev/urandom | dd bs=32 count=1 2&amp;gt;/dev/null;echo&lt;br /&gt;
* '''Elérhetőségeket, amely adatok bekerülnek majd a generált metaadatba'''&lt;br /&gt;
 'technicalcontact_name'     =&amp;gt; 'Gipsz Jakab',&lt;br /&gt;
 'technicalcontact_email'    =&amp;gt; 'jakab.gipsz@example.org',&lt;br /&gt;
* '''Nyelv és időzóna adatok'''&lt;br /&gt;
 'language.default'      =&amp;gt; 'hu',&lt;br /&gt;
 'timezone' =&amp;gt; 'Europe/Budapest',&lt;br /&gt;
&lt;br /&gt;
Az alapadatok megadása után mentsük és zárjuk be a '''config.php'''-t.&lt;br /&gt;
&lt;br /&gt;
=====Naplózás beállítása=====&lt;br /&gt;
&lt;br /&gt;
Alapértelmezetten a SimpleSAMLphp a '''syslog'''-ba irányítja a naplózást.&lt;br /&gt;
&lt;br /&gt;
Ha fájlba akarunk naplózni, akkor a megfelelő könyvtárhoz biztosítsunk írás jogot a webszerver felhasználónak, és ne felejtsünk el gondoskodni a naplófájlok rotálásáról!&lt;br /&gt;
&lt;br /&gt;
* '''log''' mappa létrehozása és jogosultság beállítása&lt;br /&gt;
 sudo mkdir log; sudo chown www-data:adm log; sudo chmod 755 log&lt;br /&gt;
&lt;br /&gt;
* Naplózási szint beállítása a '''config/config.php'''-ban&lt;br /&gt;
 'debug' =&amp;gt; array(&lt;br /&gt;
        'saml' =&amp;gt; true,&lt;br /&gt;
        'backtraces' =&amp;gt; true,&lt;br /&gt;
        'validatexml' =&amp;gt; false,&lt;br /&gt;
 ),&lt;br /&gt;
 'logging.level' =&amp;gt; SimpleSAML\Logger::DEBUG,&lt;br /&gt;
 'logging.handler' =&amp;gt; 'file',&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;A &amp;quot;SimpleSAML\Logger::DEBUG&amp;quot; a legrészletesebb naplózási beállítás, éles rendszernél nem ajánlott csak hiba keresés esetén.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tanúsítvány készítése=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Nem ajánlott a SimpleSAMLphp-hoz és webszerverhez ugyanazt a tanúsítvány használni!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A SimpleSAMLphp alapértelmezetten a tanúsítványt a '''cert''' mappában keresi.&lt;br /&gt;
 mkdir cert&lt;br /&gt;
&lt;br /&gt;
* Az alábbi paranccsal egy 10 éves [[FedCerts |  self-signed tanúsítvány]] generálunk a SimpleSMALphp számára.&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out cert/saml-example-org.crt -keyout cert/saml-example-org.key&lt;br /&gt;
&lt;br /&gt;
A fingerprint az alábbi módon kérdezhető le a legegyszerűbben&lt;br /&gt;
 openssl x509 -fingerprint -noout -in cert/saml-example-org.crt&lt;br /&gt;
&lt;br /&gt;
===Telepítés kész===&lt;br /&gt;
Amennyiben elkészültünk a fenti lépésekkel, úgy a [https://service.example.org/simplesaml/ https://service.example.org/simplesaml/] címen elérjük a telepített SSP-nk webes adminfelületét, ahol megejthetjük a további beállítások nagy részét.&lt;br /&gt;
&lt;br /&gt;
==Identity Provider (IdP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
'''IdP''' engedélyezése: a '''config/config.php''' fájlban kell a saml20 idp-t &amp;quot;true&amp;quot;-re állítani.&lt;br /&gt;
 'enable.saml20-idp' =&amp;gt; true,&lt;br /&gt;
&lt;br /&gt;
===LDAP autentikáció===&lt;br /&gt;
Meg kell adni, hogy az IdP milyen módon azonosítsa a felhasználót, amennyiben alapértelmezés szerint nem engedélyezett modult szeretnénk használni, úgy a megfelelő modult a &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; könyvtár alatt engedélyezni kell. Az alábbi példában az LDAP alapú azonosítást mutatjuk be, amely külön modult nem igényel, alapértelmezés szerint része a telepített alkalmazásnak.&lt;br /&gt;
&lt;br /&gt;
Javasolt az LDAP-ban egy olyan bejegyzést létrehozni az IdP számára, amely olvasni tudja a felhasználóknak a föderációban használt attribútumait. Az azonosítás alapértelmezett módon a felhasználó nevében történő újra bind-olással történik, így a jelszóhoz nem kell hozzáférést adni.&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy megadhassuk az LDAP-hoz tartozó beállításokat, a &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; fájlt kell szerkesztenünk. Az alábbi kódrészletet elegendő beszúrni, és az egyes változóknak a helyi LDAP-nak megfelelő adatokat értékül adni.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'example-ldap' =&amp;gt; array(&lt;br /&gt;
    'ldap:LDAP',&lt;br /&gt;
 &lt;br /&gt;
    /* The hostname of the LDAP server. */&lt;br /&gt;
    'hostname' =&amp;gt; 'ldap.example.org',&lt;br /&gt;
 &lt;br /&gt;
    /* Whether SSL/TLS should be used when contacting the LDAP server. */&lt;br /&gt;
    'enable_tls' =&amp;gt; FALSE,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * Which attributes should be retrieved from the LDAP server.&lt;br /&gt;
     * This can be an array of attribute names, or NULL, in which case&lt;br /&gt;
     * all attributes are fetched.&lt;br /&gt;
     */&lt;br /&gt;
    'attributes' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The pattern which should be used to create the users DN given the username.&lt;br /&gt;
     * %username% in this pattern will be replaced with the users username.&lt;br /&gt;
     *&lt;br /&gt;
     * This option is not used if the search.enable option is set to TRUE.&lt;br /&gt;
    'dnpattern' =&amp;gt; 'uid=%username%,ou=people,dc=example,dc=org',&lt;br /&gt;
     */&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * As an alternative to specifying a pattern for the users DN, it is possible to&lt;br /&gt;
     * search for the username in a set of attributes. This is enabled by this option.&lt;br /&gt;
     */&lt;br /&gt;
    'search.enable' =&amp;gt; TRUE,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The DN which will be used as a base for the search.&lt;br /&gt;
     * This can be a single string, in which case only that DN is searched, or an&lt;br /&gt;
     * array of strings, in which case they will be searched in the order given.&lt;br /&gt;
     */&lt;br /&gt;
    'search.base' =&amp;gt; 'ou=people,dc=example,dc=org',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The attribute(s) the username should match against.&lt;br /&gt;
     *&lt;br /&gt;
     * This is an array with one or more attribute names. Any of the attributes in&lt;br /&gt;
     * the array may match the value the username.&lt;br /&gt;
     */&lt;br /&gt;
    'search.attributes' =&amp;gt; array('uid', 'mail'),&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The username &amp;amp; password the simpleSAMLphp should bind to before searching. If&lt;br /&gt;
     * this is left as NULL, no bind will be performed before searching.&lt;br /&gt;
     */&lt;br /&gt;
    'search.username' =&amp;gt; 'cn=simplesamlphp,dc=example,dc=org',&lt;br /&gt;
    'search.password' =&amp;gt; 'servicepassword',&lt;br /&gt;
&lt;br /&gt;
    'priv.read' =&amp;gt; TRUE,&lt;br /&gt;
    // The DN &amp;amp; password the SimpleSAMLphp should bind to before&lt;br /&gt;
    // retrieving attributes. These options are required if&lt;br /&gt;
    // 'priv.read' is set to TRUE.&lt;br /&gt;
    'priv.username' =&amp;gt; 'cn=simplesamlphp,dc=example,dc=org',&lt;br /&gt;
    'priv.password' =&amp;gt; 'servicepassword;,&lt;br /&gt;
   ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Metaadat alapok===&lt;br /&gt;
A beállítandó IdP alapvető paraméterei a &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlban állíthatók. Az alábbi kódrészlet egy minimális, de már működő példát mutat.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 $metadata['__DYNAMIC:1__'] = array(&lt;br /&gt;
    /*&lt;br /&gt;
     * The hostname for this IdP. This makes it possible to run multiple&lt;br /&gt;
     * IdPs from the same configuration. '__DEFAULT__' means that this one&lt;br /&gt;
     * should be used by default.&lt;br /&gt;
     */&lt;br /&gt;
    'host' =&amp;gt; '__DEFAULT__',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The private key and certificate to use when signing responses.&lt;br /&gt;
     * These are stored in the cert-directory.&lt;br /&gt;
     */&lt;br /&gt;
    'privatekey' =&amp;gt; 'saml-example-org.key',&lt;br /&gt;
    'certificate' =&amp;gt; 'saml-example-org.crt',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The authentication source which should be used to authenticate the&lt;br /&gt;
     * user. This must match one of the entries in config/authsources.php.&lt;br /&gt;
     */&lt;br /&gt;
    'auth' =&amp;gt; 'example-ldap',&lt;br /&gt;
 );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Megfelelő beállítások után a dinamikusan generált metadata a &amp;lt;code&amp;gt;/saml2/idp/metadata.php&amp;lt;/code&amp;gt; útvonalon érhető el.&lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
Legegyszerűbben a telepített SSP felületén tudjuk ellenőrizni, hogy a beállított autentikációs forrás működik-e. A felületen az Authentication fül alatt található egy 'Test authentication sources' link, amelyre kattintva látható minden beállított autentikációs forrás is, így a két alapértelmezett, teszt célokat szolgáló alatt a most beállított example-ldap névre hallgatónak is meg kell jelenni. (A közvetlen url erre az oldalra: simplesaml/module.php/core/authenticate.php) Ez utóbbira kattintva a beállított LDAP-ból autentikálva be kell tudnunk jelentkeznünk; siker esetén az LDAP-ból kinyerhető attribútumokat láthatjuk.&lt;br /&gt;
&lt;br /&gt;
==Service Provider (SP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
&lt;br /&gt;
A telepített alkalmazásunk által kezelt SP-ket a '''config/authsources.php''' fájlban tudjuk beállítani. Az ''entityID, idp, discoURL'' értékeket most hagyjuk ''NULL'' értéken és adjuk hozzá a '''privatekey''' / '''certificate''' részt.&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp a tanúsítvány fájlokat a korábban létrehozott '''cert''' mappában fogja keresni, a fájlokat elég relatív elérési úttal megadni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'default-sp' =&amp;gt; array(&lt;br /&gt;
        'saml:SP',&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of this SP.&lt;br /&gt;
        // Can be NULL/unset, in which case an entity ID is generated based on the metadata URL.&lt;br /&gt;
        'entityID' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of the IdP this should SP should contact.&lt;br /&gt;
        // Can be NULL/unset, in which case the user will be shown a list of available IdPs.&lt;br /&gt;
        'idp' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The URL to the discovery service.&lt;br /&gt;
        // Can be NULL/unset, in which case a builtin discovery service will be used.&lt;br /&gt;
        'discoURL' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        'privatekey' =&amp;gt; 'saml-example-org.key',&lt;br /&gt;
        'certificate' =&amp;gt; 'saml-example-org.crt',&lt;br /&gt;
 &lt;br /&gt;
 ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fenti beállítások alapján az SP entityID-ja megegyezik a metadata elérési útvonalával (szokásos megoldás SSP-nél), nem adunk meg alapértelmezett idp-t, ezáltal az SSP választási lehetőséget kínál fel számunkra, mikor az SP-re szeretnénk bejelentkezni, ill. most még Discovery Service URL-t sem adunk meg, hanem a beépítettet használjuk. Ez utóbbit majd a HREF-be történő integrációkor meg kell változtatni - lásd lejjebb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SP készen áll arra, hogy összekössük egy IdP-vel (ez jellemzően szintén egy SimpleSAMLphp alkalmazás). Ehhez szükséges, hogy SP oldalon beállítsuk az IdP metadata-t és IdP oldalon is beállítsuk az SP metadata-t.&lt;br /&gt;
&lt;br /&gt;
====Metadata====&lt;br /&gt;
====Metadata fájlok====&lt;br /&gt;
A különböző metadata template fájlok a '''metadata-templates''' mappában találhatóak. A nekünk szükséges template fájlt másoljuk át a metadata mappába.&lt;br /&gt;
&lt;br /&gt;
* '''SP''' oldalon lennie kell egy''' metadata/saml20-idp-remote.php'''  fájlnak. Ez a fájl tartalmazza az IdP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-idp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
* '''IdP''' oldalon lennie kell egy '''metadata/saml20-sp-remote.php''' fájlnak. Ez a fájl tartalmazza az SP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-sp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
====Metadata letöltés====&lt;br /&gt;
&lt;br /&gt;
Ezen az oldalon megtaláljuk az SP vagy IdP-re vonatkozó '''metadata'''-t, '''XML''' és '''PHP''' formátumban: https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp?output=xhtml&lt;br /&gt;
&lt;br /&gt;
====SP metadata beállítás IdP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 SP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 SP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array (&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'AssertionConsumerService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 0,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    1 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 1,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    2 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 2,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    3 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 3,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:artifact-01',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp/artifact',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'contacts' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'emailAddress' =&amp;gt; 'admin@example.org',&lt;br /&gt;
      'contactType' =&amp;gt; 'technical',&lt;br /&gt;
      'givenName' =&amp;gt; 'Example Corp. IT Dept.',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot IdP oldalon, a '''metadata/saml20-sp-remote.php''' fájl végére illesszük be.&lt;br /&gt;
&lt;br /&gt;
====IdP metadata beállítás SP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://idp.example.org/simplesaml/saml2/idp/metadata.php'] = array (&lt;br /&gt;
  'metadata-set' =&amp;gt; 'saml20-idp-remote',&lt;br /&gt;
  'entityid' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/metadata.php',&lt;br /&gt;
  'SingleSignOnService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SSOService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SingleLogoutService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
  'NameIDFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot SP oldalon, a '''metadata/saml20-idp-remote.php''' fájl végére illesszük be. &lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
&lt;br /&gt;
A fent elvégzett alapbeállítások után már tudjuk tesztelni a, hogy a felépített IdP - SP kapcsolat működik-e.&lt;br /&gt;
&lt;br /&gt;
SP oldalon nyissuk meg a '''simplesaml''' kezdőlapot:&lt;br /&gt;
&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Azonosítás (autentikáció)&amp;quot; fül / &amp;quot;Azonosítási (autentikációs) beállítások tesztelése&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Authentication&amp;quot; fül / &amp;quot;Test configured authentication sources&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
&lt;br /&gt;
A legördülő menüben az IdP-nk &amp;quot;nevére&amp;quot; kattintva, be kell tudnunk jelentkezni (az IdP-n keresztül). Ha működik, akkor az IdP visszairányít az SP-re, kiírja az azonosított felhasználó attribútumait. &lt;br /&gt;
&lt;br /&gt;
Az alapvető lépsekkel kész vagyunk, van egy működő SP-nk és egy működő IdP-nk.&lt;br /&gt;
&lt;br /&gt;
==HREF-integráció==&lt;br /&gt;
&lt;br /&gt;
===Metadata beállítása (IdP és SP is)===&lt;br /&gt;
Javasolt [[MDX | dinamikus metaadatforrást (MDX)]] használni, opcionálisan kiegészítve statikus állományokkal. Részletes leírás itt: [[SimpleSAMLMixedMetadata]]&lt;br /&gt;
&lt;br /&gt;
===IdP===&lt;br /&gt;
Amennyiben van SSP alapú IdP-nk, melyet szeretnénk a föderáció részévé tenni, úgy a teendők a következők.&lt;br /&gt;
* (Az adminisztratív teendőktől itt most eltekintünk, a csatlakozás folyamata [[HREFJoin|itt van leírva]])&lt;br /&gt;
* Kell küldeni egy levelet a [mailto:info@eduid.hu info@eduid.hu] címre, benne néhány mondat mellett az IdP metaadatának URL-jével (https://example.org/simplesamlphp/saml2/idp/metadata.php)&lt;br /&gt;
* Ha minden rendben megy, akkor az IdP bekerül a [[Resource_Registry]]-be, ezáltal a föderációs metaadatba is.&lt;br /&gt;
* Az előző pontban leírt módon be kell állítani a központi metadata feldolgozását.&lt;br /&gt;
* Amennyiben a föderációs metaadatban már szerepel a mi IdP-nk is, úgy a föderáció valamelyik, tesztelési célokat szolgáló SP-jénél ki is próbálhatjuk a bejelentkezést. &lt;br /&gt;
&lt;br /&gt;
:'''Fontos''', hogy a föderációs Discovery Service óránként generálja újra az IdP-k listáját, így ennyi idő mindenképp szükséges, hogy az új IdP megjelenjen itt, az egyes SP-k pedig két óránként töltik újra a metaadatot, így előfordulhat, hogy azonnal nem fog minden működni, de néhány óra alatt várhatóan beindul. :)&lt;br /&gt;
&lt;br /&gt;
:Tesztelésre használható oldal: https://attributes.eduid.hu&lt;br /&gt;
&lt;br /&gt;
* Ahhoz, hogy a Resource Registry-be is be tudjunk lépni és az IdP további, a föderációra vonatkozó beállításait meg tudjuk ejteni, ehhez az IdP-nek ki kell adnia az alábbi attribútumokat:&lt;br /&gt;
** [[HREFAttributeSpec#mail|mail]] - ez belépés után, manuálisan is beállítható&lt;br /&gt;
** [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]&lt;br /&gt;
** &amp;lt;del&amp;gt;[[HREFAttributeSpec#schacHomeOrganizationType|schacHomeOrganizationType]]&amp;lt;/del&amp;gt; (az attribútumot hamarosan kivezetjük a kötelező attribútumok közül)&lt;br /&gt;
** [[HREFAttributeSpec#eduScopedAffiliation|eduPersonScopedAffiliation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútumok kezelése====&lt;br /&gt;
Beállított IdP-nk alapértelmezés szerint azokat az attribútumokat adja ki, melyeket a metaadat alapján az SP kért (Lásd a metadatában a RequestedAttribute elemeket), és egyúttal alapból meg tudta szerezni a felhasználói adatbázisból, esetünkben az LDAP-ból. Mivel néhány attribútum nem szerepel az LDAP-ban, hanem az IdP-ben kell előállítani, így pár helyen módosítanunk kell az alapértelmezett konfiguráción.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlba szerkesszük be az alábbi kódrészlet értelemszerűen módosított változatát. Az &amp;lt;code&amp;gt;'auth' =&amp;gt; 'example-ldap',&amp;lt;/code&amp;gt; sor alatt kezdjük. Fontos, hogy egyúttal a config.php &amp;lt;code&amp;gt;authproc.idp&amp;lt;/code&amp;gt; részét kikommentezzük, nehogy az ottani sorszámokkal megadott default feladatok bekavarjanak.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'AttributeNameFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',&lt;br /&gt;
 'userid.attribute' =&amp;gt; 'uid', // Itt adjuk meg, hogy mely, az LDAPból származó attribútum alapján fogja az IdP kiszámítani az eduPersonTargetedID-t&lt;br /&gt;
 'authproc' =&amp;gt; array(&lt;br /&gt;
                10 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'uid' =&amp;gt; 'eduPersonPrincipalName'&lt;br /&gt;
                //Itt az 'uid' az az attribútum az LDAP-ban, amely a felhasználó azonosítóját tartalmazza, mert ebből képezzük az eduPersonPrincipalName-t.&lt;br /&gt;
                ),&lt;br /&gt;
                # 20 =&amp;gt; array(&lt;br /&gt;
                #         'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                #         'schacHomeOrganizationType' =&amp;gt; array('urn:schac:homeOrganizationType:hu:university')&lt;br /&gt;
                # //Kötelező statikus attribútum az [[HREFAttributeSpec#schacHomeOrganizationType|intézmény jellegének]] megfelelően&lt;br /&gt;
                # ),&lt;br /&gt;
                30 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonPrincipalName már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                40 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonAffiliation',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonAffiliation már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                50 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'eduPersonAffiliation' =&amp;gt; 'eduPersonScopedAffiliation'&lt;br /&gt;
                // Az LDAP-ból eduPersonAffiliation-ként érkező attribútumból föderációs elvárásoknak megfelelően eduPersonScopedAffiliationt készítünk&lt;br /&gt;
                ),&lt;br /&gt;
                60 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                        'eduPersonScopedAffiliation' =&amp;gt; array('member@intezmenydomain.hu')&lt;br /&gt;
                // Az eduPersonScopedAffiliation-ben tesztelés céljából kiadhatjuk member értéket, &lt;br /&gt;
                // így ha LDAP-ból nem jön érték, akkor is láthatjuk, hogy működik az attribútum kiadás &lt;br /&gt;
                ),&lt;br /&gt;
                61 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:TargetedID',&lt;br /&gt;
                        'nameId' =&amp;gt; TRUE,&lt;br /&gt;
                ),&lt;br /&gt;
               // Itt állítjuk be, hogy az IdP előállítson és kiadhasson állandóazonosítóként eduPersonTargetedID-t, ha kérik&lt;br /&gt;
                70 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'name2oid'&lt;br /&gt;
                // Az LDAP-os attribútum nevekből itt kreálunk szabványos urn:oid formátumúakat&lt;br /&gt;
                ),&lt;br /&gt;
                80 =&amp;gt; 'core:AttributeLimit',&lt;br /&gt;
              ), // .authproc&lt;br /&gt;
       'simplesaml.nameidattribute' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
       'attributeencodings' =&amp;gt; array(&lt;br /&gt;
               'urn:oid:1.3.6.1.4.1.5923.1.1.1.10' =&amp;gt; 'raw',&lt;br /&gt;
        ),&lt;br /&gt;
        'sign.logout' =&amp;gt; true&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: További tudnivalók a [[Resource_Registry|Resource Registry-ről]], ill. a [[HREFAttributeSpec|Föderációs attribútum specifikációról]].&lt;br /&gt;
&lt;br /&gt;
* Ha minden rendben ment, akkor a Resource Registry-ben regisztrált IdP-hez tartozó adminisztrációs jogok átkerülnek az IdP technikai gazdájához, s ezzel a folyamat kész is.&lt;br /&gt;
&lt;br /&gt;
===SP===&lt;br /&gt;
Amennyiben IdP-t is beállítottunk, és be is tudunk lépni a Resource Registry-be, úgy nincs más dolgunk, mint az RR-ben új SP-t hozzáadni a föderációhoz, amely a megfelelő átfutási idő után a föderáció minden tagjánál látható is lesz.&lt;br /&gt;
&lt;br /&gt;
Ellenkező esetben (nincs IdP, és nem is tervezünk beállítani), akkor az IdP hozzáadásánál részletezett pontokon kell végig menni a metaadat betöltéséig, s a továbbiakat az említett e-mail címen megbeszélni.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútum scopeok használata====&lt;br /&gt;
A HREF föderáció IdP-i ún. scopeolt attribútumokat is használnak. Ez a scopeolás azt jelenti, hogy minden egyes IdP csak a saját scopejában ad ki attribútumokat, és a Shibboleth SP-k ezt ellenőrzik is. A scope és az attribútum valódi értéke egy '@' karakterrel kerül elválasztásra (ilyen attribútumok jelenleg: [[HREFAttributeSpec#eduPersonAffiliation|eduPersonScopedAffiliation]] illetve [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]).&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp alapértelmezett telepítése nem szűri a hibásan scopeolt értékeket. Kiegészítő modulként szűrésre használható az NIIF által fejlesztett [https://github.com/NIIF/simplesamlphp-module-attributescope attributescope modul], ami reményeink szerint rövid távon a hivatalos SimpleSAMLphp kiadás része lehet.&lt;br /&gt;
&lt;br /&gt;
A telepítésről és konfigurációról bővebben itt lehet olvasni: https://github.com/NIIF/simplesamlphp-module-attributescope&lt;br /&gt;
&lt;br /&gt;
: Az &amp;lt;code&amp;gt;attributescope&amp;lt;/code&amp;gt; modul használata esetén a következőképp kell módosítani a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlt:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 authproc.sp =  array(&lt;br /&gt;
                      ...&lt;br /&gt;
                     // 49 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap', 'oid2name'),&lt;br /&gt;
                     50 =&amp;gt; array(             'class' =&amp;gt; 'attributescope:FilterAttributes'&lt;br /&gt;
                     ),&lt;br /&gt;
                     ...&lt;br /&gt;
                ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Figyeljünk arra, hogy mire a modulhoz ér a vezérlés, az attribútumok  nevei ''friendlyName'' alakúak legyenek (ne pedig ''oid''-ok). A  példában erre utal a 49-es sor.&lt;br /&gt;
&lt;br /&gt;
[[Category: AAI]] [[Category: simpleSAMLphp]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Matteo(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5035</id>
		<title>SSP2</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5035"/>
				<updated>2024-08-13T08:23:31Z</updated>
		
		<summary type="html">&lt;p&gt;Matteo(AT)niif.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Az alábbi lapon megkíséreljük összefoglalni a legfontosabb lépéseket, melyek általános esetben elegendőek ahhoz, hogy működő SimpleSAMLphp (SSP) alkalmazást állítsunk üzembe.&lt;br /&gt;
&lt;br /&gt;
==Telepítés==&lt;br /&gt;
Először is nagyvonalakban leírásra kerülnek az előkészületek ezt követően pedig maga a szoftver telepítése és beállítása.&lt;br /&gt;
===Előkészületek===&lt;br /&gt;
Ahhoz, hogy problémamentesen telepíthessük SSP alkalmazásunkat, az alábbi szoftverkomponenseknek kell működniük szerverünkön.&lt;br /&gt;
* PHP futtatására alkalmas webszerver&lt;br /&gt;
* PHP környezet (&amp;gt;=5.4)&lt;br /&gt;
* A következő PHP kiterjesztéseket engedélyezni kell&lt;br /&gt;
** &amp;lt;code&amp;gt;date&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dom&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hash&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libxml&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;openssl&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;pcre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SPL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;zlib&amp;lt;/code&amp;gt;&lt;br /&gt;
** LDAP-ból történő autentikáció esetén: &amp;lt;code&amp;gt;ldap&amp;lt;/code&amp;gt;&lt;br /&gt;
** Adatbázisból történő autentikáció esetén a megfelelő adatbázis-csatolót &amp;lt;code&amp;gt;mysql&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;pgsql&amp;lt;/code&amp;gt;&lt;br /&gt;
** RADIUS szerveren keresztül történő autentikáció esetén: &amp;lt;code&amp;gt;radius&amp;lt;/code&amp;gt;&lt;br /&gt;
** Assertion-ök titkosítása esetén: &amp;lt;code&amp;gt;mcrypt&amp;lt;/code&amp;gt;&lt;br /&gt;
** Memcache használata esetén: &amp;lt;code&amp;gt;memcache&amp;lt;/code&amp;gt;&lt;br /&gt;
** HEXAA integrációhoz (SP): &amp;lt;code&amp;gt;soap&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Debian 9 / Ubuntu 16.04 LTS csomagok====&lt;br /&gt;
&lt;br /&gt;
 sudo apt install php php-dom mcrypt php-xml php-mbstring&lt;br /&gt;
&lt;br /&gt;
====RHEL / CentOS 7 csomagok====&lt;br /&gt;
A '''php-mcrypt''' csomaghoz engedélyezni kell az &amp;quot;''epel-release''&amp;quot;-t.&lt;br /&gt;
&lt;br /&gt;
 sudo yum install epel-release&lt;br /&gt;
 sudo yum update&lt;br /&gt;
 sudo yum install php php-dom php-mcrypt php-xml php-mbstring php-common mod_ssl&lt;br /&gt;
&lt;br /&gt;
====Composer====&lt;br /&gt;
&lt;br /&gt;
A '''[https://getcomposer.org composer]''' PHP csomagkezelőt is telepíteni kell (akár forrásból, akár csomagból), hogy telepíteni lehessen a SimpleSAMLphp futásához szükséges PHP library-ket.&lt;br /&gt;
&lt;br /&gt;
===Letöltés===&lt;br /&gt;
A GitHubról történő telepítés előnye, hogy a simplesamlphp könnyen frissíthető marad, csak a third party modulokat kell újratelepíteni. Az utolsó stabil verzió számát a https://simplesamlphp.org/download oldalról tudhatjuk meg.&lt;br /&gt;
&lt;br /&gt;
 cd /var&lt;br /&gt;
 git clone https://github.com/simplesamlphp/simplesamlphp.git&lt;br /&gt;
 cd simplesamlphp&lt;br /&gt;
 git checkout tags/v1.16.2 -b v1.16.2&lt;br /&gt;
 composer install --no-dev&lt;br /&gt;
&lt;br /&gt;
===Apache konfigurálás===&lt;br /&gt;
&lt;br /&gt;
A webről csak a &amp;lt;code&amp;gt;/var/simplesamlphp/www&amp;lt;/code&amp;gt; könyvtárat kell elérni. '''Tilos''' a teljes simplesamlphp könyvtárat a DocumentRoot alá tenni!&lt;br /&gt;
&lt;br /&gt;
 Alias /simplesaml /var/simplesamlphp/www&lt;br /&gt;
 &amp;lt;Directory /var/simplesamlphp/www&amp;gt;&lt;br /&gt;
   Require all granted&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
====Konfigurációs fájlok másolása====&lt;br /&gt;
Mielőtt aktiváljuk valamelyik főszolgáltatását (IdP,SP...) a telepített alkalmazásnak, néhány beállítást meg kell adnunk a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; konfigurációs fájlokban.&lt;br /&gt;
&lt;br /&gt;
* '''config.php''' másolása a '''config-templates''' mappából&lt;br /&gt;
 cp config-templates/config.php config/&lt;br /&gt;
&lt;br /&gt;
* '''authsources.php''' másolása a '''config-templates''' mappából&lt;br /&gt;
 cp config-templates/authsources.php config/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;A '''config.php''' és '''authsources.php''' fájlok másolása utána ellenőrizzük, hogy a SimpleSAMLphp működik-e, a https://example.org/simplesaml oldalon.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Konfigurációs fájlok szerkesztése====&lt;br /&gt;
=====Adminisztrációs adatok beállítása=====&lt;br /&gt;
&lt;br /&gt;
Amennyiben az SimpleSAMLphp kezdőlapja hiba nélkül megjelent, akkor nyissuk meg a '''config/config.php''' fájl szerkesztésre és végezzük el az alábbi beállításokat.&lt;br /&gt;
&lt;br /&gt;
* '''Az &amp;quot;admin&amp;quot; felhasználó jelszavát, mellyel webes felületen keresztül be tud lépni a települő SSP-be.'''&lt;br /&gt;
 'auth.adminpassword'        =&amp;gt; 'ujjelszotirdide',&lt;br /&gt;
* '''Titkosítási feladatokhoz szükséges &amp;quot;salt&amp;quot;, azaz véletlenszerűen összeálló karaktersorozat'''&lt;br /&gt;
 'secretsalt' =&amp;gt; 'randombytesinsertedhere',&lt;br /&gt;
A karaktersorozat előállításában segíthet az alábbi parancs: &lt;br /&gt;
 tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' &amp;lt;/dev/urandom | dd bs=32 count=1 2&amp;gt;/dev/null;echo&lt;br /&gt;
* '''Elérhetőségeket, amely adatok bekerülnek majd a generált metaadatba'''&lt;br /&gt;
 'technicalcontact_name'     =&amp;gt; 'Gipsz Jakab',&lt;br /&gt;
 'technicalcontact_email'    =&amp;gt; 'jakab.gipsz@example.org',&lt;br /&gt;
* '''Nyelv és időzóna adatok'''&lt;br /&gt;
 'language.default'      =&amp;gt; 'hu',&lt;br /&gt;
 'timezone' =&amp;gt; 'Europe/Budapest',&lt;br /&gt;
&lt;br /&gt;
Az alapadatok megadása után mentsük és zárjuk be a '''config.php'''-t.&lt;br /&gt;
&lt;br /&gt;
=====Naplózás beállítása=====&lt;br /&gt;
&lt;br /&gt;
Alapértelmezetten a SimpleSAMLphp a '''syslog'''-ba irányítja a naplózást.&lt;br /&gt;
&lt;br /&gt;
Ha fájlba akarunk naplózni, akkor a megfelelő könyvtárhoz biztosítsunk írás jogot a webszerver felhasználónak, és ne felejtsünk el gondoskodni a naplófájlok rotálásáról!&lt;br /&gt;
&lt;br /&gt;
* '''log''' mappa létrehozása és jogosultság beállítása&lt;br /&gt;
 sudo mkdir log; sudo chown www-data:adm log; sudo chmod 755 log&lt;br /&gt;
&lt;br /&gt;
* Naplózási szint beállítása a '''config/config.php'''-ban&lt;br /&gt;
 'debug' =&amp;gt; array(&lt;br /&gt;
        'saml' =&amp;gt; true,&lt;br /&gt;
        'backtraces' =&amp;gt; true,&lt;br /&gt;
        'validatexml' =&amp;gt; false,&lt;br /&gt;
 ),&lt;br /&gt;
 'logging.level' =&amp;gt; SimpleSAML\Logger::DEBUG,&lt;br /&gt;
 'logging.handler' =&amp;gt; 'file',&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;A &amp;quot;SimpleSAML\Logger::DEBUG&amp;quot; a legrészletesebb naplózási beállítás, éles rendszernél nem ajánlott csak hiba keresés esetén.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Tanúsítvány készítése=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;Nem ajánlott a SimpleSAMLphp-hoz és webszerverhez ugyanazt a tanúsítvány használni!&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A SimpleSAMLphp alapértelmezetten a tanúsítványt a '''cert''' mappában keresi.&lt;br /&gt;
 mkdir cert&lt;br /&gt;
&lt;br /&gt;
* Az alábbi paranccsal egy 10 éves [[FedCerts |  self-signed tanúsítvány]] generálunk a SimpleSMALphp számára.&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out cert/saml-example-org.crt -keyout cert/saml-example-org.key&lt;br /&gt;
&lt;br /&gt;
A fingerprint az alábbi módon kérdezhető le a legegyszerűbben&lt;br /&gt;
 openssl x509 -fingerprint -noout -in cert/saml-example-org.crt&lt;br /&gt;
&lt;br /&gt;
===Telepítés kész===&lt;br /&gt;
Amennyiben elkészültünk a fenti lépésekkel, úgy a [https://service.example.org/simplesaml/ https://service.example.org/simplesaml/] címen elérjük a telepített SSP-nk webes adminfelületét, ahol megejthetjük a további beállítások nagy részét.&lt;br /&gt;
&lt;br /&gt;
==Identity Provider (IdP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
'''IdP''' engedélyezése: a '''config/config.php''' fájlban kell a saml20 idp-t &amp;quot;true&amp;quot;-re állítani.&lt;br /&gt;
 'enable.saml20-idp' =&amp;gt; true,&lt;br /&gt;
&lt;br /&gt;
===LDAP autentikáció===&lt;br /&gt;
Meg kell adni, hogy az IdP milyen módon azonosítsa a felhasználót, amennyiben alapértelmezés szerint nem engedélyezett modult szeretnénk használni, úgy a megfelelő modult a &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; könyvtár alatt engedélyezni kell. Az alábbi példában az LDAP alapú azonosítást mutatjuk be, amely külön modult nem igényel, alapértelmezés szerint része a telepített alkalmazásnak.&lt;br /&gt;
&lt;br /&gt;
Javasolt az LDAP-ban egy olyan bejegyzést létrehozni az IdP számára, amely olvasni tudja a felhasználóknak a föderációban használt attribútumait. Az azonosítás alapértelmezett módon a felhasználó nevében történő újra bind-olással történik, így a jelszóhoz nem kell hozzáférést adni.&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy megadhassuk az LDAP-hoz tartozó beállításokat, a &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; fájlt kell szerkesztenünk. Az alábbi kódrészletet elegendő beszúrni, és az egyes változóknak a helyi LDAP-nak megfelelő adatokat értékül adni.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'example-ldap' =&amp;gt; array(&lt;br /&gt;
    'ldap:LDAP',&lt;br /&gt;
 &lt;br /&gt;
    /* The hostname of the LDAP server. */&lt;br /&gt;
    'hostname' =&amp;gt; 'ldap.example.org',&lt;br /&gt;
 &lt;br /&gt;
    /* Whether SSL/TLS should be used when contacting the LDAP server. */&lt;br /&gt;
    'enable_tls' =&amp;gt; FALSE,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * Which attributes should be retrieved from the LDAP server.&lt;br /&gt;
     * This can be an array of attribute names, or NULL, in which case&lt;br /&gt;
     * all attributes are fetched.&lt;br /&gt;
     */&lt;br /&gt;
    'attributes' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The pattern which should be used to create the users DN given the username.&lt;br /&gt;
     * %username% in this pattern will be replaced with the users username.&lt;br /&gt;
     *&lt;br /&gt;
     * This option is not used if the search.enable option is set to TRUE.&lt;br /&gt;
    'dnpattern' =&amp;gt; 'uid=%username%,ou=people,dc=example,dc=org',&lt;br /&gt;
     */&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * As an alternative to specifying a pattern for the users DN, it is possible to&lt;br /&gt;
     * search for the username in a set of attributes. This is enabled by this option.&lt;br /&gt;
     */&lt;br /&gt;
    'search.enable' =&amp;gt; TRUE,&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The DN which will be used as a base for the search.&lt;br /&gt;
     * This can be a single string, in which case only that DN is searched, or an&lt;br /&gt;
     * array of strings, in which case they will be searched in the order given.&lt;br /&gt;
     */&lt;br /&gt;
    'search.base' =&amp;gt; 'ou=people,dc=example,dc=org',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The attribute(s) the username should match against.&lt;br /&gt;
     *&lt;br /&gt;
     * This is an array with one or more attribute names. Any of the attributes in&lt;br /&gt;
     * the array may match the value the username.&lt;br /&gt;
     */&lt;br /&gt;
    'search.attributes' =&amp;gt; array('uid', 'mail'),&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The username &amp;amp; password the simpleSAMLphp should bind to before searching. If&lt;br /&gt;
     * this is left as NULL, no bind will be performed before searching.&lt;br /&gt;
     */&lt;br /&gt;
    'search.username' =&amp;gt; 'cn=simplesamlphp,dc=example,dc=org',&lt;br /&gt;
    'search.password' =&amp;gt; 'servicepassword',&lt;br /&gt;
&lt;br /&gt;
    'priv.read' =&amp;gt; TRUE,&lt;br /&gt;
    // The DN &amp;amp; password the SimpleSAMLphp should bind to before&lt;br /&gt;
    // retrieving attributes. These options are required if&lt;br /&gt;
    // 'priv.read' is set to TRUE.&lt;br /&gt;
    'priv.username' =&amp;gt; 'cn=simplesamlphp,dc=example,dc=org',&lt;br /&gt;
    'priv.password' =&amp;gt; 'servicepassword;,&lt;br /&gt;
   ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Metaadat alapok===&lt;br /&gt;
A beállítandó IdP alapvető paraméterei a &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlban állíthatók. Az alábbi kódrészlet egy minimális, de már működő példát mutat.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 $metadata['__DYNAMIC:1__'] = array(&lt;br /&gt;
    /*&lt;br /&gt;
     * The hostname for this IdP. This makes it possible to run multiple&lt;br /&gt;
     * IdPs from the same configuration. '__DEFAULT__' means that this one&lt;br /&gt;
     * should be used by default.&lt;br /&gt;
     */&lt;br /&gt;
    'host' =&amp;gt; '__DEFAULT__',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The private key and certificate to use when signing responses.&lt;br /&gt;
     * These are stored in the cert-directory.&lt;br /&gt;
     */&lt;br /&gt;
    'privatekey' =&amp;gt; 'saml-example-org.key',&lt;br /&gt;
    'certificate' =&amp;gt; 'saml-example-org.crt',&lt;br /&gt;
 &lt;br /&gt;
    /*&lt;br /&gt;
     * The authentication source which should be used to authenticate the&lt;br /&gt;
     * user. This must match one of the entries in config/authsources.php.&lt;br /&gt;
     */&lt;br /&gt;
    'auth' =&amp;gt; 'example-ldap',&lt;br /&gt;
 );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Megfelelő beállítások után a dinamikusan generált metadata a &amp;lt;code&amp;gt;/saml2/idp/metadata.php&amp;lt;/code&amp;gt; útvonalon érhető el.&lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
Legegyszerűbben a telepített SSP felületén tudjuk ellenőrizni, hogy a beállított autentikációs forrás működik-e. A felületen az Authentication fül alatt található egy 'Test authentication sources' link, amelyre kattintva látható minden beállított autentikációs forrás is, így a két alapértelmezett, teszt célokat szolgáló alatt a most beállított example-ldap névre hallgatónak is meg kell jelenni. (A közvetlen url erre az oldalra: simplesaml/module.php/core/authenticate.php) Ez utóbbira kattintva a beállított LDAP-ból autentikálva be kell tudnunk jelentkeznünk; siker esetén az LDAP-ból kinyerhető attribútumokat láthatjuk.&lt;br /&gt;
&lt;br /&gt;
==Service Provider (SP) beállítás==&lt;br /&gt;
===Alapbeállítások===&lt;br /&gt;
&lt;br /&gt;
A telepített alkalmazásunk által kezelt SP-ket a '''config/authsources.php''' fájlban tudjuk beállítani. Az ''entityID, idp, discoURL'' értékeket most hagyjuk ''NULL'' értéken és adjuk hozzá a '''privatekey''' / '''certificate''' részt.&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp a tanúsítvány fájlokat a korábban létrehozott '''cert''' mappában fogja keresni, a fájlokat elég relatív elérési úttal megadni.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'default-sp' =&amp;gt; array(&lt;br /&gt;
        'saml:SP',&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of this SP.&lt;br /&gt;
        // Can be NULL/unset, in which case an entity ID is generated based on the metadata URL.&lt;br /&gt;
        'entityID' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The entity ID of the IdP this should SP should contact.&lt;br /&gt;
        // Can be NULL/unset, in which case the user will be shown a list of available IdPs.&lt;br /&gt;
        'idp' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        // The URL to the discovery service.&lt;br /&gt;
        // Can be NULL/unset, in which case a builtin discovery service will be used.&lt;br /&gt;
        'discoURL' =&amp;gt; NULL,&lt;br /&gt;
 &lt;br /&gt;
        'privatekey' =&amp;gt; 'saml-example-org.key',&lt;br /&gt;
        'certificate' =&amp;gt; 'saml-example-org.crt',&lt;br /&gt;
 &lt;br /&gt;
 ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A fenti beállítások alapján az SP entityID-ja megegyezik a metadata elérési útvonalával (szokásos megoldás SSP-nél), nem adunk meg alapértelmezett idp-t, ezáltal az SSP választási lehetőséget kínál fel számunkra, mikor az SP-re szeretnénk bejelentkezni, ill. most még Discovery Service URL-t sem adunk meg, hanem a beépítettet használjuk. Ez utóbbit majd a HREF-be történő integrációkor meg kell változtatni - lásd lejjebb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Az SP készen áll arra, hogy összekössük egy IdP-vel (ez jellemzően szintén egy SimpleSAMLphp alkalmazás). Ehhez szükséges, hogy SP oldalon beállítsuk az IdP metadata-t és IdP oldalon is beállítsuk az SP metadata-t.&lt;br /&gt;
&lt;br /&gt;
====Metadata====&lt;br /&gt;
====Metadata fájlok====&lt;br /&gt;
A különböző metadata template fájlok a '''metadata-templates''' mappában találhatóak. A nekünk szükséges template fájlt másoljuk át a metadata mappába.&lt;br /&gt;
&lt;br /&gt;
* '''SP''' oldalon lennie kell egy''' metadata/saml20-idp-remote.php'''  fájlnak. Ez a fájl tartalmazza az IdP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-idp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
* '''IdP''' oldalon lennie kell egy '''metadata/saml20-sp-remote.php''' fájlnak. Ez a fájl tartalmazza az SP eléréséhez szükséges adatokat.&lt;br /&gt;
 cp metadata-templates/saml20-sp-remote.php metadata&lt;br /&gt;
&lt;br /&gt;
====Metadata letöltés====&lt;br /&gt;
&lt;br /&gt;
Ezen az oldalon megtaláljuk az SP vagy IdP-re vonatkozó '''metadata'''-t, '''XML''' és '''PHP''' formátumban: https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp?output=xhtml&lt;br /&gt;
&lt;br /&gt;
====SP metadata beállítás IdP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 SP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 SP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array (&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'AssertionConsumerService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 0,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    1 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 1,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    2 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 2,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
    ),&lt;br /&gt;
    3 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'index' =&amp;gt; 3,&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:1.0:profiles:artifact-01',&lt;br /&gt;
      'Location' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml1-acs.php/default-sp/artifact',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'contacts' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'emailAddress' =&amp;gt; 'admin@example.org',&lt;br /&gt;
      'contactType' =&amp;gt; 'technical',&lt;br /&gt;
      'givenName' =&amp;gt; 'Example Corp. IT Dept.',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot IdP oldalon, a '''metadata/saml20-sp-remote.php''' fájl végére illesszük be.&lt;br /&gt;
&lt;br /&gt;
====IdP metadata beállítás SP oldalon====&lt;br /&gt;
&lt;br /&gt;
A metadata '''simplesaml''' kezdőlapon, az alábbi helyen érhető el:&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Föderáció&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metaadatok&amp;quot; pont alatt a &amp;quot;Mutasd a metaadatokat&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Federation&amp;quot; fül / &amp;quot;SAML 2.0 IdP Metadata&amp;quot; pont alatt a &amp;quot;Show metadata&amp;quot; linkre kattintva juthatunk el a fenti menüponthoz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;''SimpleSAMLphp fájl formátumban - akkor használható, ha a másik oldalon SimpleSAMLphp van''&amp;quot; mezőből tegyük a vágólapra az alábbi PHP kódot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$metadata['https://idp.example.org/simplesaml/saml2/idp/metadata.php'] = array (&lt;br /&gt;
  'metadata-set' =&amp;gt; 'saml20-idp-remote',&lt;br /&gt;
  'entityid' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/metadata.php',&lt;br /&gt;
  'SingleSignOnService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SSOService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; &lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &lt;br /&gt;
    array (&lt;br /&gt;
      'Binding' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',&lt;br /&gt;
      'Location' =&amp;gt; 'https://idp.example.org/simplesaml/saml2/idp/SingleLogoutService.php',&lt;br /&gt;
    ),&lt;br /&gt;
  ),&lt;br /&gt;
  'certData' =&amp;gt; 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==',&lt;br /&gt;
  'NameIDFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vágólapra másolt kódot SP oldalon, a '''metadata/saml20-idp-remote.php''' fájl végére illesszük be. &lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
&lt;br /&gt;
A fent elvégzett alapbeállítások után már tudjuk tesztelni a, hogy a felépített IdP - SP kapcsolat működik-e.&lt;br /&gt;
&lt;br /&gt;
SP oldalon nyissuk meg a '''simplesaml''' kezdőlapot:&lt;br /&gt;
&lt;br /&gt;
* Magyar nyelv esetén: &amp;quot;Azonosítás (autentikáció)&amp;quot; fül / &amp;quot;Azonosítási (autentikációs) beállítások tesztelése&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
* Angol nyelv esetén: &amp;quot;Authentication&amp;quot; fül / &amp;quot;Test configured authentication sources&amp;quot; link / &amp;quot;default-sp&amp;quot; link-re kattintva tudjuk tesztelni az IdP - SP kapcsolatot.&lt;br /&gt;
&lt;br /&gt;
A legördülő menüben az IdP-nk &amp;quot;nevére&amp;quot; kattintva, be kell tudnunk jelentkezni (az IdP-n keresztül). Ha működik, akkor az IdP visszairányít az SP-re, kiírja az azonosított felhasználó attribútumait. &lt;br /&gt;
&lt;br /&gt;
Az alapvető lépsekkel kész vagyunk, van egy működő SP-nk és egy működő IdP-nk.&lt;br /&gt;
&lt;br /&gt;
==HREF-integráció==&lt;br /&gt;
&lt;br /&gt;
===Metadata beállítása (IdP és SP is)===&lt;br /&gt;
Javasolt [[MDX | dinamikus metaadatforrást (MDX)]] használni, opcionálisan kiegészítve statikus állományokkal. Részletes leírás itt: [[SimpleSAMLMixedMetadata]]&lt;br /&gt;
&lt;br /&gt;
===IdP===&lt;br /&gt;
Amennyiben van SSP alapú IdP-nk, melyet szeretnénk a föderáció részévé tenni, úgy a teendők a következők.&lt;br /&gt;
* (Az adminisztratív teendőktől itt most eltekintünk, a csatlakozás folyamata [[HREFJoin|itt van leírva]])&lt;br /&gt;
* Kell küldeni egy levelet a [mailto:info@eduid.hu info@eduid.hu] címre, benne néhány mondat mellett az IdP metaadatának URL-jével (https://example.org/simplesamlphp/saml2/idp/metadata.php)&lt;br /&gt;
* Ha minden rendben megy, akkor az IdP bekerül a [[Resource_Registry]]-be, ezáltal a föderációs metaadatba is.&lt;br /&gt;
* Az előző pontban leírt módon be kell állítani a központi metadata feldolgozását.&lt;br /&gt;
* Amennyiben a föderációs metaadatban már szerepel a mi IdP-nk is, úgy a föderáció valamelyik, tesztelési célokat szolgáló SP-jénél ki is próbálhatjuk a bejelentkezést. &lt;br /&gt;
&lt;br /&gt;
:'''Fontos''', hogy a föderációs Discovery Service óránként generálja újra az IdP-k listáját, így ennyi idő mindenképp szükséges, hogy az új IdP megjelenjen itt, az egyes SP-k pedig két óránként töltik újra a metaadatot, így előfordulhat, hogy azonnal nem fog minden működni, de néhány óra alatt várhatóan beindul. :)&lt;br /&gt;
&lt;br /&gt;
:Tesztelésre használható oldal: https://attributes.eduid.hu&lt;br /&gt;
&lt;br /&gt;
* Ahhoz, hogy a Resource Registry-be is be tudjunk lépni és az IdP további, a föderációra vonatkozó beállításait meg tudjuk ejteni, ehhez az IdP-nek ki kell adnia az alábbi attribútumokat:&lt;br /&gt;
** [[HREFAttributeSpec#mail|mail]] - ez belépés után, manuálisan is beállítható&lt;br /&gt;
** [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]&lt;br /&gt;
** &amp;lt;del&amp;gt;[[HREFAttributeSpec#schacHomeOrganizationType|schacHomeOrganizationType]]&amp;lt;/del&amp;gt; (az attribútumot hamarosan kivezetjük a kötelező attribútumok közül)&lt;br /&gt;
** [[HREFAttributeSpec#eduScopedAffiliation|eduPersonScopedAffiliation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútumok kezelése====&lt;br /&gt;
Beállított IdP-nk alapértelmezés szerint azokat az attribútumokat adja ki, melyeket a metaadat alapján az SP kért (Lásd a metadatában a RequestedAttribute elemeket), és egyúttal alapból meg tudta szerezni a felhasználói adatbázisból, esetünkben az LDAP-ból. Mivel néhány attribútum nem szerepel az LDAP-ban, hanem az IdP-ben kell előállítani, így pár helyen módosítanunk kell az alapértelmezett konfiguráción.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;metadata/saml20-idp-hosted.php&amp;lt;/code&amp;gt; fájlba szerkesszük be az alábbi kódrészlet értelemszerűen módosított változatát. Az &amp;lt;code&amp;gt;'auth' =&amp;gt; 'example-ldap',&amp;lt;/code&amp;gt; sor alatt kezdjük. Fontos, hogy egyúttal a config.php &amp;lt;code&amp;gt;authproc.idp&amp;lt;/code&amp;gt; részét kikommentezzük, nehogy az ottani sorszámokkal megadott default feladatok bekavarjanak.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 'AttributeNameFormat' =&amp;gt; 'urn:oasis:names:tc:SAML:2.0:attrname-format:uri',&lt;br /&gt;
 'userid.attribute' =&amp;gt; 'uid', // Itt adjuk meg, hogy mely, az LDAPból származó attribútum alapján fogja az IdP kiszámítani az eduPersonTargetedID-t&lt;br /&gt;
 'authproc' =&amp;gt; array(&lt;br /&gt;
                10 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'uid' =&amp;gt; 'eduPersonPrincipalName'&lt;br /&gt;
                //Itt az 'uid' az az attribútum az LDAP-ban, amely a felhasználó azonosítóját tartalmazza, mert ebből képezzük az eduPersonPrincipalName-t.&lt;br /&gt;
                ),&lt;br /&gt;
                # 20 =&amp;gt; array(&lt;br /&gt;
                #         'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                #         'schacHomeOrganizationType' =&amp;gt; array('urn:schac:homeOrganizationType:hu:university')&lt;br /&gt;
                # //Kötelező statikus attribútum az [[HREFAttributeSpec#schacHomeOrganizationType|intézmény jellegének]] megfelelően&lt;br /&gt;
                # ),&lt;br /&gt;
                30 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonPrincipalName már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                40 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAlter',&lt;br /&gt;
                        'subject' =&amp;gt; 'eduPersonAffiliation',&lt;br /&gt;
                        'pattern' =&amp;gt; '/^.*$/',&lt;br /&gt;
                        'replacement' =&amp;gt; '${0}@intezmenydomain.hu',&lt;br /&gt;
                // Itt adjuk hozzá az intézményi scope-ot az eduPersonAffiliation már meglévő értékéhez&lt;br /&gt;
                ),&lt;br /&gt;
                50 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'eduPersonAffiliation' =&amp;gt; 'eduPersonScopedAffiliation'&lt;br /&gt;
                // Az LDAP-ból eduPersonAffiliation-ként érkező attribútumból föderációs elvárásoknak megfelelően eduPersonScopedAffiliationt készítünk&lt;br /&gt;
                ),&lt;br /&gt;
                60 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeAdd',&lt;br /&gt;
                        'eduPersonScopedAffiliation' =&amp;gt; array('member@intezmenydomain.hu')&lt;br /&gt;
                // Az eduPersonScopedAffiliation-ben tesztelés céljából kiadhatjuk member értéket, &lt;br /&gt;
                // így ha LDAP-ból nem jön érték, akkor is láthatjuk, hogy működik az attribútum kiadás &lt;br /&gt;
                ),&lt;br /&gt;
                61 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:TargetedID',&lt;br /&gt;
                        'nameId' =&amp;gt; TRUE,&lt;br /&gt;
                ),&lt;br /&gt;
               // Itt állítjuk be, hogy az IdP előállítson és kiadhasson állandóazonosítóként eduPersonTargetedID-t, ha kérik&lt;br /&gt;
                70 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap',&lt;br /&gt;
                        'name2oid'&lt;br /&gt;
                // Az LDAP-os attribútum nevekből itt kreálunk szabványos urn:oid formátumúakat&lt;br /&gt;
                ),&lt;br /&gt;
                80 =&amp;gt; 'core:AttributeLimit',&lt;br /&gt;
              ), // .authproc&lt;br /&gt;
       'simplesaml.nameidattribute' =&amp;gt; 'eduPersonPrincipalName',&lt;br /&gt;
       'attributeencodings' =&amp;gt; array(&lt;br /&gt;
               'urn:oid:1.3.6.1.4.1.5923.1.1.1.10' =&amp;gt; 'raw',&lt;br /&gt;
        ),&lt;br /&gt;
        'sign.logout' =&amp;gt; true&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: További tudnivalók a [[Resource_Registry|Resource Registry-ről]], ill. a [[HREFAttributeSpec|Föderációs attribútum specifikációról]].&lt;br /&gt;
&lt;br /&gt;
* Ha minden rendben ment, akkor a Resource Registry-ben regisztrált IdP-hez tartozó adminisztrációs jogok átkerülnek az IdP technikai gazdájához, s ezzel a folyamat kész is.&lt;br /&gt;
&lt;br /&gt;
===SP===&lt;br /&gt;
Amennyiben IdP-t is beállítottunk, és be is tudunk lépni a Resource Registry-be, úgy nincs más dolgunk, mint az RR-ben új SP-t hozzáadni a föderációhoz, amely a megfelelő átfutási idő után a föderáció minden tagjánál látható is lesz.&lt;br /&gt;
&lt;br /&gt;
Ellenkező esetben (nincs IdP, és nem is tervezünk beállítani), akkor az IdP hozzáadásánál részletezett pontokon kell végig menni a metaadat betöltéséig, s a továbbiakat az említett e-mail címen megbeszélni.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attribútum scopeok használata====&lt;br /&gt;
A HREF föderáció IdP-i ún. scopeolt attribútumokat is használnak. Ez a scopeolás azt jelenti, hogy minden egyes IdP csak a saját scopejában ad ki attribútumokat, és a Shibboleth SP-k ezt ellenőrzik is. A scope és az attribútum valódi értéke egy '@' karakterrel kerül elválasztásra (ilyen attribútumok jelenleg: [[HREFAttributeSpec#eduPersonAffiliation|eduPersonScopedAffiliation]] illetve [[HREFAttributeSpec#eduPersonPrincipalName|eduPersonPrincipalName]]).&lt;br /&gt;
&lt;br /&gt;
A SimpleSAMLphp alapértelmezett telepítése nem szűri a hibásan scopeolt értékeket. Kiegészítő modulként szűrésre használható az NIIF által fejlesztett [https://github.com/NIIF/simplesamlphp-module-attributescope attributescope modul], ami reményeink szerint rövid távon a hivatalos SimpleSAMLphp kiadás része lehet.&lt;br /&gt;
&lt;br /&gt;
A telepítésről és konfigurációról bővebben itt lehet olvasni: https://github.com/NIIF/simplesamlphp-module-attributescope&lt;br /&gt;
&lt;br /&gt;
: Az &amp;lt;code&amp;gt;attributescope&amp;lt;/code&amp;gt; modul használata esetén a következőképp kell módosítani a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlt:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 authproc.sp =  array(&lt;br /&gt;
                      ...&lt;br /&gt;
                     // 49 =&amp;gt; array('class' =&amp;gt; 'core:AttributeMap', 'oid2name'),&lt;br /&gt;
                     50 =&amp;gt; array(             'class' =&amp;gt; 'attributescope:FilterAttributes'&lt;br /&gt;
                     ),&lt;br /&gt;
                     ...&lt;br /&gt;
                ),&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Figyeljünk arra, hogy mire a modulhoz ér a vezérlés, az attribútumok  nevei ''friendlyName'' alakúak legyenek (ne pedig ''oid''-ok). A  példában erre utal a 49-es sor.&lt;br /&gt;
&lt;br /&gt;
[[Category: AAI]] [[Category: simpleSAMLphp]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Matteo(AT)niif.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5033</id>
		<title>SSP2</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SSP2&amp;diff=5033"/>
				<updated>2024-08-06T08:59:45Z</updated>
		
		<summary type="html">&lt;p&gt;Matteo(AT)niif.hu: /* SSP2 leírás */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SSP2 leírás ==&lt;br /&gt;
&lt;br /&gt;
Nagyjából leírni:&lt;br /&gt;
&lt;br /&gt;
Rendszer Előkészítése&lt;br /&gt;
Apache Telepítése&lt;br /&gt;
PHP és Composer Telepítése&lt;br /&gt;
További szoftverkönyvtárak és kiterjesztések telepítése&lt;br /&gt;
&lt;br /&gt;
Bővebben / konkrétabban leírni:&lt;br /&gt;
SimpleSAMLphp Telepítése&lt;br /&gt;
Tanúsítvány Telepítése&lt;br /&gt;
Adatbázis Konfiguráció&lt;br /&gt;
Redis Konfiguráció&lt;br /&gt;
LDAP Integráció&lt;br /&gt;
Konfiguráció és modulok Beállítása&lt;br /&gt;
&lt;br /&gt;
Egyebek?&lt;br /&gt;
Naplózás, Monitorozás&lt;br /&gt;
&lt;br /&gt;
EDDIGI DOKSI&lt;br /&gt;
&lt;br /&gt;
Ez egy simplesamlphp install útmutató, először is nagyvonalakban leírásra kerülnek az előkészületek ezt követően pedig maga a szoftver telepítése és beállítása.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Előkészületek:&lt;br /&gt;
	Rendszer:&lt;br /&gt;
		APACHE telepítése&lt;br /&gt;
		PHP 8 vagy nagyobb telepítése&lt;br /&gt;
		COMPOSER telepítése&lt;br /&gt;
		Könyvtárak, kiegészítők amiket telepíteni kell:&lt;br /&gt;
			 wget openssl unzip build-essential libldap2-dev libldap-common &lt;br /&gt;
			 PHP kiegészítők: ldap, mysqli, pdo, pdo_mysql&lt;br /&gt;
	Információk, certek:&lt;br /&gt;
		Bár a szoftver képes futni mariadb, és redis nélkül, ezek vagy hasonló megoldások használata ajánlott.&lt;br /&gt;
		Database connection stringgel rendelkezni, redis elérhetőséggel és jelszóval rendelkezni.&lt;br /&gt;
			Az adatbázis szerkezetének kialakítása a használt moduloktól függ, a leggyakoribb a consent modul, ott van is dokumentáció az adatbázis inicializálásáról.&lt;br /&gt;
		Kell 2 certpár, az egyik az apachenak a másik az SSP-nek ezutóbbi lehet önalárírt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Telepítés:&lt;/div&gt;</summary>
		<author><name>Matteo(AT)niif.hu</name></author>	</entry>

	</feed>