<?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=Gyufi%28AT%29sztaki.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=Gyufi%28AT%29sztaki.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/Gyufi(AT)sztaki.hu"/>
		<updated>2026-11-07T20:48:19Z</updated>
		<subtitle>Szerkesztő közreműködései</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HREF_Key_Rollover_2020&amp;diff=4886</id>
		<title>HREF Key Rollover 2020</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HREF_Key_Rollover_2020&amp;diff=4886"/>
				<updated>2021-08-19T07:40:01Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* FAQ /GYIK */ eduGAINable IdPs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bevezetés ==&lt;br /&gt;
A HREF új metaadat aláírókulcsra áll át a SAML 2.0 metaadataiban (HREF-2020). A HREF szövetségi tagoknak és partnernek az új aláírókulcshoz tartozót konfigurációkat 2022. január 1.-ig frissíteniük kell az összes eduID.hu-t támogató rendszerükben. Ezt követően a régi - több, mint 6 éves aláírókulcs (HREF-2011) - leállításra kerül, és az utolsó aláírástól számított 10. napon a régi metaadat érvénytelen lesz.&lt;br /&gt;
&lt;br /&gt;
Az alábbi táblázatok az átálláshoz szükséges összes adatot tartalmazzák. A konfigurációs példák, olyan megoldásokat kínálnak (ahol ez lehetséges), amelyekkel egyszerre lehet használni a régi és az új metaadatot.&lt;br /&gt;
&lt;br /&gt;
== Key Rollover ==&lt;br /&gt;
&lt;br /&gt;
=== Elnevezések ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Elnevezés || Metaadat aláíró tanúsítvány || Kivezetés tervezett időpontja&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| HREF-2011 || style=&amp;quot;text-align:center;&amp;quot; | [https://metadata.eduid.hu/certs/href-metadata-signer-2011.crt href-metadata-signer-2011.crt] || style=&amp;quot;text-align:center;&amp;quot; | 2022.01.01.&lt;br /&gt;
|-&lt;br /&gt;
| HREF-2015 || style=&amp;quot;text-align:center;&amp;quot; | [https://metadata.eduid.hu/certs/mdx-test-signer-2020.crt mdx-test-signer-2015.crt] || style=&amp;quot;text-align:center;&amp;quot; | 2022.01.01.&lt;br /&gt;
|-&lt;br /&gt;
| HREF-2020 || style=&amp;quot;text-align:center;&amp;quot; | [https://metadata.eduid.hu/certs/href-metadata-signer-2020.crt href-metadata-signer-2020.crt] || style=&amp;quot;text-align:center;&amp;quot; | 2025.06.14.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== SHA1 fingerprints ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Elnevezés || SHA1 fingerprint&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| HREF-2011 || style=&amp;quot;text-align:center;&amp;quot; | &amp;lt;code&amp;gt;FE:AE:0B:E8:FB:59:ED:F7:CB:7F:69:DF:19:4F:8B:6D:C7:F6:96:66&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| HREF-2015 || style=&amp;quot;text-align:center;&amp;quot; | &amp;lt;code&amp;gt;91:81:AD:2B:F1:C1:4E:47:93:A2:9D:49:34:B7:77:62:4F:2F:98:43&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| HREF-2020 || style=&amp;quot;text-align:center;&amp;quot; | &amp;lt;code&amp;gt;C3:72:DC:75:4C:FA:BA:65:63:52:D9:6B:47:5B:44:7E:AA:F6:45:61&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Domain név változások ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Domain || Technikai domain || Kulcs || Állapot&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | metadata.eduid.hu || &amp;lt;code&amp;gt;metadata.eduid.hu/2011/href.xml&amp;lt;/code&amp;gt; || HREF-2011 || style=&amp;quot;text-align:center;&amp;quot; | Prod&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;metadata.eduid.hu/2020/href.xml&amp;lt;/code&amp;gt; || HREF-2020 || style=&amp;quot;text-align:center;&amp;quot; | Prod&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | mdx.eduid.hu || &amp;lt;code&amp;gt;mdx-2015.eduid.hu&amp;lt;/code&amp;gt; || HREF-2015 || style=&amp;quot;text-align:center;&amp;quot; | Prod&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mdx-2020.eduid.hu&amp;lt;/code&amp;gt; || HREF-2020 || style=&amp;quot;text-align:center;&amp;quot; | Prod&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Shibboleth Service Provider beállítások ==&lt;br /&gt;
&lt;br /&gt;
https://wiki.shibboleth.net/confluence/display/SP3/MetadataProvider&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
https://wiki.shibboleth.net/confluence/display/SP3/XMLMetadataProvider&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;MetadataProvider type=&amp;quot;Chaining&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MetadataProvider type=&amp;quot;XML&amp;quot; id=&amp;quot;href-2011&amp;quot; url=&amp;quot;https://metadata.eduid.hu/2011/href.xml&amp;quot; backingFilePath=&amp;quot;href-2011.xml&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;MetadataFilter type=&amp;quot;Signature&amp;quot; certificate=&amp;quot;href-metadata-signer-2011.crt&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;MetadataFilter type=&amp;quot;RequireValidUntil&amp;quot; maxValidityInterval=&amp;quot;864000&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
    &amp;lt;MetadataProvider type=&amp;quot;XML&amp;quot; id=&amp;quot;href-2020&amp;quot; url=&amp;quot;https://metadata.eduid.hu/2020/href.xml&amp;quot; backingFilePath=&amp;quot;href-2020.xml&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;MetadataFilter type=&amp;quot;Signature&amp;quot; certificate=&amp;quot;href-metadata-signer-2020.crt&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;MetadataFilter type=&amp;quot;RequireValidUntil&amp;quot; maxValidityInterval=&amp;quot;864000&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MDX ===&lt;br /&gt;
&lt;br /&gt;
==== Shibboleth 3.X ====&lt;br /&gt;
&lt;br /&gt;
https://wiki.shibboleth.net/confluence/display/SP3/MDQMetadataProvider&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;MetadataProvider type=&amp;quot;MDQ&amp;quot; id=&amp;quot;href-2015&amp;quot; ignoreTransport=&amp;quot;true&amp;quot; baseUrl=&amp;quot;https://mdx-2015.eduid.hu/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MetadataFilter type=&amp;quot;Signature&amp;quot; certificate=&amp;quot;mdx-test-signer-2015.crt&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;MetadataFilter type=&amp;quot;RequireValidUntil&amp;quot; maxValidityInterval=&amp;quot;864000&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&amp;lt;MetadataProvider type=&amp;quot;MDQ&amp;quot; id=&amp;quot;href-2020&amp;quot; ignoreTransport=&amp;quot;true&amp;quot; baseUrl=&amp;quot;https://mdx-2020.eduid.hu/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MetadataFilter type=&amp;quot;Signature&amp;quot; certificate=&amp;quot;href-metadata-signer-2020.crt&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;MetadataFilter type=&amp;quot;RequireValidUntil&amp;quot; maxValidityInterval=&amp;quot;864000&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shibboleth 2.X ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;MetadataProvider type=&amp;quot;Dynamic&amp;quot; id=&amp;quot;href-2015&amp;quot; ignoreTransport=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Subst&amp;gt;https://mdx-2015.eduid.hu/entities/$entityID&amp;lt;/Subst&amp;gt;&lt;br /&gt;
    &amp;lt;MetadataFilter type=&amp;quot;Signature&amp;quot; certificate=&amp;quot;mdx-test-signer-2015.crt&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&amp;lt;MetadataProvider type=&amp;quot;Dynamic&amp;quot; id=&amp;quot;href-2020&amp;quot; ignoreTransport=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Subst&amp;gt;https://mdx-2020.eduid.hu/entities/$entityID&amp;lt;/Subst&amp;gt;&lt;br /&gt;
    &amp;lt;MetadataFilter type=&amp;quot;Signature&amp;quot; certificate=&amp;quot;href-metadata-signer-2020.crt&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Shibboleth Identity Provider beállítások ==&lt;br /&gt;
&lt;br /&gt;
=== XML ===&lt;br /&gt;
&lt;br /&gt;
==== Shibboleth 4.X ====&lt;br /&gt;
&lt;br /&gt;
https://wiki.shibboleth.net/confluence/display/IDP4/FileBackedHTTPMetadataProvider&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;MetadataProvider id=&amp;quot;RemoteMetadataAggregate&amp;quot; xsi:type=&amp;quot;FileBackedHTTPMetadataProvider&amp;quot;&lt;br /&gt;
                  backingFile=&amp;quot;%{idp.home}/metadata/href-2020.xml&amp;quot;&lt;br /&gt;
                  metadataURL=&amp;quot;https://metadata.eduid.hu/2020/href.xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;MetadataFilter xsi:type=&amp;quot;SignatureValidation&amp;quot; requireSignedRoot=&amp;quot;true&amp;quot;&lt;br /&gt;
        certificateFile=&amp;quot;%{idp.home}/conf/metadata/href-metadata-signer-2020.crt&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;MetadataFilter xsi:type=&amp;quot;RequiredValidUntil&amp;quot; maxValidityInterval=&amp;quot;P9D&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;MetadataFilter xsi:type=&amp;quot;EntityRoleWhiteList&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;RetainedRole&amp;gt;md:SPSSODescriptor&amp;lt;/RetainedRole&amp;gt;&lt;br /&gt;
    &amp;lt;/MetadataFilter&amp;gt;      &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shibboleth 3.X ====&lt;br /&gt;
&lt;br /&gt;
https://wiki.shibboleth.net/confluence/display/IDP30/FileBackedHTTPMetadataProvider&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;MetadataProvider id=&amp;quot;RemoteMetadataAggregate&amp;quot; xsi:type=&amp;quot;FileBackedHTTPMetadataProvider&amp;quot;&lt;br /&gt;
                  backingFile=&amp;quot;%{idp.home}/metadata/href-2020.xml&amp;quot;&lt;br /&gt;
                  metadataURL=&amp;quot;https://metadata.eduid.hu/2020/href.xml&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;MetadataFilter xsi:type=&amp;quot;SignatureValidation&amp;quot; requireSignedRoot=&amp;quot;true&amp;quot;&lt;br /&gt;
        certificateFile=&amp;quot;%{idp.home}/conf/metadata/href-metadata-signer-2020.crt&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;MetadataFilter xsi:type=&amp;quot;RequiredValidUntil&amp;quot; maxValidityInterval=&amp;quot;P9D&amp;quot;/&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;MetadataFilter xsi:type=&amp;quot;EntityRoleWhiteList&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;RetainedRole&amp;gt;md:SPSSODescriptor&amp;lt;/RetainedRole&amp;gt;&lt;br /&gt;
    &amp;lt;/MetadataFilter&amp;gt;      &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MDX ===&lt;br /&gt;
&lt;br /&gt;
==== Shibboleth 4.X ====&lt;br /&gt;
&lt;br /&gt;
https://wiki.shibboleth.net/confluence/display/IDP4/DynamicHTTPMetadataProvider&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;MetadataProvider id=&amp;quot;DynamicEntityMetadata&amp;quot; xsi:type=&amp;quot;DynamicHTTPMetadataProvider&amp;quot;&lt;br /&gt;
                  connectionRequestTimeout=&amp;quot;PT2S&amp;quot;&lt;br /&gt;
                  connectionTimeout=&amp;quot;PT2S&amp;quot;&lt;br /&gt;
                  socketTimeout=&amp;quot;PT4S&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;MetadataFilter xsi:type=&amp;quot;SignatureValidation&amp;quot; requireSignedRoot=&amp;quot;true&amp;quot;&lt;br /&gt;
        certificateFile=&amp;quot;%{idp.home}/credentials/href-metadata-signer-2020.crt&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;MetadataFilter xsi:type=&amp;quot;RequiredValidUntil&amp;quot; maxValidityInterval=&amp;quot;P9D&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;MetadataQueryProtocol&amp;gt;https://mdx-2020.eduid.hu/&amp;lt;/MetadataQueryProtocol&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Shibboleth 3.X ====&lt;br /&gt;
&lt;br /&gt;
https://wiki.shibboleth.net/confluence/display/IDP30/DynamicHTTPMetadataProvider&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;MetadataProvider id=&amp;quot;DynamicEntityMetadata&amp;quot; xsi:type=&amp;quot;DynamicHTTPMetadataProvider&amp;quot;&lt;br /&gt;
                  connectionRequestTimeout=&amp;quot;PT2S&amp;quot;&lt;br /&gt;
                  connectionTimeout=&amp;quot;PT2S&amp;quot;&lt;br /&gt;
                  socketTimeout=&amp;quot;PT4S&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;MetadataFilter xsi:type=&amp;quot;SignatureValidation&amp;quot; requireSignedRoot=&amp;quot;true&amp;quot;&lt;br /&gt;
        certificateFile=&amp;quot;%{idp.home}/credentials/href-metadata-signer-2020.crt&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;MetadataFilter xsi:type=&amp;quot;RequiredValidUntil&amp;quot; maxValidityInterval=&amp;quot;P9D&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;MetadataQueryProtocol&amp;gt;https://mdx-2020.eduid.hu/&amp;lt;/MetadataQueryProtocol&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SimpleSAMLphp == &lt;br /&gt;
&lt;br /&gt;
=== MDX ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
//config/config.php&lt;br /&gt;
'metadata.sources' =&amp;gt; [&lt;br /&gt;
     ['type' =&amp;gt; 'flatfile'], // ez a *-hosted metadata konfiguráció betöltése miatt szükséges&lt;br /&gt;
     [&lt;br /&gt;
         'type' =&amp;gt; 'mdq',&lt;br /&gt;
         'server' =&amp;gt; 'https://mdx-2020.eduid.hu',&lt;br /&gt;
         /* --- */&lt;br /&gt;
         'validateFingerprint' =&amp;gt; 'C3:72:DC:75:4C:FA:BA:65:63:52:D9:6B:47:5B:44:7E:AA:F6:45:61'&lt;br /&gt;
     ],&lt;br /&gt;
],&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== metarefresh ===&lt;br /&gt;
&lt;br /&gt;
https://simplesamlphp.org/docs/stable/simplesamlphp-maintenance#section_3&lt;br /&gt;
&lt;br /&gt;
https://github.com/simplesamlphp/simplesamlphp-module-metarefresh/blob/master/docs/simplesamlphp-automated_metadata.md&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// config/config-metarefresh.php&lt;br /&gt;
$config = [&lt;br /&gt;
   'sets' =&amp;gt; [&lt;br /&gt;
       'href-2011' =&amp;gt; [&lt;br /&gt;
           'cron'      =&amp;gt; ['hourly'],&lt;br /&gt;
           'sources'   =&amp;gt; [&lt;br /&gt;
               [&lt;br /&gt;
                   'src' =&amp;gt; 'https://metadata.eduid.hu/2011/href.xml',&lt;br /&gt;
                   'validateFingerprint' =&amp;gt; 'FE:AE:0B:E8:FB:59:ED:F7:CB:7F:69:DF:19:4F:8B:6D:C7:F6:96:66',&lt;br /&gt;
               ],&lt;br /&gt;
           ],&lt;br /&gt;
           'expireAfter'       =&amp;gt; 777600, // 9 nap&lt;br /&gt;
           'outputDir'     =&amp;gt; 'metadata/metarefresh-href-2011/',&lt;br /&gt;
           'outputFormat' =&amp;gt; 'flatfile',&lt;br /&gt;
       ],&lt;br /&gt;
       'href-2020' =&amp;gt; [&lt;br /&gt;
           'cron'      =&amp;gt; ['hourly'],&lt;br /&gt;
           'sources'   =&amp;gt; [&lt;br /&gt;
               [&lt;br /&gt;
                   'src' =&amp;gt; 'https://metadata.eduid.hu/2020/href.xml',&lt;br /&gt;
                   'validateFingerprint' =&amp;gt; 'C3:72:DC:75:4C:FA:BA:65:63:52:D9:6B:47:5B:44:7E:AA:F6:45:61',&lt;br /&gt;
               ],&lt;br /&gt;
           ],&lt;br /&gt;
           'expireAfter'       =&amp;gt; 777600, // 9 nap.&lt;br /&gt;
           'outputDir'     =&amp;gt; 'metadata/metarefresh-href-2020/',&lt;br /&gt;
           'outputFormat' =&amp;gt; 'flatfile',&lt;br /&gt;
       ],&lt;br /&gt;
    ],&lt;br /&gt;
];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// config/config.php&lt;br /&gt;
'metadata.sources' =&amp;gt; [&lt;br /&gt;
    ['type' =&amp;gt; 'flatfile'],&lt;br /&gt;
    ['type' =&amp;gt; 'flatfile', 'directory' =&amp;gt; 'metadata/metarefresh-href-2011'],&lt;br /&gt;
    ['type' =&amp;gt; 'flatfile', 'directory' =&amp;gt; 'metadata/metarefresh-href-2020'],&lt;br /&gt;
],&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FAQ /GYIK ==&lt;br /&gt;
&lt;br /&gt;
Bővítés alatt!&lt;br /&gt;
&lt;br /&gt;
* Miért cserél KIFÜ kulcsot? &lt;br /&gt;
* IdP-t érinti?&lt;br /&gt;
* Mi a helyzet az eduGAIN-t használó IdP-kkel?&lt;br /&gt;
* Mi a helyzet az eduGAIN-t használó SP-kkel?&lt;br /&gt;
* Hogyan tudom ellenőrízni, hogy jó kulcsot használok?&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sirtfi&amp;diff=4341</id>
		<title>Sirtfi</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sirtfi&amp;diff=4341"/>
				<updated>2018-06-14T07:06:29Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* Security Incident Response Trust Framework for Federated Identity (SIRTFI) */  typo fixek&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Security Incident Response Trust Framework for Federated Identity (SIRTFI) ==&lt;br /&gt;
&lt;br /&gt;
A [https://refeds.org/sirtfi SIRTFI] kezdeményezést a REFEDS (the  Research and Education FEDerations group) koordinálja, célja, hogy a föderációs és különösen a föderációközi együttműködéshez kapcsolódó incidenskezelés számára kereteket szabjon, a föderációban résztvevő felek számára egy magasabb biztonsági szintet adjon azáltal, hogy a SIRTFI-nak megfelelő entitások kapcsán biztosak lehetnek az alábbiakban:&lt;br /&gt;
* az intézményi üzemeltető az adott entitáshoz kapcsolódó biztonsági frissítéseket, mind operációs rendszer, mind kapcsolódó szoftverek, mind pedig a föderációs együttműködést megvalósító middleware tekintetében a lehető leggyorsabban telepíti,&lt;br /&gt;
* biztosított intézményi szinten az incidenskezeléshez kapcsolódó kompetencia, mellyel párhuzamosan az intézmény föderációs szinten (a metadatán keresztül) megjelöl egy speciális elérhetőséget, melyen keresztül az esetleges biztonsági incidensek kapcsán biztosan felvehető a kapcsolat a kompetens intézményi személlyel,&lt;br /&gt;
* az adott entitáshoz kapcsolódóan megfelelő naplózás történik, szükség esetén visszakereshetők az esetleges incidensekhez kapcsolódó alapvető információk,&lt;br /&gt;
* az adott intézmény rendelkezik AUP-val és biztosítja, hogy felhasználói be is tartják.&lt;br /&gt;
&lt;br /&gt;
Fontos, hogy a SIRTFI-képesség metadatában való jelzése önbevallás útján történik, tehát föderációs szinten nem kerül vizsgálatra, hogy az intézmény az állításának megfelelően ténylegesen bír-e a fenti listában jelzett kompetenciákkal. Az eduID entitások kapcsán a Resource Registry-ben állítható be a SIRTFI-képesség.&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=F%C3%A1jl:Uni-nke-logo-main.png&amp;diff=4224</id>
		<title>Fájl:Uni-nke-logo-main.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=F%C3%A1jl:Uni-nke-logo-main.png&amp;diff=4224"/>
				<updated>2017-10-17T06:51:31Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=F%C3%A1jl:Aote-logo_png_(1200%C3%9780)_(1).jpg&amp;diff=4223</id>
		<title>Fájl:Aote-logo png (1200×80) (1).jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=F%C3%A1jl:Aote-logo_png_(1200%C3%9780)_(1).jpg&amp;diff=4223"/>
				<updated>2017-10-17T06:49:47Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=F%C3%A1jl:Www_uni-neumann.hu-core-templates-pae_v2-gfx-pae-logo_hu.svg.jpg&amp;diff=4222</id>
		<title>Fájl:Www uni-neumann.hu-core-templates-pae v2-gfx-pae-logo hu.svg.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=F%C3%A1jl:Www_uni-neumann.hu-core-templates-pae_v2-gfx-pae-logo_hu.svg.jpg&amp;diff=4222"/>
				<updated>2017-10-17T06:37:21Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Int%C3%A9zm%C3%A9ny_%C3%A1tnevez%C3%A9s&amp;diff=4197</id>
		<title>Intézmény átnevezés</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Int%C3%A9zm%C3%A9ny_%C3%A1tnevez%C3%A9s&amp;diff=4197"/>
				<updated>2017-09-05T11:53:29Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* Discovery leírás */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sok esetben merül fel az a kérdés, hogy eduID tagintézmény névváltozása esetén mi a teendő. Alább egy konkrét levelezés másolata következik, amely remélhetőleg általános információkat tartalmaz.&lt;br /&gt;
&lt;br /&gt;
== Kérdés ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Kecskemét és Szolnok egyesítésével létrejött a Pallasz Athéné Egyetem. Mit kell ilyenkor tennünk? Mert a weboldalakat át kéne neveznem az új dominre. Kell csinálnom új IDP-t és új SP-ket? vagy csak SP-ket?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Szerződés ==&lt;br /&gt;
Ha a PAE jogutódja a KeFo-nak, akkor nem kell új szerződést kötni. Egyébként igen.&lt;br /&gt;
&lt;br /&gt;
== Átnevezni vagy nem átnevezni? ==&lt;br /&gt;
=== entityID ===&lt;br /&gt;
Az entitások átnevezése problémás, ezért azt célszerű kerülni. A legtöbb gond az eduPersonTargetedId-vel van, ugyanis az &amp;quot;targeted&amp;quot; azonosító, ami azt jelenti, hogy akár az IdP, akár az SP entityID-je megváltozik, az azonosító értéke is megváltozik, azaz a felhasználó &amp;quot;élettörténete&amp;quot; újraindul az SP-nél. Ráadásul az azonosítók kézi átállítása is meglehetősen körülményes. Kérdés, hogy mely általatok használt SP-k használnak eduPersonTargetedId-t. A Videotorium például igen, ill. lásd még a href.xml-ben a RequestedAttributes elemet. Mivel az entityID nem jelenik meg a felhasználóknak (normális esetben), emiatt nem valószínű, hogy bárki arra kötelezne titeket, hogy változtassátok meg.&lt;br /&gt;
&lt;br /&gt;
=== [[Scope]] ===&lt;br /&gt;
Az eduPersonPrincipalName és az eduPersonScopedAffiliation használja a [[Scope|scope]]-okat. Az minden további nélkül működik, hogy újabb scope-okat '''IS''' elkezdjetek használni (új felhasználóknál), de ha egy létező felhasználó scope-ját lecserélitek, akkor ő a fentihez hasonló módon új felhasználóként jelenik meg az összes SP-nél. És eduPersonPrincipalname-et és/vagy eduPersonScopedAffiliationt nagyon sok SP használ, valamint a legtöbb belső SP is valószínűleg úgy van konfigurálva, hogy scope alapon végezze az autorizációt.  Az autorizációs szabályok (pl. &amp;lt;code&amp;gt;require affiliation member@kefo.hu&amp;lt;/code&amp;gt; vagy &amp;lt;code&amp;gt;require eppn bekre.pal@kefo.hu&amp;lt;/code&amp;gt;) szabályok módosítása triviális.  Az élettörténet megtartása sajnos már alkalmazásspecifikus, jellemzően kézi adatbázisműveleteket igényel. Annyival egyszerűbb ez, mint az eduPersonTargetedId módosítása, hogy pontosan tudod az átírási szabályt, pl:&lt;br /&gt;
 s/([^@]+)@kefo.hu/$1@pae.hu/&lt;br /&gt;
A tanácsom az, hogy nézzétek át, hogy mely SP-k esetén fontos az élettörténet megtartása, és ezeket kérjétek meg a fenti változtatásra. (Pl. ha vannak olyan HBONE-adminisztrációs szolgáltatások, amiket eddig kefo.hu-s azonosítóval használtál, akkor azok ilyenek.) &lt;br /&gt;
&lt;br /&gt;
=== mail ===&lt;br /&gt;
A mail cím megváltoztatása jellemzően nem jelent problémát. Azt érdemes észben tartani, hogy a Drupal megköveteli az e-mail címek egyediségét, azaz ha megváltozik az eppn, miközben nem változik a mail, akkor az &amp;quot;új&amp;quot; felhasználó létrehozása nem fog sikerülni. &lt;br /&gt;
&lt;br /&gt;
=== IdP URL ===&lt;br /&gt;
Mellékhatások nélkül módosítható, hogy az IdP milyen URL-en azonosítsa a felhasználókat (vagy válaszoljon az AttributeQuery-kre, de ez nagyon ritka funkció). Ehhez a &amp;lt;code&amp;gt;SingleSignOnService&amp;lt;/code&amp;gt; és &amp;lt;code&amp;gt;SingleLogoutService&amp;lt;/code&amp;gt; végpontokat kell lecserélni a Resource Registry-ben a haladó beállítások között, valamint természetesen az IdP webszerverét megfelelően kell konfigurálni.  Ez a módosítás kizárólag azt befolyásolja, hogy milyen URL jelenik meg a felhasználók böngészőjében, amikor azonosításra átirányítják őket az SP-k. Nyilván megfelelő SSL tanúsítvány is kell az új URL-re.&lt;br /&gt;
&lt;br /&gt;
=== Discovery leírás ===&lt;br /&gt;
Ez is mellékhatások nélkül módosítható, és ez az, ami a leginkább szembetűnő a felhasználók számára. Ezt is a Resource Registry-ben, a Leírók-nál kell módosítani. (Légyszi küldjetek egy értesítést az info @ eduid.hu-ra, ha módosítjátok, mert a központi Discovery Service-t jelenleg még kézzel kell frissítenünk.)&lt;br /&gt;
&lt;br /&gt;
[[Kategória: AAI]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SimpleSAMLphp&amp;diff=4196</id>
		<title>SimpleSAMLphp</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SimpleSAMLphp&amp;diff=4196"/>
				<updated>2017-09-05T11:52:18Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* IdP */&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ő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 (legalább 5.2.0 verzió)&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;
&lt;br /&gt;
===Letöltés===&lt;br /&gt;
A legfrissebb változat letölthető a https://simplesamlphp.org/download címről&lt;br /&gt;
&lt;br /&gt;
 cd /var&lt;br /&gt;
 tar xzf simplesamlphp-1.x.y.tar.gz&lt;br /&gt;
 mv simplesamlphp-1.x.y simplesamlphp&lt;br /&gt;
&lt;br /&gt;
Alapértelmezés szerint a &amp;lt;code&amp;gt;/var/simplesamlphp&amp;lt;/code&amp;gt; alatt szeretne majd működni, ez természetesen változtatható, de most maradunk az eredeti beállításoknál.&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.&lt;br /&gt;
&lt;br /&gt;
 Alias /simplesaml /var/simplesamlphp/www&lt;br /&gt;
&lt;br /&gt;
===Alapbeállítások===&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 konfigurációs fájlban &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;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;
===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;
==IdP beállítás==&lt;br /&gt;
===IdP funkció engedélyezése===&lt;br /&gt;
A &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlt kell szerkesztenünk, s engedélyezni a saml20 idp lehetőséget.&lt;br /&gt;
 'enable.saml20-idp' =&amp;gt; true,&lt;br /&gt;
===Autentikáció LDAP alapon===&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;
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;
 '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;
     */&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 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; FALSE,&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; NULL,&lt;br /&gt;
    'search.password' =&amp;gt; NULL,&lt;br /&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;
&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; 'idp.example.org.key',&lt;br /&gt;
    'certificate' =&amp;gt; 'idp.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;
Teszteléshez is érdemes, éles használathoz pedig elengedhetetlen, hogy a csomagban érkezett tanúsítványt felülírjuk, ezt célszerű mihamarabb megtenni. Ehhez az alábbi parancs lehet segítségünkre.&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out idp.example.org.crt -keyout idp.example.org.key&lt;br /&gt;
&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 idp.example.org.crt&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;
==SP beállítás==&lt;br /&gt;
===Alapadatok===&lt;br /&gt;
A telepített alkalmazásunk által kezelt SP-ket a &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; fájlban tudjuk beállítani.&lt;br /&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.pem',&lt;br /&gt;
        'certificate' =&amp;gt; 'saml.crt',&lt;br /&gt;
 &lt;br /&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;
Az IdP beállításához hasonlóan itt is szükség lesz egy tanúsítvány generálására a &amp;lt;code&amp;gt;cert&amp;lt;/code&amp;gt; könyvtárba. Ehhez segítség lehet az alábbi parancs.&lt;br /&gt;
&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out saml.crt -keyout saml.pem&lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
Amennyiben IdP is beállításra került, úgy a legcélszerűbb ezt összehangolni az SP-vel. Ehhez egyfelől a &amp;lt;code&amp;gt;metadata/saml20-idp-remote.php&amp;lt;/code&amp;gt; fájlban meg kell adni az IdP adatait, amely esetünkben az alábbiak szerint fest.&lt;br /&gt;
&lt;br /&gt;
 $metadata['https://example.org/simplesaml/saml2/idp/metadata.php'] = array(&lt;br /&gt;
        'name' =&amp;gt; array(&lt;br /&gt;
                'en' =&amp;gt; 'TestSP'&lt;br /&gt;
        ),&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;
        'certFingerprint'      =&amp;gt; 'afe71c28ef740bc87425be13a2263d37971da1f9'&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
Ehhez hasonlóan a &amp;lt;code&amp;gt;metadata/saml20-sp-remote.php&amp;lt;/code&amp;gt; fájlban meg kell adnunk az SP adatait. Teszteléshez az alábbiak elegendők:&lt;br /&gt;
&lt;br /&gt;
 $metadata['https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array (&lt;br /&gt;
  'AssertionConsumerService' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
Ezek után az IdP tesztelésénél már említett oldalon a default-sp opciót kiválasztva, majd a legördülő menüben a TestSP-re kattintva be kell tudnunk jelentkezni az IdP-n keresztül. Ha működik, akkor 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;
* Az SSP-nél be kell állítani metaadat forrásként a központi metaadatot&lt;br /&gt;
:*Első lépésként engedélyezzük, hogy az SSP automatikusan frissíthesse a metaadatot, ill. az ezt elvégző két modult&lt;br /&gt;
 touch modules/metarefresh/enable&lt;br /&gt;
 cp modules/metarefresh/config-templates/*.php config/&lt;br /&gt;
 touch modules/cron/enable&lt;br /&gt;
 cp modules/cron/config-templates/*.php config/&lt;br /&gt;
&lt;br /&gt;
:*Létrehozunk egy könyvtárat, ahová letöltésre kerül az központi metaadat XML fájlja&lt;br /&gt;
 mkdir metadata/metarefresh-href&lt;br /&gt;
 chmod g+rw metadata/metarefresh-href&lt;br /&gt;
&lt;br /&gt;
{{ATTENTION|Ahhoz, hogy az automatikus metadata frissítés gond nélkül működjön, legalább '''1.13.2'''-es verziójú simpleSAMLphp kell, vagy korábbi változatokon frissíteni kell a &amp;lt;code&amp;gt;/path/to/simplesamlphp/lib/xmlseclibs.php&amp;lt;/code&amp;gt; fájlt [http://goo.gl/ilRHkV erre a fájlra]! Bővebb információ ehhez kapcsolódóan [http://simplesamlphp.org/metaprocessing erre.]&lt;br /&gt;
&lt;br /&gt;
Ha az eduGAIN metaadatait is feldolgozzuk, akkor fontos, hogy néhány paramétert emeljük legalább az alábbi értékekre:&lt;br /&gt;
* maximum memória foglalás (&amp;lt;code&amp;gt;memory_limit&amp;lt;/code&amp;gt;): '''512MB'''&lt;br /&gt;
* maximum végrehajtási idő (&amp;lt;code&amp;gt;max_execution_time&amp;lt;/code&amp;gt;): '''120 sec'''}}&lt;br /&gt;
&lt;br /&gt;
:*Ezek után be kell állítani a metaadat kokrét adatait a &amp;lt;code&amp;gt;config/config-metarefresh.php&amp;lt;/code&amp;gt; fájlban&lt;br /&gt;
 $config = array(&lt;br /&gt;
    'sets' =&amp;gt; array(&lt;br /&gt;
        'hu' =&amp;gt; array(&lt;br /&gt;
            'cron'      =&amp;gt; array('hourly'),&lt;br /&gt;
            'sources'   =&amp;gt; array(&lt;br /&gt;
                array(&lt;br /&gt;
                    'src' =&amp;gt; 'http://metadata.eduid.hu/2011/href.xml',&lt;br /&gt;
                    'validateFingerprint' =&amp;gt; 'FE:AE:0B:E8:FB:59:ED:F7:CB:7F:69:DF:19:4F:8B:6D:C7:F6:96:66',&lt;br /&gt;
                ),&lt;br /&gt;
            ),&lt;br /&gt;
            'expireAfter'       =&amp;gt; 60*60*24*4, // Maximum 4 days cache time.&lt;br /&gt;
            'outputDir'     =&amp;gt; 'metadata/metarefresh-href/',&lt;br /&gt;
            'outputFormat' =&amp;gt; 'flatfile',&lt;br /&gt;
        ),&lt;br /&gt;
    ),&lt;br /&gt;
 );&lt;br /&gt;
:*Be kell állítani, hogy az SSP az automata által generált fájlokból dolgozzon. Ehhez a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlban keressük ki a &amp;lt;code&amp;gt;metadata.source&amp;lt;/code&amp;gt; szakaszt, és az alábbiak szerint szerkesszük át. Amennyiben nem csak a központi metaadatból szeretnénk dolgozni, úgy további sorokat is megadhatunk itt bemutatott mintájára.&lt;br /&gt;
 'metadata.sources' =&amp;gt; array(&lt;br /&gt;
    array('type' =&amp;gt; 'flatfile'), // IdP esetén kell, itt van az önmagát leíró metadata&lt;br /&gt;
    array('type' =&amp;gt; 'flatfile', 'directory' =&amp;gt; 'metadata/metarefresh-href'),&lt;br /&gt;
 ),&lt;br /&gt;
&lt;br /&gt;
:*Végül le kell futtatni kézzel a cronjobot, amelyet az SSP webes felületén tudunk megtenni a Configuration fül alatt, a Cron module information page menüpontban. Ekkor létrejönnek a fájlok (majd óránként frissülnek is, ha beállítjuk cronjobként).&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;
* (A jelenleg is formálódó adminisztratív teendőktől itt most eltekintünk)&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 egy-két óra alatt várhatóan beindul. :)&lt;br /&gt;
&lt;br /&gt;
:Tesztelésre használható oldal: [https://wiki.aai.niif.hu/shibtest.php https://wiki.aai.niif.hu/shibtest.php]&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;
** [[HREFAttributeSpec#schacHomeOrganizationType|schacHomeOrganizationType]]&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;
 '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, í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;
&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:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&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;
&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;
&lt;br /&gt;
[[Category: AAI]] [[Category: simpleSAMLphp]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SimpleSAMLphp&amp;diff=4195</id>
		<title>SimpleSAMLphp</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SimpleSAMLphp&amp;diff=4195"/>
				<updated>2017-09-05T11:50:07Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* Attribútumok kezelése */&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ő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 (legalább 5.2.0 verzió)&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;
&lt;br /&gt;
===Letöltés===&lt;br /&gt;
A legfrissebb változat letölthető a https://simplesamlphp.org/download címről&lt;br /&gt;
&lt;br /&gt;
 cd /var&lt;br /&gt;
 tar xzf simplesamlphp-1.x.y.tar.gz&lt;br /&gt;
 mv simplesamlphp-1.x.y simplesamlphp&lt;br /&gt;
&lt;br /&gt;
Alapértelmezés szerint a &amp;lt;code&amp;gt;/var/simplesamlphp&amp;lt;/code&amp;gt; alatt szeretne majd működni, ez természetesen változtatható, de most maradunk az eredeti beállításoknál.&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.&lt;br /&gt;
&lt;br /&gt;
 Alias /simplesaml /var/simplesamlphp/www&lt;br /&gt;
&lt;br /&gt;
===Alapbeállítások===&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 konfigurációs fájlban &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;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;
===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;
==IdP beállítás==&lt;br /&gt;
===IdP funkció engedélyezése===&lt;br /&gt;
A &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlt kell szerkesztenünk, s engedélyezni a saml20 idp lehetőséget.&lt;br /&gt;
 'enable.saml20-idp' =&amp;gt; true,&lt;br /&gt;
===Autentikáció LDAP alapon===&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;
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;
 '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;
     */&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 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; FALSE,&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; NULL,&lt;br /&gt;
    'search.password' =&amp;gt; NULL,&lt;br /&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;
&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; 'idp.example.org.key',&lt;br /&gt;
    'certificate' =&amp;gt; 'idp.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;
Teszteléshez is érdemes, éles használathoz pedig elengedhetetlen, hogy a csomagban érkezett tanúsítványt felülírjuk, ezt célszerű mihamarabb megtenni. Ehhez az alábbi parancs lehet segítségünkre.&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out idp.example.org.crt -keyout idp.example.org.key&lt;br /&gt;
&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 idp.example.org.crt&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;
==SP beállítás==&lt;br /&gt;
===Alapadatok===&lt;br /&gt;
A telepített alkalmazásunk által kezelt SP-ket a &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; fájlban tudjuk beállítani.&lt;br /&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.pem',&lt;br /&gt;
        'certificate' =&amp;gt; 'saml.crt',&lt;br /&gt;
 &lt;br /&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;
Az IdP beállításához hasonlóan itt is szükség lesz egy tanúsítvány generálására a &amp;lt;code&amp;gt;cert&amp;lt;/code&amp;gt; könyvtárba. Ehhez segítség lehet az alábbi parancs.&lt;br /&gt;
&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out saml.crt -keyout saml.pem&lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
Amennyiben IdP is beállításra került, úgy a legcélszerűbb ezt összehangolni az SP-vel. Ehhez egyfelől a &amp;lt;code&amp;gt;metadata/saml20-idp-remote.php&amp;lt;/code&amp;gt; fájlban meg kell adni az IdP adatait, amely esetünkben az alábbiak szerint fest.&lt;br /&gt;
&lt;br /&gt;
 $metadata['https://example.org/simplesaml/saml2/idp/metadata.php'] = array(&lt;br /&gt;
        'name' =&amp;gt; array(&lt;br /&gt;
                'en' =&amp;gt; 'TestSP'&lt;br /&gt;
        ),&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;
        'certFingerprint'      =&amp;gt; 'afe71c28ef740bc87425be13a2263d37971da1f9'&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
Ehhez hasonlóan a &amp;lt;code&amp;gt;metadata/saml20-sp-remote.php&amp;lt;/code&amp;gt; fájlban meg kell adnunk az SP adatait. Teszteléshez az alábbiak elegendők:&lt;br /&gt;
&lt;br /&gt;
 $metadata['https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array (&lt;br /&gt;
  'AssertionConsumerService' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
Ezek után az IdP tesztelésénél már említett oldalon a default-sp opciót kiválasztva, majd a legördülő menüben a TestSP-re kattintva be kell tudnunk jelentkezni az IdP-n keresztül. Ha működik, akkor 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;
* Az SSP-nél be kell állítani metaadat forrásként a központi metaadatot&lt;br /&gt;
:*Első lépésként engedélyezzük, hogy az SSP automatikusan frissíthesse a metaadatot, ill. az ezt elvégző két modult&lt;br /&gt;
 touch modules/metarefresh/enable&lt;br /&gt;
 cp modules/metarefresh/config-templates/*.php config/&lt;br /&gt;
 touch modules/cron/enable&lt;br /&gt;
 cp modules/cron/config-templates/*.php config/&lt;br /&gt;
&lt;br /&gt;
:*Létrehozunk egy könyvtárat, ahová letöltésre kerül az központi metaadat XML fájlja&lt;br /&gt;
 mkdir metadata/metarefresh-href&lt;br /&gt;
 chmod g+rw metadata/metarefresh-href&lt;br /&gt;
&lt;br /&gt;
{{ATTENTION|Ahhoz, hogy az automatikus metadata frissítés gond nélkül működjön, legalább '''1.13.2'''-es verziójú simpleSAMLphp kell, vagy korábbi változatokon frissíteni kell a &amp;lt;code&amp;gt;/path/to/simplesamlphp/lib/xmlseclibs.php&amp;lt;/code&amp;gt; fájlt [http://goo.gl/ilRHkV erre a fájlra]! Bővebb információ ehhez kapcsolódóan [http://simplesamlphp.org/metaprocessing erre.]&lt;br /&gt;
&lt;br /&gt;
Ha az eduGAIN metaadatait is feldolgozzuk, akkor fontos, hogy néhány paramétert emeljük legalább az alábbi értékekre:&lt;br /&gt;
* maximum memória foglalás (&amp;lt;code&amp;gt;memory_limit&amp;lt;/code&amp;gt;): '''512MB'''&lt;br /&gt;
* maximum végrehajtási idő (&amp;lt;code&amp;gt;max_execution_time&amp;lt;/code&amp;gt;): '''120 sec'''}}&lt;br /&gt;
&lt;br /&gt;
:*Ezek után be kell állítani a metaadat kokrét adatait a &amp;lt;code&amp;gt;config/config-metarefresh.php&amp;lt;/code&amp;gt; fájlban&lt;br /&gt;
 $config = array(&lt;br /&gt;
    'sets' =&amp;gt; array(&lt;br /&gt;
        'hu' =&amp;gt; array(&lt;br /&gt;
            'cron'      =&amp;gt; array('hourly'),&lt;br /&gt;
            'sources'   =&amp;gt; array(&lt;br /&gt;
                array(&lt;br /&gt;
                    'src' =&amp;gt; 'http://metadata.eduid.hu/2011/href.xml',&lt;br /&gt;
                    'validateFingerprint' =&amp;gt; 'FE:AE:0B:E8:FB:59:ED:F7:CB:7F:69:DF:19:4F:8B:6D:C7:F6:96:66',&lt;br /&gt;
                ),&lt;br /&gt;
            ),&lt;br /&gt;
            'expireAfter'       =&amp;gt; 60*60*24*4, // Maximum 4 days cache time.&lt;br /&gt;
            'outputDir'     =&amp;gt; 'metadata/metarefresh-href/',&lt;br /&gt;
            'outputFormat' =&amp;gt; 'flatfile',&lt;br /&gt;
        ),&lt;br /&gt;
    ),&lt;br /&gt;
 );&lt;br /&gt;
:*Be kell állítani, hogy az SSP az automata által generált fájlokból dolgozzon. Ehhez a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlban keressük ki a &amp;lt;code&amp;gt;metadata.source&amp;lt;/code&amp;gt; szakaszt, és az alábbiak szerint szerkesszük át. Amennyiben nem csak a központi metaadatból szeretnénk dolgozni, úgy további sorokat is megadhatunk itt bemutatott mintájára.&lt;br /&gt;
 'metadata.sources' =&amp;gt; array(&lt;br /&gt;
    array('type' =&amp;gt; 'flatfile'), // IdP esetén kell, itt van az önmagát leíró metadata&lt;br /&gt;
    array('type' =&amp;gt; 'flatfile', 'directory' =&amp;gt; 'metadata/metarefresh-href'),&lt;br /&gt;
 ),&lt;br /&gt;
&lt;br /&gt;
:*Végül le kell futtatni kézzel a cronjobot, amelyet az SSP webes felületén tudunk megtenni a Configuration fül alatt, a Cron module information page menüpontban. Ekkor létrejönnek a fájlok (majd óránként frissülnek is, ha beállítjuk cronjobként).&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;
* (A jelenleg is formálódó adminisztratív teendőktől itt most eltekintünk)&lt;br /&gt;
* Kell küldeni egy levelet a [mailto:aai@niif.hu aai@niif.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 egy-két óra alatt várhatóan beindul. :)&lt;br /&gt;
&lt;br /&gt;
:Tesztelésre használható oldal: [https://wiki.aai.niif.hu/shibtest.php https://wiki.aai.niif.hu/shibtest.php]&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;
** [[HREFAttributeSpec#schacHomeOrganizationType|schacHomeOrganizationType]]&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;
 '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, í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;
&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:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&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;
&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;
&lt;br /&gt;
[[Category: AAI]] [[Category: simpleSAMLphp]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SimpleSAMLphp&amp;diff=4194</id>
		<title>SimpleSAMLphp</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SimpleSAMLphp&amp;diff=4194"/>
				<updated>2017-09-05T11:40:30Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: 2048 bit kulcsok&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ő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 (legalább 5.2.0 verzió)&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;
&lt;br /&gt;
===Letöltés===&lt;br /&gt;
A legfrissebb változat letölthető a https://simplesamlphp.org/download címről&lt;br /&gt;
&lt;br /&gt;
 cd /var&lt;br /&gt;
 tar xzf simplesamlphp-1.x.y.tar.gz&lt;br /&gt;
 mv simplesamlphp-1.x.y simplesamlphp&lt;br /&gt;
&lt;br /&gt;
Alapértelmezés szerint a &amp;lt;code&amp;gt;/var/simplesamlphp&amp;lt;/code&amp;gt; alatt szeretne majd működni, ez természetesen változtatható, de most maradunk az eredeti beállításoknál.&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.&lt;br /&gt;
&lt;br /&gt;
 Alias /simplesaml /var/simplesamlphp/www&lt;br /&gt;
&lt;br /&gt;
===Alapbeállítások===&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 konfigurációs fájlban &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;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;
===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;
==IdP beállítás==&lt;br /&gt;
===IdP funkció engedélyezése===&lt;br /&gt;
A &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlt kell szerkesztenünk, s engedélyezni a saml20 idp lehetőséget.&lt;br /&gt;
 'enable.saml20-idp' =&amp;gt; true,&lt;br /&gt;
===Autentikáció LDAP alapon===&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;
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;
 '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;
     */&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 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; FALSE,&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; NULL,&lt;br /&gt;
    'search.password' =&amp;gt; NULL,&lt;br /&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;
&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; 'idp.example.org.key',&lt;br /&gt;
    'certificate' =&amp;gt; 'idp.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;
Teszteléshez is érdemes, éles használathoz pedig elengedhetetlen, hogy a csomagban érkezett tanúsítványt felülírjuk, ezt célszerű mihamarabb megtenni. Ehhez az alábbi parancs lehet segítségünkre.&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out idp.example.org.crt -keyout idp.example.org.key&lt;br /&gt;
&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 idp.example.org.crt&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;
==SP beállítás==&lt;br /&gt;
===Alapadatok===&lt;br /&gt;
A telepített alkalmazásunk által kezelt SP-ket a &amp;lt;code&amp;gt;config/authsources.php&amp;lt;/code&amp;gt; fájlban tudjuk beállítani.&lt;br /&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.pem',&lt;br /&gt;
        'certificate' =&amp;gt; 'saml.crt',&lt;br /&gt;
 &lt;br /&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;
Az IdP beállításához hasonlóan itt is szükség lesz egy tanúsítvány generálására a &amp;lt;code&amp;gt;cert&amp;lt;/code&amp;gt; könyvtárba. Ehhez segítség lehet az alábbi parancs.&lt;br /&gt;
&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out saml.crt -keyout saml.pem&lt;br /&gt;
&lt;br /&gt;
===Tesztelés===&lt;br /&gt;
Amennyiben IdP is beállításra került, úgy a legcélszerűbb ezt összehangolni az SP-vel. Ehhez egyfelől a &amp;lt;code&amp;gt;metadata/saml20-idp-remote.php&amp;lt;/code&amp;gt; fájlban meg kell adni az IdP adatait, amely esetünkben az alábbiak szerint fest.&lt;br /&gt;
&lt;br /&gt;
 $metadata['https://example.org/simplesaml/saml2/idp/metadata.php'] = array(&lt;br /&gt;
        'name' =&amp;gt; array(&lt;br /&gt;
                'en' =&amp;gt; 'TestSP'&lt;br /&gt;
        ),&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;
        'certFingerprint'      =&amp;gt; 'afe71c28ef740bc87425be13a2263d37971da1f9'&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
Ehhez hasonlóan a &amp;lt;code&amp;gt;metadata/saml20-sp-remote.php&amp;lt;/code&amp;gt; fájlban meg kell adnunk az SP adatait. Teszteléshez az alábbiak elegendők:&lt;br /&gt;
&lt;br /&gt;
 $metadata['https://example.org/simplesaml/module.php/saml/sp/metadata.php/default-sp'] = array (&lt;br /&gt;
  'AssertionConsumerService' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-acs.php/default-sp',&lt;br /&gt;
  'SingleLogoutService' =&amp;gt; 'https://example.org/simplesaml/module.php/saml/sp/saml2-logout.php/default-sp',&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
Ezek után az IdP tesztelésénél már említett oldalon a default-sp opciót kiválasztva, majd a legördülő menüben a TestSP-re kattintva be kell tudnunk jelentkezni az IdP-n keresztül. Ha működik, akkor 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;
* Az SSP-nél be kell állítani metaadat forrásként a központi metaadatot&lt;br /&gt;
:*Első lépésként engedélyezzük, hogy az SSP automatikusan frissíthesse a metaadatot, ill. az ezt elvégző két modult&lt;br /&gt;
 touch modules/metarefresh/enable&lt;br /&gt;
 cp modules/metarefresh/config-templates/*.php config/&lt;br /&gt;
 touch modules/cron/enable&lt;br /&gt;
 cp modules/cron/config-templates/*.php config/&lt;br /&gt;
&lt;br /&gt;
:*Létrehozunk egy könyvtárat, ahová letöltésre kerül az központi metaadat XML fájlja&lt;br /&gt;
 mkdir metadata/metarefresh-href&lt;br /&gt;
 chmod g+rw metadata/metarefresh-href&lt;br /&gt;
&lt;br /&gt;
{{ATTENTION|Ahhoz, hogy az automatikus metadata frissítés gond nélkül működjön, legalább '''1.13.2'''-es verziójú simpleSAMLphp kell, vagy korábbi változatokon frissíteni kell a &amp;lt;code&amp;gt;/path/to/simplesamlphp/lib/xmlseclibs.php&amp;lt;/code&amp;gt; fájlt [http://goo.gl/ilRHkV erre a fájlra]! Bővebb információ ehhez kapcsolódóan [http://simplesamlphp.org/metaprocessing erre.]&lt;br /&gt;
&lt;br /&gt;
Ha az eduGAIN metaadatait is feldolgozzuk, akkor fontos, hogy néhány paramétert emeljük legalább az alábbi értékekre:&lt;br /&gt;
* maximum memória foglalás (&amp;lt;code&amp;gt;memory_limit&amp;lt;/code&amp;gt;): '''512MB'''&lt;br /&gt;
* maximum végrehajtási idő (&amp;lt;code&amp;gt;max_execution_time&amp;lt;/code&amp;gt;): '''120 sec'''}}&lt;br /&gt;
&lt;br /&gt;
:*Ezek után be kell állítani a metaadat kokrét adatait a &amp;lt;code&amp;gt;config/config-metarefresh.php&amp;lt;/code&amp;gt; fájlban&lt;br /&gt;
 $config = array(&lt;br /&gt;
    'sets' =&amp;gt; array(&lt;br /&gt;
        'hu' =&amp;gt; array(&lt;br /&gt;
            'cron'      =&amp;gt; array('hourly'),&lt;br /&gt;
            'sources'   =&amp;gt; array(&lt;br /&gt;
                array(&lt;br /&gt;
                    'src' =&amp;gt; 'http://metadata.eduid.hu/2011/href.xml',&lt;br /&gt;
                    'validateFingerprint' =&amp;gt; 'FE:AE:0B:E8:FB:59:ED:F7:CB:7F:69:DF:19:4F:8B:6D:C7:F6:96:66',&lt;br /&gt;
                ),&lt;br /&gt;
            ),&lt;br /&gt;
            'expireAfter'       =&amp;gt; 60*60*24*4, // Maximum 4 days cache time.&lt;br /&gt;
            'outputDir'     =&amp;gt; 'metadata/metarefresh-href/',&lt;br /&gt;
            'outputFormat' =&amp;gt; 'flatfile',&lt;br /&gt;
        ),&lt;br /&gt;
    ),&lt;br /&gt;
 );&lt;br /&gt;
:*Be kell állítani, hogy az SSP az automata által generált fájlokból dolgozzon. Ehhez a &amp;lt;code&amp;gt;config/config.php&amp;lt;/code&amp;gt; fájlban keressük ki a &amp;lt;code&amp;gt;metadata.source&amp;lt;/code&amp;gt; szakaszt, és az alábbiak szerint szerkesszük át. Amennyiben nem csak a központi metaadatból szeretnénk dolgozni, úgy további sorokat is megadhatunk itt bemutatott mintájára.&lt;br /&gt;
 'metadata.sources' =&amp;gt; array(&lt;br /&gt;
    array('type' =&amp;gt; 'flatfile'), // IdP esetén kell, itt van az önmagát leíró metadata&lt;br /&gt;
    array('type' =&amp;gt; 'flatfile', 'directory' =&amp;gt; 'metadata/metarefresh-href'),&lt;br /&gt;
 ),&lt;br /&gt;
&lt;br /&gt;
:*Végül le kell futtatni kézzel a cronjobot, amelyet az SSP webes felületén tudunk megtenni a Configuration fül alatt, a Cron module information page menüpontban. Ekkor létrejönnek a fájlok (majd óránként frissülnek is, ha beállítjuk cronjobként).&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;
* (A jelenleg is formálódó adminisztratív teendőktől itt most eltekintünk)&lt;br /&gt;
* Kell küldeni egy levelet a [mailto:aai@niif.hu aai@niif.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 egy-két óra alatt várhatóan beindul. :)&lt;br /&gt;
&lt;br /&gt;
:Tesztelésre használható oldal: [https://wiki.aai.niif.hu/shibtest.php https://wiki.aai.niif.hu/shibtest.php]&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;
** [[HREFAttributeSpec#schacHomeOrganizationType|schacHomeOrganizationType]]&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;
:1. Az &amp;lt;code&amp;gt;attributemap/name2oid.php&amp;lt;/code&amp;gt; fájlba az 's'-betűhöz szúrjuk be az alábbi sort:&lt;br /&gt;
 'schacHomeOrganizationType' =&amp;gt; 'urn:oid:1.3.6.1.4.1.25178.1.2.10',&lt;br /&gt;
:2. 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;
 '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, í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;
&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:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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;
&lt;br /&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;
&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;
&lt;br /&gt;
[[Category: AAI]] [[Category: simpleSAMLphp]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Shibboleth_Service_Provider_(SP)&amp;diff=4160</id>
		<title>Shibboleth Service Provider (SP)</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Shibboleth_Service_Provider_(SP)&amp;diff=4160"/>
				<updated>2017-06-25T12:26:19Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* Alapbeállítások */&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ő Shibboleth SP-t állítsunk üzembe. Fontos, hogy rengeteg olyan igény lehet, amely további speciális beállítások meglétét teszik szükségessé, ezeket ezen a lapon nem részletezzük, ilyen irányú tájékozódáshoz legbiztosabb forrás a [http://wiki.shibboleth.net http://wiki.shibboleth.net] lap.&lt;br /&gt;
&lt;br /&gt;
==Telepítés==&lt;br /&gt;
===Előkészületek===&lt;br /&gt;
A Shibboleth SP egy webszerver modul, így szükséges előfeltétel, hogy a gépünkön legyen egy webszerver telepítve, jelenleg Apache és IIS a biztosan támogatott webszerverek. Emellett szükséges, hogy a 443-as port a tűzfalon mindkét irányban engedélyezett legyen, ill. a hosztnév, amelyen a webszerver üzemel, be legyen jegyezve a DNS-be.&lt;br /&gt;
&lt;br /&gt;
===Letöltés és telepítés===&lt;br /&gt;
A legfrissebb változat letölthető [https://wiki.shibboleth.net/confluence/display/SHIB2/Installation https://wiki.shibboleth.net/confluence/display/SHIB2/Installation] címről. Célszerű valamilyen előre csomagolt változattal dolgozni, melyet az adott rendszer csomagkezelőjén keresztül egy mozdulattal feltelepíthetünk minden függőségével együtt.&lt;br /&gt;
&lt;br /&gt;
====Debian Squeeze====&lt;br /&gt;
A [http://wiki.debian.org/Teams/DebianShibboleth Debian Shibboleth] csapat által készített új verziók időről időre bekerülnek [http://backports.org backports.org] tárolóiba is, ezért stable Debiant futtató rendszereken javasolt ezt használni.&lt;br /&gt;
&lt;br /&gt;
A backports.org tárolójának beállításához adjuk hozzá a &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; fájlhoz a következő sort:&lt;br /&gt;
 deb http://backports.debian.org/debian-backports squeeze-backports main&lt;br /&gt;
&lt;br /&gt;
A csomagokat így telepíthetjük:&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude install -t squeeze-backports libapache2-mod-shib2&lt;br /&gt;
&lt;br /&gt;
Ez a Shibboleth webszerver modul függőségeit is telepíti. A Shibboleth használatba vételéhez engedélyezni kell a modult és újra kell indítani az Apache webszervert.&lt;br /&gt;
&lt;br /&gt;
====RPM alapú disztribúciók====&lt;br /&gt;
Shibboleth SP-ből RHEL/CENTOS rendszerekre egyből rendelkezésünkre áll bináris csomag, a fejlesztők ezen platformokon dolgoznak első körben. A telepítés előtt a teendőnk mindössze annyi, hogy a YUM forrásokhoz hozzá kell adni a Shibboleth SP repóját. Ehhez látogassunk el a [http://download.opensuse.org/repositories/security://shibboleth/ http://download.opensuse.org/repositories/security://shibboleth/] oldalra, majd a pontos verzió kiválasztása után a security:shibboleth.repo fájl tartalmát másoljuk be a /etc/yum/ &amp;lt;code&amp;gt;/etc/yum.repos.d/CentOS-Base.repo&amp;lt;/code&amp;gt; fájl aljára, majd &lt;br /&gt;
 yum install shibboleth&lt;br /&gt;
&lt;br /&gt;
'''Hibaelhárítás: Can't connect to listener process'''&lt;br /&gt;
&lt;br /&gt;
Ha a fenti hibába futunk bele, az azt jelenti, hogy a SE linux nem engedi kommunikálni a shibd és a httpd folyamatokat, ezért ezt külön engedélyezni kell. Ehhez készítsünk egy fájlt &amp;lt;code&amp;gt;shibd.te&amp;lt;/code&amp;gt; néven, melynek tartalma az alábbi legyen:&lt;br /&gt;
 module shibd 1.0;&lt;br /&gt;
 require {&lt;br /&gt;
        type var_run_t;&lt;br /&gt;
        type httpd_t;&lt;br /&gt;
        type initrc_t;&lt;br /&gt;
        class sock_file write;&lt;br /&gt;
        class unix_stream_socket connectto;&lt;br /&gt;
 } &lt;br /&gt;
 #============= httpd_t ============== &lt;br /&gt;
 allow httpd_t initrc_t:unix_stream_socket connectto;&lt;br /&gt;
 allow httpd_t var_run_t:sock_file write;&lt;br /&gt;
&lt;br /&gt;
Ezek után futtassuk le az alábbi parancsokat, melyek a fenti fájlt megfelelően lefordítják, és be is illesztik a létrehozott szabályunkat.&lt;br /&gt;
 # checkmodule -M -m -o shibd.mod shibd.te&lt;br /&gt;
 checkmodule:  loading policy configuration from shibd.te&lt;br /&gt;
 checkmodule:  policy configuration loaded&lt;br /&gt;
 checkmodule:  writing binary representation (version 6) to shibd.mod &lt;br /&gt;
 # semodule_package -o shibd.pp -m shibd.mod&lt;br /&gt;
 # semodule -i ./shibd.pp&lt;br /&gt;
&lt;br /&gt;
==Alapbeállítások==&lt;br /&gt;
A telepített Shibboleth SP konfigurációs állományait Linux alatt a /etc/shibboleth könyvtárban találjuk. Itt a &amp;lt;code&amp;gt;shibboleth2.xml&amp;lt;/code&amp;gt; és az &amp;lt;code&amp;gt;attribute-map.xml&amp;lt;/code&amp;gt; fájlokkal lesz dolgunk.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;shibboleth2.xml &amp;lt;/code&amp;gt;===&lt;br /&gt;
A telepítéskor alapértelmezetten érkező fájl nagyrészt megfelelő számunkra, az induláshoz csak az alább részletezett módosításokat kell megejtenünk. A változtatandó kódrészletek mind szerepelnek már az eredeti xml-ben is, így a feladat többnyire csak változtatásról, átírásról, bizonyos részek kommentjelek közül történő kiszabadításáról szól.&lt;br /&gt;
&lt;br /&gt;
* Választanunk kell egy entityID-t. Ez általában a védendő szolgáltatást futtató hosztnévből származik: &amp;lt;code&amp;gt;https://hosztnev/shibboleth&amp;lt;/code&amp;gt;, ezt az azonosítót beírni az &amp;lt;code &amp;gt;ApplicationDefaults&amp;lt;/code&amp;gt; részbe az alábbi módon (az entityID és a homeURL értékein kívül, ahová a hosztnév írandó be, alapértelmezés szerint mást nem szükséges változtatni): &lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ApplicationDefaults entityID=&amp;quot;https://hosztnév/shibboleth&amp;quot;&lt;br /&gt;
                         homeURL=&amp;quot;https://hosztnév/shib-error.html&amp;quot;&lt;br /&gt;
                         signing=&amp;quot;false&amp;quot; encryption=&amp;quot;false&amp;quot;&lt;br /&gt;
                         id=&amp;quot;default&amp;quot; policyId=&amp;quot;default&amp;quot;&lt;br /&gt;
                         REMOTE_USER=&amp;quot;eppn persistent-id targeted-id&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Meg kell adni, hogy egy Discovery Service-n keresztül kérjük meg a felhasználót, hogy adja meg, mely IdP-től érkezik, avagy csak IdP-t engedélyezünk számukra. Az első eset nyilvános szolgáltatások esetében indokolt, a második belső, pl. csak intézményi oldalak védésénél szükséges.&lt;br /&gt;
&lt;br /&gt;
** Discovery Service beállítása&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;SSO discoveryProtocol=&amp;quot;SAMLDS&amp;quot; discoveryURL=&amp;quot;https://discovery.eduid.hu&amp;quot;&amp;gt;&lt;br /&gt;
  SAML2 SAML1&lt;br /&gt;
 &amp;lt;/SSO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Fix IdP beállítása&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;SSO entityID=&amp;quot;https://idp.example.org/idp/shibboleth&amp;quot;&amp;gt;&lt;br /&gt;
  SAML2 SAML1&lt;br /&gt;
 &amp;lt;/SSO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Meg kell adnunk, hogy milyen metadata forrásból dolgozzon az SP, az alábbi példában az eduID-ban használatos beállítás látható (a hivatkozott href-metadata-signer-2011.crt fájl a [http://metadata.eduid.hu http://metadata.eduid.hu] címről töltendő le a shibboleth konfigurációs könyvtárába) :&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;MetadataProvider type=&amp;quot;XML&amp;quot; uri=&amp;quot;http://metadata.eduid.hu/current/href.xml&amp;quot;&lt;br /&gt;
              backingFilePath=&amp;quot;href.xml&amp;quot; reloadInterval=&amp;quot;7200&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;MetadataFilter type=&amp;quot;Signature&amp;quot; certificate=&amp;quot;href-metadata-signer-2011.crt&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Meg kell adni, hogy az SP mely kulcsot és tanúsítványt használja. Ehhez egy self-signed tanúsítványra lesz szükség, amely pl. az alábbi paranccsal generálható:&lt;br /&gt;
&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out sp.example.org.crt -keyout sp.example.org.key&lt;br /&gt;
&lt;br /&gt;
Az xml-ben módosítandó részlet pedig:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;CredentialResolver type=&amp;quot;File&amp;quot; key=&amp;quot;sp.example.org.key&amp;quot; certificate=&amp;quot;sp.example.org.crt&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Végül ugorjunk vissza a fájl első felére, szedjük ki a kommentjeleket a &amp;lt;code&amp;gt;RequestMapper&amp;lt;/code&amp;gt; rész körül, adjuk meg a kezelendő hosztokat és path-okat. Egy Shibboleth SP példány több, az adott webszerver által kezelt hosztot is kezelni tud, és egy-egy hoszton belül több útvonalat is, ezeket itt meg kell adni. Alább egy példa:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;RequestMapper type=&amp;quot;Native&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;RequestMap applicationId=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Host name=&amp;quot;hosztnév&amp;quot; authType=&amp;quot;shibboleth&amp;quot; requireSession=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;Path name=&amp;quot;secure&amp;quot; authType=&amp;quot;shibboleth&amp;quot; requireSession=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/Host&amp;gt;&lt;br /&gt;
        &amp;lt;/RequestMap&amp;gt;&lt;br /&gt;
    &amp;lt;/RequestMapper&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A péda szerint a hosztnév alatti tartalom nem kíván meg shibbolethes azonosítást, kivéve a &amp;lt;code&amp;gt;/secure&amp;lt;/code&amp;gt; location. Ha valahol shibbolethes azonosítást kívánunk használni, azt ezen kívül az adott hoszt webszerver konfigjában is jeleznünk kell. Apache-nál az alábbi módon.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /secure&amp;gt;&lt;br /&gt;
  AuthType shibboleth&lt;br /&gt;
  require valid-user&lt;br /&gt;
  ShibUseHeaders On&lt;br /&gt;
  ShibRequireSession On&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
További részletek az authorizációval kapcsolatban: https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPhtaccess&lt;br /&gt;
&lt;br /&gt;
== SP adatainak közzététele ==&lt;br /&gt;
A fenti beállítások után egy működő Shibboleth SP-t kapunk eredményül, ugyanakkor ténylegesen csak akkor fog tudni együttműködni a föderációban résztvevő IdP-kkel, ha az SP metaadatait közzétesszük, így azt az IdPk megismerhetik. Ehhez az eduID föderációban a frissen beállított SP adatait a [[Resource_Registry|Resource Registry]] nevű webes adminisztrációs oldalon kell felvinni egy varázsló segítségével, majd a jóváhagyás után várni pár órát, amíg a változások érvénybe lépnek. Ha nincs az intézményi entitások menedzseléséhez jogod ('Access denied'), akkor konzultálj az intézményed eduID kapcsolattartójával, hogy az SP-det szeretnéd a föderációba regisztrálni. Segítséget nyújt az alábbi lista: https://rr.eduid.hu/list&lt;br /&gt;
&lt;br /&gt;
== HEXAA integráció ==&lt;br /&gt;
&lt;br /&gt;
Ha az eduID-ban használatos külső attribútum forrást is szeretnénk az SP-nkhez illeszteni, akkor a shibboleth2.xml fileban a következő példán keresztül lehet megtenni.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;AttributeResolver type=&amp;quot;Chaining&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeResolver type=&amp;quot;Query&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeResolver type=&amp;quot;SimpleAggregation&amp;quot; attributeId=&amp;quot;eppn&amp;quot; format=&amp;quot;urn:oid:1.3.6.1.4.1.5923.1.1.1.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Entity&amp;gt;https://hexaa.eduid.hu/hexaa&amp;lt;/Entity&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute Name=&amp;quot;urn:oid:1.3.6.1.4.1.5923.1.1.1.7&amp;quot; NameFormat=&amp;quot;urn:oasis:names:tc:SAML:2.0:attrname-format:uri&amp;quot; FriendlyName=&amp;quot;eduPersonEntitlement&amp;quot;/&amp;gt;  &lt;br /&gt;
    &amp;lt;/AttributeResolver&amp;gt;&lt;br /&gt;
  &amp;lt;/AttributeResolver&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kapcsolódó lapok ==&lt;br /&gt;
* [[FastCGI | Shibboleth 2 SP telepítése FastCGI alapú webszerver környezetben]]&lt;br /&gt;
&lt;br /&gt;
[[Category: AAI]] [[Category: Shibboleth SP]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=HREF_metadata_specifik%C3%A1ci%C3%B3&amp;diff=4153</id>
		<title>HREF metadata specifikáció</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=HREF_metadata_specifik%C3%A1ci%C3%B3&amp;diff=4153"/>
				<updated>2017-06-08T10:16:08Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* Aláírási folyamat */ rr migrálás rr.eduid.hu-ra&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A föderációs metaadat célja, hogy a föderációban részt vevő intézmények illetve entitások technikai, bizalmi és adminisztratív adatait egy helyre gyűjtse. A metaadatok formátuma megfelel a SAML2 metaadat szabványnak.&lt;br /&gt;
&lt;br /&gt;
= Biztonsági megfontolások =&lt;br /&gt;
Mivel a metadata tartalmazza a föderációban részt vevő tagok és komponensek technikai információit, ezért a benne tárolt információkkal kapcsolatban figyelembe kell venni a következő biztonsági megfontolásokat:&lt;br /&gt;
&lt;br /&gt;
* Téves vagy kompromittálódott adatok eltávolítása esetén a sérülékenységi ablak megegyezik a metadata gyorstárazhatósági (&amp;lt;code&amp;gt;cacheDuration&amp;lt;/code&amp;gt;) idejével, '''amennyiben a támadó nem képes blokkolni a központi metaadatok elérhetőségét (DOS)'''&lt;br /&gt;
* Amennyiben a támadó képes blokkolni a központi metaadatok elérhetőségét, a sérülékenységi ablak a legutolsó letöltött metadata állomány érvényességéig (&amp;lt;code&amp;gt;validUntil&amp;lt;/code&amp;gt; paraméterében meghatározott ideig) tart.&lt;br /&gt;
* Amennyiben a metaadatok érvényességi ideje lejár, az entitás nem képes azonosítani a többi föderációs résztvevőt, ezért nem tud föderációs szolgáltatást (pl. IdP esetén azonosítási szolgáltatást) nyújtani.&lt;br /&gt;
&lt;br /&gt;
= Metaadatban tárolt információk =&lt;br /&gt;
* Bizalom a metaadatban&lt;br /&gt;
** a metaadat integritásvédelmét és hitelességét egy digitális aláírás biztosítja.&lt;br /&gt;
** a metaadat visszavonhatóságát a lejárati idő (&amp;lt;code&amp;gt;validUntil&amp;lt;/code&amp;gt;) biztosítja, ami jelenleg 3 nap.&lt;br /&gt;
** az egyes rendszerek gyorstárazhatják a metaadatot, de legalább naponta egyszer kötelesek a hiteles állományt frissíteni.&lt;br /&gt;
** az aláírási procedúrát a [[#Metaadat_aláírásának_módja]] fejezet írja le.&lt;br /&gt;
* Tanúsítványok&lt;br /&gt;
** kötelező legalább 1024 bites kulcspárt használni&lt;br /&gt;
** az entitások által használt tanúsítvánnyal kapcsolatban a föderáció nem tesz különleges megkötést, sőt: ajánlott hosszú lejáratú self-signed tanúsítványok használata&lt;br /&gt;
* További információk&lt;br /&gt;
** minden szöveges mezőt legalább két nyelven: magyarul és angolul ki kell tölteni&lt;br /&gt;
** kötelezően kitöltendőek az intézményi, adminisztratív információk (&amp;lt;code&amp;gt;Organization&amp;lt;/code&amp;gt; illetve &amp;lt;code&amp;gt;ContactPerson&amp;lt;/code&amp;gt; elemek)&lt;br /&gt;
** ajánlott megadni egy helpdesk URL-r, ahova hiba esetén a felhasználók fordulhatnak (&amp;lt;code&amp;gt;errorURL&amp;lt;/code&amp;gt; attribútum)&lt;br /&gt;
** SP-k esetén további kötelező elemek&lt;br /&gt;
*** &amp;lt;code&amp;gt;AttributeConsumingService&amp;lt;/code&amp;gt;, ami megadja a kért attribútumokat&lt;br /&gt;
**** &amp;lt;code&amp;gt;RequestedAttributes&amp;lt;/code&amp;gt; - itt az attribútum informális neve is szerepeljen&lt;br /&gt;
**** &amp;lt;code&amp;gt;ServiceName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ServiceDescription&amp;lt;/code&amp;gt; az SP szolgáltatás neve és leírása&lt;br /&gt;
*** a szolgáltatás elérhetősége, amin a szolgáltatás bemutatkozik (extension)&lt;br /&gt;
*** adatkezelési szabályzatra mutató URL (extension)&lt;br /&gt;
** IdP-k esetén&lt;br /&gt;
*** a scope csak az adott intézmény kezelésében levő domain név lehet (Shibboleth extension)&lt;br /&gt;
** lehetőség van további adatok megadására is&lt;br /&gt;
*** logó&lt;br /&gt;
*** gps koordináták, IP cím tartomány&lt;br /&gt;
*** különböző tagek, például a szolgáltatás publikus-e, vagy épp bevezetés alatt áll-e&lt;br /&gt;
&lt;br /&gt;
== Metaadat kiterjesztések használata ==&lt;br /&gt;
Ezen kiegészítő adatok tárolására az internet2 szabványtervezetet készít, ennek a sémának a jelenlegi verziója megtalálható [http://wiki.oasis-open.org/security/SAML2MetadataUI itt].&lt;br /&gt;
&lt;br /&gt;
A kiegészítő séma névtere: &amp;lt;code&amp;gt;urn:oasis:names:tc:SAML:2.0:metadata:ui&amp;lt;/code&amp;gt;. Az alábbi táblázatban ezen névtérben definiált legfontosabb elemeket foglaljuk össze:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! element név&lt;br /&gt;
! szemantika&lt;br /&gt;
! értékekre vonatkozó megkötések&lt;br /&gt;
|-&lt;br /&gt;
| GeolocationHint&lt;br /&gt;
| szélesség és hosszúság érték, a + előjel az északi szélességet illetve keleti hosszúságot jelöli&lt;br /&gt;
| 47.47359,19.052891&lt;br /&gt;
|-&lt;br /&gt;
| InformationURL&lt;br /&gt;
| az entitásról további információkat (pl. helpdesk) szolgáltató oldal.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| PrivacyStatementURL&lt;br /&gt;
| Az SP adatvédelmi nyilatkozátnak elérhetősége (URL)&lt;br /&gt;
| Engedélyezett formátumok: HTML, PDF&lt;br /&gt;
|-&lt;br /&gt;
| Logo&lt;br /&gt;
| Az IdP/SP logójának elérhetősége&lt;br /&gt;
| Formátummal kapcsolatban lásd [[#Logo]]&lt;br /&gt;
|-&lt;br /&gt;
| IPHint&lt;br /&gt;
| (Csak az IdP-knél) az intézmény hálózati tartománya(i). IdP felderítés esetén előválasztás lehetséges ennek alapján.&lt;br /&gt;
| CIDR, több érték is megadható&lt;br /&gt;
|-&lt;br /&gt;
| DomainHint&lt;br /&gt;
| (Csak az IdP-knél) az intézmény által felügyelt domain név. IdP felderítés esetén előválasztás lehetséges ennek alapján.&lt;br /&gt;
| Több érték is megadható &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Logo ===&lt;br /&gt;
* formátum: URL egy transzparens hátterű PNG, vagy transzparens hátterű GIF képre&lt;br /&gt;
* méretezés&lt;br /&gt;
** javasolt oldalarány 1:1 vagy 16:9&lt;br /&gt;
** maximális méret 200x200px&lt;br /&gt;
** ajánlott egy 16x16px-es verziót is megadni &lt;br /&gt;
* attribútumok&lt;br /&gt;
** &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;: lokalizációs információ&lt;br /&gt;
** &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt;: opcionális link&lt;br /&gt;
** &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt;: opcionális magasság érték pixelben&lt;br /&gt;
** &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt;: opcionális szélesség érték pixelben&lt;br /&gt;
&lt;br /&gt;
== Egy IdP példa ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;EntityDescriptor entityID=&amp;quot;https://idp.niif.hu/shibboleth&amp;quot;&lt;br /&gt;
  xmlns:mdui=&amp;quot;urn:oasis:names:tc:SAML:2.0:metadata:ui&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;IDPSSODescriptor protocolSupportEnumeration=&amp;quot;urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol urn:mace:shibboleth:1.0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Extensions&amp;gt;&lt;br /&gt;
    &amp;lt;shibmd:Scope&amp;gt;niif.hu&amp;lt;/shibmd:Scope&amp;gt;&lt;br /&gt;
    &amp;lt;mdui:DiscoHints xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;mdui:GeolocationHint&amp;gt;47.518356,19.055437&amp;lt;/mdui:GeolocationHint&amp;gt;&lt;br /&gt;
      &amp;lt;mdui:DomainHint&amp;gt;niif.hu&amp;lt;/mdui:DomainHint&amp;gt;&lt;br /&gt;
      &amp;lt;mdui:DomainHint&amp;gt;iif.hu&amp;lt;/mdui:DomainHint&amp;gt;&lt;br /&gt;
    &amp;lt;/mdui:DiscoHints&amp;gt;&lt;br /&gt;
   &amp;lt;/Extensions&amp;gt;&lt;br /&gt;
   &amp;lt;KeyDescriptor use=&amp;quot;signing&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
     &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
      &amp;lt;ds:X509Certificate&amp;gt;...&amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
     &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
    &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
   &amp;lt;/KeyDescriptor&amp;gt;&lt;br /&gt;
   &amp;lt;!-- endpoints, nameidformats --&amp;gt;&lt;br /&gt;
   &amp;lt;/IDPSSODescriptor&amp;gt;&lt;br /&gt;
  &amp;lt;ContactPerson contactType=&amp;quot;technical&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SurName&amp;gt;NIIF AAI&amp;lt;/SurName&amp;gt;&lt;br /&gt;
   &amp;lt;EmailAddress&amp;gt;aai@niif.hu&amp;lt;/EmailAddress&amp;gt;&lt;br /&gt;
  &amp;lt;/ContactPerson&amp;gt;&lt;br /&gt;
  &amp;lt;ContactPerson contactType=&amp;quot;support&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SurName&amp;gt;NIIF AAI&amp;lt;/SurName&amp;gt;&lt;br /&gt;
   &amp;lt;EmailAddress&amp;gt;aai@niif.hu&amp;lt;/EmailAddress&amp;gt;&lt;br /&gt;
  &amp;lt;/ContactPerson&amp;gt;&lt;br /&gt;
  &amp;lt;ContactPerson contactType=&amp;quot;administrative&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SurName&amp;gt;NIIF AAI&amp;lt;/SurName&amp;gt;&lt;br /&gt;
   &amp;lt;EmailAddress&amp;gt;aai@niif.hu&amp;lt;/EmailAddress&amp;gt;&lt;br /&gt;
  &amp;lt;/ContactPerson&amp;gt;&lt;br /&gt;
 &amp;lt;/EntityDescriptor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Egy SP példa ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;EntityDescriptor entityID=&amp;quot;https://rr.aai.niif.hu/shibboleth&amp;quot;&lt;br /&gt;
  xmlns:mdui=&amp;quot;urn:oasis:names:tc:SAML:2.0:metadata:ui&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;SPSSODescriptor protocolSupportEnumeration=&amp;quot;urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Extensions&amp;gt;&lt;br /&gt;
    &amp;lt;mdui:UIInfo xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;mdui:PrivacyStatementURL&amp;gt;https://rr.aai.niif.hu/privacy-policy&amp;lt;/mdui:PrivacyStatementURL&amp;gt;&lt;br /&gt;
      &amp;lt;mdui:InformationURL&amp;gt;https://rr.aai.niif.hu/about&amp;lt;/mdui:InformationURL&amp;gt;&lt;br /&gt;
    &amp;lt;/mdui:UIInfo&amp;gt;&lt;br /&gt;
  &amp;lt;/Extensions&amp;gt;&lt;br /&gt;
  &amp;lt;KeyDescriptor use=&amp;quot;signing&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
    &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
     &amp;lt;ds:X509Certificate&amp;gt;...&amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
    &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
   &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
  &amp;lt;/KeyDescriptor&amp;gt;&lt;br /&gt;
  &amp;lt;KeyDescriptor use=&amp;quot;encryption&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
    &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
     &amp;lt;ds:X509Certificate&amp;gt;...&amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
    &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
   &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
  &amp;lt;/KeyDescriptor&amp;gt;&lt;br /&gt;
  &amp;lt;!-- endpoints --&amp;gt;&lt;br /&gt;
  &amp;lt;AttributeConsumingService index=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;ServiceName xml:lang=&amp;quot;hu&amp;quot;&amp;gt;HREF Resource Registry&amp;lt;/ServiceName&amp;gt;&lt;br /&gt;
   &amp;lt;ServiceName xml:lang=&amp;quot;en&amp;quot;&amp;gt;HREF Resource Registry&amp;lt;/ServiceName&amp;gt;&lt;br /&gt;
   &amp;lt;ServiceDescription xml:lang=&amp;quot;hu&amp;quot;&amp;gt;Resource Registry - a föderáció adminisztrációs alkalmazása http://rr.aai.niif.hu/&amp;lt;/ServiceDescription&amp;gt;&lt;br /&gt;
   &amp;lt;ServiceDescription xml:lang=&amp;quot;en&amp;quot;&amp;gt;Resource Registry - federation administration tool http://rr.aai.niif.hu/&amp;lt;/ServiceDescription&amp;gt;&lt;br /&gt;
   &amp;lt;RequestedAttribute FriendlyName=&amp;quot;mail&amp;quot; Name=&amp;quot;urn:oid:0.9.2342.19200300.100.1.3&amp;quot; isRequired=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;RequestedAttribute FriendlyName=&amp;quot;surname&amp;quot; Name=&amp;quot;urn:oid:2.5.4.4&amp;quot; isRequired=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;RequestedAttribute FriendlyName=&amp;quot;givenName&amp;quot; Name=&amp;quot;urn:oid:2.5.4.42&amp;quot; isRequired=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;RequestedAttribute FriendlyName=&amp;quot;eduPersonPrincipalName&amp;quot; Name=&amp;quot;urn:oid:1.3.6.1.4.1.5923.1.1.1.6&amp;quot; isRequired=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;RequestedAttribute FriendlyName=&amp;quot;schacHomeOrganizationType&amp;quot; Name=&amp;quot;urn:oid:1.3.6.1.4.1.25178.1.2.10&amp;quot; isRequired=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;RequestedAttribute FriendlyName=&amp;quot;eduPersonScopedAffiliation&amp;quot; Name=&amp;quot;urn:oid:1.3.6.1.4.1.5923.1.1.1.9&amp;quot; isRequired=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AttributeConsumingService&amp;gt;&lt;br /&gt;
 &amp;lt;/SPSSODescriptor&amp;gt;&lt;br /&gt;
 &amp;lt;Organization&amp;gt;&lt;br /&gt;
  &amp;lt;OrganizationName xml:lang=&amp;quot;hu&amp;quot;&amp;gt;NIIF - Nemzeti Információs Infrastruktúra Fejlesztési Intézet&amp;lt;/OrganizationName&amp;gt;&lt;br /&gt;
  &amp;lt;OrganizationName xml:lang=&amp;quot;en&amp;quot;&amp;gt;NIIF Institute - National Information Infrastructure Development&amp;lt;/OrganizationName&amp;gt;&lt;br /&gt;
  &amp;lt;OrganizationDisplayName xml:lang=&amp;quot;hu&amp;quot;&amp;gt;NIIF - Nemzeti Információs Infrastruktúra Fejlesztési Intézet&amp;lt;/OrganizationDisplayName&amp;gt;&lt;br /&gt;
  &amp;lt;OrganizationDisplayName xml:lang=&amp;quot;en&amp;quot;&amp;gt;NIIF Institute - National Information Infrastructure Development&amp;lt;/OrganizationDisplayName&amp;gt;&lt;br /&gt;
  &amp;lt;OrganizationURL xml:lang=&amp;quot;hu&amp;quot;&amp;gt;http://www.niif.hu&amp;lt;/OrganizationURL&amp;gt;&lt;br /&gt;
  &amp;lt;OrganizationURL xml:lang=&amp;quot;en&amp;quot;&amp;gt;http://www.niif.hu/en&amp;lt;/OrganizationURL&amp;gt;&lt;br /&gt;
 &amp;lt;/Organization&amp;gt;&lt;br /&gt;
 &amp;lt;ContactPerson contactType=&amp;quot;administrative&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SurName&amp;gt;NIIF AAI&amp;lt;/SurName&amp;gt;&lt;br /&gt;
  &amp;lt;EmailAddress&amp;gt;aai@niif.hu&amp;lt;/EmailAddress&amp;gt;&lt;br /&gt;
 &amp;lt;/ContactPerson&amp;gt;&lt;br /&gt;
 &amp;lt;ContactPerson contactType=&amp;quot;technical&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SurName&amp;gt;NIIF AAI&amp;lt;/SurName&amp;gt;&lt;br /&gt;
  &amp;lt;EmailAddress&amp;gt;aai@niif.hu&amp;lt;/EmailAddress&amp;gt;&lt;br /&gt;
 &amp;lt;/ContactPerson&amp;gt;&lt;br /&gt;
 &amp;lt;ContactPerson contactType=&amp;quot;support&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SurName&amp;gt;NIIF AAI&amp;lt;/SurName&amp;gt;&lt;br /&gt;
  &amp;lt;EmailAddress&amp;gt;aai@niif.hu&amp;lt;/EmailAddress&amp;gt;&lt;br /&gt;
 &amp;lt;/ContactPerson&amp;gt;&lt;br /&gt;
 &amp;lt;/EntityDescriptor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Metaadat aláírásának módja =&lt;br /&gt;
== Aláíró kulcs és tanúsítványok ==&lt;br /&gt;
* Az aláíró kulcsot smart cardon, pin kóddal védve tároljuk.&lt;br /&gt;
* Az aláírás on-line történik, a kártya pin kódját az aláíró szoftver indításakor az AAI adminisztrátor adja meg, a jelszó nem kerül tárolásra az aláírást végző rendszeren (sem másutt).&lt;br /&gt;
&lt;br /&gt;
== Aláírási folyamat ==&lt;br /&gt;
* Aláíratlan metaadat frissítése&lt;br /&gt;
** az aláíratlan metaadat a https://rr.eduid.hu oldalról ütemezetten (5 perc) letöltésre kerül. A letöltés során az rr.eduid.hu tanúsítványa explicit módon ellenőrzésre kerül.&lt;br /&gt;
** a letöltött metaadat formai ellenőrzése&lt;br /&gt;
** az ellenőrzött entitások egy verziókövető rendszerbe kerülnek, az esetleges változásról e-mail értesítés készül ([https://listserv.niif.hu/mailman/listinfo/href-metadata-changes href-metadata-changes] nevű levelezőlistára)&lt;br /&gt;
* Az aláíró szoftver rendszeresen (1-2 percenként) ellenőrzi a metaadatot a verziókövető rendszerben, és változás esetén új aláírt metaadatokat készít&lt;br /&gt;
** amennyiben nincs változás, fix időközönként (naponta legalább egyszer) új aláírt állományok készülnek&lt;br /&gt;
&lt;br /&gt;
== Aláírás ellenőrzése explicit tanúsítvánnyal ==&lt;br /&gt;
A föderáció entitásai a föderációs metaadat hitelességéről a digitális aláírás ellenőrzésével győződhetnek meg. &lt;br /&gt;
* Az explicit ellenőrzés esetén a &amp;lt;code&amp;gt;http://metadata.eduid.hu/current/&amp;lt;/code&amp;gt; URL-ről kell letölteni a metadata fájlokat.&lt;br /&gt;
* A tanúsítvány a https://metadata.eduid.hu oldalról érhető el.&lt;br /&gt;
** DN-je &amp;lt;code&amp;gt;EMAILADDRESS=aai@niif.hu, CN=Metadata Signer, OU=eduID Federation Operator, O=NIIF Institute, C=HU&amp;lt;/code&amp;gt;&lt;br /&gt;
** SHA-1 &amp;lt;code&amp;gt;FE:AE:0B:E8:FB:59:ED:F7:CB:7F:69:DF:19:4F:8B:6D:C7:F6:96:66&amp;lt;/code&amp;gt;&lt;br /&gt;
* Ajánlott a tanúsítvány lejárati idejét figyelmen kívül hagyni.&lt;br /&gt;
* A tanúsítványcsere koordinálása out-of-band módszerrel történik (a &amp;lt;code&amp;gt;href-tech&amp;lt;/code&amp;gt; levelezőlista segítségével).&lt;br /&gt;
&lt;br /&gt;
== Aláíró kulcs cseréje ==&lt;br /&gt;
* A föderációs entitások számára ajánlott a tanúsítvány lejárati idejének figyelmen kívül hagyása.&lt;br /&gt;
* A kulccsere koordinálása a &amp;lt;code&amp;gt;href-tech&amp;lt;/code&amp;gt; levelezőlistán keresztül történik.&lt;br /&gt;
* Kulcs visszavonásakor (kompromittálódás gyanúja esetén) a régi aláíró kulcs azonnal eltávolításra kerül, kontrollált kulcscsere esetén az aláírás párhuzamosan történik a régi és az új kulccsal.&lt;br /&gt;
&lt;br /&gt;
= Metaadat elérése =&lt;br /&gt;
A HREF föderációban többféle metaadat-forrás áll rendelkezésre, melyeket a http://metadata.eduid.hu -ról lehet elérni. Fontos megemlíteni, hogy a metadata letöltésénél nem indokolt az SSL használata, ezért - amennyiben lehetséges -, érdemes a metadata URL-eket nem titkosított HTTP protokoll segítségével letölteni.&lt;br /&gt;
&lt;br /&gt;
A metadata elérés URL-je a következő: http://metadata.eduid.hu/${alairo_kulcs_kibocsatas_eve}/${metadata_forras}.xml. A metadata források jelenleg a következők lehetnek:&lt;br /&gt;
* &amp;lt;code&amp;gt;href.xml&amp;lt;/code&amp;gt;: az éles föderációban részt vevő, és a föderáció kritériumait teljesítő entitások&lt;br /&gt;
* &amp;lt;code&amp;gt;href-test.xml&amp;lt;/code&amp;gt;: a HREF föderáció tesztrendszerei. Bármely, föderációban részt vevő intézmény tehet be teszt-entitást ebbe a halmazba, ezért ezen metaadat-forrás csak tesztelési célra használható.&lt;br /&gt;
* &amp;lt;code&amp;gt;href-edugain.xml&amp;lt;/code&amp;gt;: a HREF föderációból az [http://edugain.org eduGAIN] konföderációba kiajánlott entitások. Ide csak olyan entitások kerülhetnek be, melyek megfelelnek a föderációs kritériumoknak, és képesek az [http://edugain.org eduGAIN] konföderációval való együttműködésre. Ezen entitások be kell hogy olvassák az eduGAIN metaadatot is.&lt;br /&gt;
* &amp;lt;code&amp;gt;edugain.xml&amp;lt;/code&amp;gt;: az [http://edugain.org eduGAIN] konföderáció metaadata, a HREF aláíró kulccsal aláírva.&lt;br /&gt;
* intézmény-specifikus metaadat fájlok, melyeket a föderáció kérésre biztosítja, tetszőleges entitások halmazba gyűjtésével.&lt;br /&gt;
&lt;br /&gt;
== MDX-alapú elérés ==&lt;br /&gt;
Az MDX, azaz MetaDataeXchange protokolt erőforrás optimalizálás céljából találták ki, hogy ne kelljen egyes IdP-knek és SP-knek indokolatlanul nagy XML fájlokat feldolgozniuk és tárolniuk, mikor a felhasználóiknak jó eséllyel a fájlokban tárolt entitások töredékére van csak szükségük. Ezért az egyes entitásokat be lehet úgy állítani, hogy csak akkor töltsék le az adott entitás metaadatát, mikor arra szükség van (az első letöltés után természetesen helyben tároldóik a metaadat a &amp;lt;code&amp;gt;cacheDuration&amp;lt;/code&amp;gt;-ben megadott ideig). &lt;br /&gt;
&lt;br /&gt;
A HREF föderációban teszt jelleggel működik és elérhető MDX-kiszolgáló: &amp;lt;code&amp;gt;http://mdx.eduid.hu&amp;lt;/code&amp;gt;. A megfelelő beállításokhoz [[MDX|itt]] érhető el segédlet.&lt;br /&gt;
&lt;br /&gt;
Az MDX kiszolgáló eltérő (nem fizikai) kulcsot és tanúsítványt használ. Ennek SHA-1 lenyomata:  &amp;lt;code&amp;gt;91:81:AD:2B:F1:C1:4E:47:93:A2:9D:49:34:B7:77:62:4F:2F:98:43&amp;lt;/code&amp;gt;. Jelenleg (2015. október) az MDX elérés még csak teszt jelleggel működik, az élesüzemre váltáskor a kulcs és a tanúsítvány változni fog. A jelenlegi tanúsítvány innen tölthető le: &amp;lt;code&amp;gt;http://metadata.eduid.hu/current/mdx-test-signer-2015.crt&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Shibboleth_Service_Provider_(SP)&amp;diff=4144</id>
		<title>Shibboleth Service Provider (SP)</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Shibboleth_Service_Provider_(SP)&amp;diff=4144"/>
				<updated>2017-05-22T15:56:32Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.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ő Shibboleth SP-t állítsunk üzembe. Fontos, hogy rengeteg olyan igény lehet, amely további speciális beállítások meglétét teszik szükségessé, ezeket ezen a lapon nem részletezzük, ilyen irányú tájékozódáshoz legbiztosabb forrás a [http://wiki.shibboleth.net http://wiki.shibboleth.net] lap.&lt;br /&gt;
&lt;br /&gt;
==Telepítés==&lt;br /&gt;
===Előkészületek===&lt;br /&gt;
A Shibboleth SP egy webszerver modul, így szükséges előfeltétel, hogy a gépünkön legyen egy webszerver telepítve, jelenleg Apache és IIS a biztosan támogatott webszerverek. Emellett szükséges, hogy a 443-as port a tűzfalon mindkét irányban engedélyezett legyen, ill. a hosztnév, amelyen a webszerver üzemel, be legyen jegyezve a DNS-be.&lt;br /&gt;
&lt;br /&gt;
===Letöltés és telepítés===&lt;br /&gt;
A legfrissebb változat letölthető [https://wiki.shibboleth.net/confluence/display/SHIB2/Installation https://wiki.shibboleth.net/confluence/display/SHIB2/Installation] címről. Célszerű valamilyen előre csomagolt változattal dolgozni, melyet az adott rendszer csomagkezelőjén keresztül egy mozdulattal feltelepíthetünk minden függőségével együtt.&lt;br /&gt;
&lt;br /&gt;
====Debian Squeeze====&lt;br /&gt;
A [http://wiki.debian.org/Teams/DebianShibboleth Debian Shibboleth] csapat által készített új verziók időről időre bekerülnek [http://backports.org backports.org] tárolóiba is, ezért stable Debiant futtató rendszereken javasolt ezt használni.&lt;br /&gt;
&lt;br /&gt;
A backports.org tárolójának beállításához adjuk hozzá a &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; fájlhoz a következő sort:&lt;br /&gt;
 deb http://backports.debian.org/debian-backports squeeze-backports main&lt;br /&gt;
&lt;br /&gt;
A csomagokat így telepíthetjük:&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude install -t squeeze-backports libapache2-mod-shib2&lt;br /&gt;
&lt;br /&gt;
Ez a Shibboleth webszerver modul függőségeit is telepíti. A Shibboleth használatba vételéhez engedélyezni kell a modult és újra kell indítani az Apache webszervert.&lt;br /&gt;
&lt;br /&gt;
====RPM alapú disztribúciók====&lt;br /&gt;
Shibboleth SP-ből RHEL/CENTOS rendszerekre egyből rendelkezésünkre áll bináris csomag, a fejlesztők ezen platformokon dolgoznak első körben. A telepítés előtt a teendőnk mindössze annyi, hogy a YUM forrásokhoz hozzá kell adni a Shibboleth SP repóját. Ehhez látogassunk el a [http://download.opensuse.org/repositories/security://shibboleth/ http://download.opensuse.org/repositories/security://shibboleth/] oldalra, majd a pontos verzió kiválasztása után a security:shibboleth.repo fájl tartalmát másoljuk be a /etc/yum/ &amp;lt;code&amp;gt;/etc/yum.repos.d/CentOS-Base.repo&amp;lt;/code&amp;gt; fájl aljára, majd &lt;br /&gt;
 yum install shibboleth&lt;br /&gt;
&lt;br /&gt;
'''Hibaelhárítás: Can't connect to listener process'''&lt;br /&gt;
&lt;br /&gt;
Ha a fenti hibába futunk bele, az azt jelenti, hogy a SE linux nem engedi kommunikálni a shibd és a httpd folyamatokat, ezért ezt külön engedélyezni kell. Ehhez készítsünk egy fájlt &amp;lt;code&amp;gt;shibd.te&amp;lt;/code&amp;gt; néven, melynek tartalma az alábbi legyen:&lt;br /&gt;
 module shibd 1.0;&lt;br /&gt;
 require {&lt;br /&gt;
        type var_run_t;&lt;br /&gt;
        type httpd_t;&lt;br /&gt;
        type initrc_t;&lt;br /&gt;
        class sock_file write;&lt;br /&gt;
        class unix_stream_socket connectto;&lt;br /&gt;
 } &lt;br /&gt;
 #============= httpd_t ============== &lt;br /&gt;
 allow httpd_t initrc_t:unix_stream_socket connectto;&lt;br /&gt;
 allow httpd_t var_run_t:sock_file write;&lt;br /&gt;
&lt;br /&gt;
Ezek után futtassuk le az alábbi parancsokat, melyek a fenti fájlt megfelelően lefordítják, és be is illesztik a létrehozott szabályunkat.&lt;br /&gt;
 # checkmodule -M -m -o shibd.mod shibd.te&lt;br /&gt;
 checkmodule:  loading policy configuration from shibd.te&lt;br /&gt;
 checkmodule:  policy configuration loaded&lt;br /&gt;
 checkmodule:  writing binary representation (version 6) to shibd.mod &lt;br /&gt;
 # semodule_package -o shibd.pp -m shibd.mod&lt;br /&gt;
 # semodule -i ./shibd.pp&lt;br /&gt;
&lt;br /&gt;
==Alapbeállítások==&lt;br /&gt;
A telepített Shibboleth SP konfigurációs állományait Linux alatt a /etc/shibboleth könyvtárban találjuk. Itt a &amp;lt;code&amp;gt;shibboleth2.xml&amp;lt;/code&amp;gt; és az &amp;lt;code&amp;gt;attribute-map.xml&amp;lt;/code&amp;gt; fájlokkal lesz dolgunk.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;shibboleth2.xml &amp;lt;/code&amp;gt;===&lt;br /&gt;
A telepítéskor alapértelmezetten érkező fájl nagyrészt megfelelő számunkra, az induláshoz csak az alább részletezett módosításokat kell megejtenünk. A változtatandó kódrészletek mind szerepelnek már az eredeti xml-ben is, így a feladat többnyire csak változtatásról, átírásról, bizonyos részek kommentjelek közül történő kiszabadításáról szól.&lt;br /&gt;
&lt;br /&gt;
* Választanunk kell egy entityID-t. Ez általában a védendő szolgáltatást futtató hosztnévből származik: &amp;lt;code&amp;gt;https://hosztnev/shibboleth&amp;lt;/code&amp;gt;, ezt az azonosítót beírni az &amp;lt;code &amp;gt;ApplicationDefaults&amp;lt;/code&amp;gt; részbe az alábbi módon (az entityID és a homeURL értékein kívül, ahová a hosztnév írandó be, alapértelmezés szerint mást nem szükséges változtatni): &lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ApplicationDefaults entityID=&amp;quot;https://hosztnév/shibboleth&amp;quot;&lt;br /&gt;
                         homeURL=&amp;quot;https://hosztnév/shib-error.html&amp;quot;&lt;br /&gt;
                         signing=&amp;quot;false&amp;quot; encryption=&amp;quot;false&amp;quot;&lt;br /&gt;
                         id=&amp;quot;default&amp;quot; policyId=&amp;quot;default&amp;quot;&lt;br /&gt;
                         REMOTE_USER=&amp;quot;eppn persistent-id targeted-id&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Meg kell adni, hogy egy Discovery Service-n keresztül kérjük meg a felhasználót, hogy adja meg, mely IdP-től érkezik, avagy csak IdP-t engedélyezünk számukra. Az első eset nyilvános szolgáltatások esetében indokolt, a második belső, pl. csak intézményi oldalak védésénél szükséges.&lt;br /&gt;
&lt;br /&gt;
** Discovery Service beállítása&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;SSO discoveryProtocol=&amp;quot;SAMLDS&amp;quot; discoveryURL=&amp;quot;https://discovery.eduid.hu&amp;quot;&amp;gt;&lt;br /&gt;
  SAML2 SAML1&lt;br /&gt;
 &amp;lt;/SSO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Fix IdP beállítása&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;SSO entityID=&amp;quot;https://idp.example.org/idp/shibboleth&amp;quot;&amp;gt;&lt;br /&gt;
  SAML2 SAML1&lt;br /&gt;
 &amp;lt;/SSO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Meg kell adnunk, hogy milyen metadata forrásból dolgozzon az SP, az alábbi példában az eduID-ban használatos beállítás látható (a hivatkozott href-metadata-signer-2011.crt fájl a [http://metadata.eduid.hu http://metadata.eduid.hu] címről töltendő le a shibboleth konfigurációs könyvtárába) :&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;MetadataProvider type=&amp;quot;XML&amp;quot; uri=&amp;quot;http://metadata.eduid.hu/current/href.xml&amp;quot;&lt;br /&gt;
              backingFilePath=&amp;quot;href.xml&amp;quot; reloadInterval=&amp;quot;7200&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;MetadataFilter type=&amp;quot;Signature&amp;quot; certificate=&amp;quot;href-metadata-signer-2011.crt&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Meg kell adni, hogy az SP mely kulcsot és tanúsítványt használja. Ehhez egy self-signed tanúsítványra lesz szükség, amely pl. az alábbi paranccsal generálható:&lt;br /&gt;
&lt;br /&gt;
 openssl req -new -newkey rsa:2048 -x509 -days 3652 -nodes -out sp.example.org.crt -keyout sp.example.org.key&lt;br /&gt;
&lt;br /&gt;
Az xml-ben módosítandó részlet pedig:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;CredentialResolver type=&amp;quot;File&amp;quot; key=&amp;quot;sp.example.org.key&amp;quot; certificate=&amp;quot;sp.example.org.crt&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Végül ugorjunk vissza a fájl első felére, szedjük ki a kommentjeleket a &amp;lt;code&amp;gt;RequestMapper&amp;lt;/code&amp;gt; rész körül, adjuk meg a kezelendő hosztokat és path-okat. Egy Shibboleth SP példány több, az adott webszerver által kezelt hosztot is kezelni tud, és egy-egy hoszton belül több útvonalat is, ezeket itt meg kell adni. Alább egy példa:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;RequestMapper type=&amp;quot;Native&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;RequestMap applicationId=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Host name=&amp;quot;hosztnév&amp;quot; authType=&amp;quot;shibboleth&amp;quot; requireSession=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;Path name=&amp;quot;secure&amp;quot; authType=&amp;quot;shibboleth&amp;quot; requireSession=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/Host&amp;gt;&lt;br /&gt;
        &amp;lt;/RequestMap&amp;gt;&lt;br /&gt;
    &amp;lt;/RequestMapper&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A péda szerint a hosztnév alatti tartalom nem kíván meg shibbolethes azonosítást, kivéve a &amp;lt;code&amp;gt;/secure&amp;lt;/code&amp;gt; location. Ha valahol shibbolethes azonosítást kívánunk használni, azt ezen kívül az adott hoszt webszerver konfigjában is jeleznünk kell. Apache-nál az alábbi módon.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /secure&amp;gt;&lt;br /&gt;
  AuthType shibboleth&lt;br /&gt;
  require valid-user&lt;br /&gt;
  ShibUseHeaders On&lt;br /&gt;
  ShibRequireSession On&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SP adatainak közzététele ==&lt;br /&gt;
A fenti beállítások után egy működő Shibboleth SP-t kapunk eredményül, ugyanakkor ténylegesen csak akkor fog tudni együttműködni a föderációban résztvevő IdP-kkel, ha az SP metaadatait közzétesszük, így azt az IdPk megismerhetik. Ehhez az eduID föderációban a frissen beállított SP adatait a [[Resource_Registry|Resource Registry]] nevű webes adminisztrációs oldalon kell felvinni egy varázsló segítségével, majd a jóváhagyás után várni pár órát, amíg a változások érvénybe lépnek. Ha nincs az intézményi entitások menedzseléséhez jogod ('Access denied'), akkor konzultálj az intézményed eduID kapcsolattartójával, hogy az SP-det szeretnéd a föderációba regisztrálni. Segítséget nyújt az alábbi lista: https://rr.aai.niif.hu/list&lt;br /&gt;
&lt;br /&gt;
== HEXAA integráció ==&lt;br /&gt;
&lt;br /&gt;
Ha az eduID-ban használatos külső attribútum forrást is szeretnénk az SP-nkhez illeszteni, akkor a shibboleth2.xml fileban a következő példán keresztül lehet megtenni.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;AttributeResolver type=&amp;quot;Chaining&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeResolver type=&amp;quot;Query&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeResolver type=&amp;quot;SimpleAggregation&amp;quot; attributeId=&amp;quot;eppn&amp;quot; format=&amp;quot;urn:oid:1.3.6.1.4.1.5923.1.1.1.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Entity&amp;gt;https://hexaa.eduid.hu/hexaa&amp;lt;/Entity&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute Name=&amp;quot;urn:oid:1.3.6.1.4.1.5923.1.1.1.7&amp;quot; NameFormat=&amp;quot;urn:oasis:names:tc:SAML:2.0:attrname-format:uri&amp;quot; FriendlyName=&amp;quot;eduPersonEntitlement&amp;quot;/&amp;gt;  &lt;br /&gt;
    &amp;lt;/AttributeResolver&amp;gt;&lt;br /&gt;
  &amp;lt;/AttributeResolver&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kapcsolódó lapok ==&lt;br /&gt;
* [[FastCGI | Shibboleth 2 SP telepítése FastCGI alapú webszerver környezetben]]&lt;br /&gt;
&lt;br /&gt;
[[Category: AAI]] [[Category: Shibboleth SP]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Shibboleth_Service_Provider_(SP)&amp;diff=4106</id>
		<title>Shibboleth Service Provider (SP)</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Shibboleth_Service_Provider_(SP)&amp;diff=4106"/>
				<updated>2017-04-12T16:29:12Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* SP adatainak közzététele */&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ő Shibboleth SP-t állítsunk üzembe. Fontos, hogy rengeteg olyan igény lehet, amely további speciális beállítások meglétét teszik szükségessé, ezeket ezen a lapon nem részletezzük, ilyen irányú tájékozódáshoz legbiztosabb forrás a [http://wiki.shibboleth.net http://wiki.shibboleth.net] lap.&lt;br /&gt;
&lt;br /&gt;
==Telepítés==&lt;br /&gt;
===Előkészületek===&lt;br /&gt;
A Shibboleth SP egy webszerver modul, így szükséges előfeltétel, hogy a gépünkön legyen egy webszerver telepítve, jelenleg Apache és IIS a biztosan támogatott webszerverek. Emellett szükséges, hogy a 443-as port a tűzfalon mindkét irányban engedélyezett legyen, ill. a hosztnév, amelyen a webszerver üzemel, be legyen jegyezve a DNS-be.&lt;br /&gt;
&lt;br /&gt;
===Letöltés és telepítés===&lt;br /&gt;
A legfrissebb változat letölthető [https://wiki.shibboleth.net/confluence/display/SHIB2/Installation https://wiki.shibboleth.net/confluence/display/SHIB2/Installation] címről. Célszerű valamilyen előre csomagolt változattal dolgozni, melyet az adott rendszer csomagkezelőjén keresztül egy mozdulattal feltelepíthetünk minden függőségével együtt.&lt;br /&gt;
&lt;br /&gt;
====Debian Squeeze====&lt;br /&gt;
A [http://wiki.debian.org/Teams/DebianShibboleth Debian Shibboleth] csapat által készített új verziók időről időre bekerülnek [http://backports.org backports.org] tárolóiba is, ezért stable Debiant futtató rendszereken javasolt ezt használni.&lt;br /&gt;
&lt;br /&gt;
A backports.org tárolójának beállításához adjuk hozzá a &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; fájlhoz a következő sort:&lt;br /&gt;
 deb http://backports.debian.org/debian-backports squeeze-backports main&lt;br /&gt;
&lt;br /&gt;
A csomagokat így telepíthetjük:&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude install -t squeeze-backports libapache2-mod-shib2&lt;br /&gt;
&lt;br /&gt;
Ez a Shibboleth webszerver modul függőségeit is telepíti. A Shibboleth használatba vételéhez engedélyezni kell a modult és újra kell indítani az Apache webszervert.&lt;br /&gt;
&lt;br /&gt;
====RPM alapú disztribúciók====&lt;br /&gt;
Shibboleth SP-ből RHEL/CENTOS rendszerekre egyből rendelkezésünkre áll bináris csomag, a fejlesztők ezen platformokon dolgoznak első körben. A telepítés előtt a teendőnk mindössze annyi, hogy a YUM forrásokhoz hozzá kell adni a Shibboleth SP repóját. Ehhez látogassunk el a [http://download.opensuse.org/repositories/security://shibboleth/ http://download.opensuse.org/repositories/security://shibboleth/] oldalra, majd a pontos verzió kiválasztása után a security:shibboleth.repo fájl tartalmát másoljuk be a /etc/yum/ &amp;lt;code&amp;gt;/etc/yum.repos.d/CentOS-Base.repo&amp;lt;/code&amp;gt; fájl aljára, majd &lt;br /&gt;
 yum install shibboleth&lt;br /&gt;
&lt;br /&gt;
'''Hibaelhárítás: Can't connect to listener process'''&lt;br /&gt;
&lt;br /&gt;
Ha a fenti hibába futunk bele, az azt jelenti, hogy a SE linux nem engedi kommunikálni a shibd és a httpd folyamatokat, ezért ezt külön engedélyezni kell. Ehhez készítsünk egy fájlt &amp;lt;code&amp;gt;shibd.te&amp;lt;/code&amp;gt; néven, melynek tartalma az alábbi legyen:&lt;br /&gt;
 module shibd 1.0;&lt;br /&gt;
 require {&lt;br /&gt;
        type var_run_t;&lt;br /&gt;
        type httpd_t;&lt;br /&gt;
        type initrc_t;&lt;br /&gt;
        class sock_file write;&lt;br /&gt;
        class unix_stream_socket connectto;&lt;br /&gt;
 } &lt;br /&gt;
 #============= httpd_t ============== &lt;br /&gt;
 allow httpd_t initrc_t:unix_stream_socket connectto;&lt;br /&gt;
 allow httpd_t var_run_t:sock_file write;&lt;br /&gt;
&lt;br /&gt;
Ezek után futtassuk le az alábbi parancsokat, melyek a fenti fájlt megfelelően lefordítják, és be is illesztik a létrehozott szabályunkat.&lt;br /&gt;
 # checkmodule -M -m -o shibd.mod shibd.te&lt;br /&gt;
 checkmodule:  loading policy configuration from shibd.te&lt;br /&gt;
 checkmodule:  policy configuration loaded&lt;br /&gt;
 checkmodule:  writing binary representation (version 6) to shibd.mod &lt;br /&gt;
 # semodule_package -o shibd.pp -m shibd.mod&lt;br /&gt;
 # semodule -i ./shibd.pp&lt;br /&gt;
&lt;br /&gt;
==Alapbeállítások==&lt;br /&gt;
A telepített Shibboleth SP konfigurációs állományait Linux alatt a /etc/shibboleth könyvtárban találjuk. Itt a &amp;lt;code&amp;gt;shibboleth2.xml&amp;lt;/code&amp;gt; és az &amp;lt;code&amp;gt;attribute-map.xml&amp;lt;/code&amp;gt; fájlokkal lesz dolgunk.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;shibboleth2.xml &amp;lt;/code&amp;gt;===&lt;br /&gt;
A telepítéskor alapértelmezetten érkező fájl nagyrészt megfelelő számunkra, az induláshoz csak az alább részletezett módosításokat kell megejtenünk. A változtatandó kódrészletek mind szerepelnek már az eredeti xml-ben is, így a feladat többnyire csak változtatásról, átírásról, bizonyos részek kommentjelek közül történő kiszabadításáról szól.&lt;br /&gt;
&lt;br /&gt;
* Választanunk kell egy entityID-t. Ez általában a védendő szolgáltatást futtató hosztnévből származik: &amp;lt;code&amp;gt;https://hosztnev/shibboleth&amp;lt;/code&amp;gt;, ezt az azonosítót beírni az &amp;lt;code &amp;gt;ApplicationDefaults&amp;lt;/code&amp;gt; részbe az alábbi módon (az entityID és a homeURL értékein kívül, ahová a hosztnév írandó be, alapértelmezés szerint mást nem szükséges változtatni): &lt;br /&gt;
&amp;lt;code lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ApplicationDefaults entityID=&amp;quot;https://hosztnév/shibboleth&amp;quot;&lt;br /&gt;
                         homeURL=&amp;quot;https://hosztnév/shib-error.html&amp;quot;&lt;br /&gt;
                         signing=&amp;quot;false&amp;quot; encryption=&amp;quot;false&amp;quot;&lt;br /&gt;
                         id=&amp;quot;default&amp;quot; policyId=&amp;quot;default&amp;quot;&lt;br /&gt;
                         REMOTE_USER=&amp;quot;eppn persistent-id targeted-id&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Meg kell adni, hogy egy Discovery Service-n keresztül kérjük meg a felhasználót, hogy adja meg, mely IdP-től érkezik, avagy csak IdP-t engedélyezünk számukra. Az első eset nyilvános szolgáltatások esetében indokolt, a második belső, pl. csak intézményi oldalak védésénél szükséges.&lt;br /&gt;
&lt;br /&gt;
** Discovery Service beállítása&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;SSO discoveryProtocol=&amp;quot;SAMLDS&amp;quot; discoveryURL=&amp;quot;https://discovery.eduid.hu&amp;quot;&amp;gt;&lt;br /&gt;
  SAML2 SAML1&lt;br /&gt;
 &amp;lt;/SSO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
** Fix IdP beállítása&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;SSO entityID=&amp;quot;https://idp.example.org/idp/shibboleth&amp;quot;&amp;gt;&lt;br /&gt;
  SAML2 SAML1&lt;br /&gt;
 &amp;lt;/SSO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Meg kell adnunk, hogy milyen metadata forrásból dolgozzon az SP, az alábbi példában az eduID-ban használatos beállítás látható (a hivatkozott href-metadata-signer-2011.crt fájl a [http://metadata.eduid.hu http://metadata.eduid.hu] címről töltendő le a shibboleth konfigurációs könyvtárába) :&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;MetadataProvider type=&amp;quot;XML&amp;quot; uri=&amp;quot;http://metadata.eduid.hu/current/href.xml&amp;quot;&lt;br /&gt;
              backingFilePath=&amp;quot;href.xml&amp;quot; reloadInterval=&amp;quot;7200&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;MetadataFilter type=&amp;quot;Signature&amp;quot; certificate=&amp;quot;href-metadata-signer-2011.crt&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/MetadataProvider&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Meg kell adni, hogy az SP mely kulcsot és tanúsítványt használja. Ehhez egy self-signed tanúsítványra lesz szükség, amely pl. az alábbi paranccsal generálható:&lt;br /&gt;
&lt;br /&gt;
 openssl req -new -x509 -days 3652 -nodes -out sp.example.org.crt -keyout sp.example.org.key&lt;br /&gt;
&lt;br /&gt;
Az xml-ben módosítandó részlet pedig:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;CredentialResolver type=&amp;quot;File&amp;quot; key=&amp;quot;sp.example.org.key&amp;quot; certificate=&amp;quot;sp.example.org.crt&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Végül ugorjunk vissza a fájl első felére, szedjük ki a kommentjeleket a &amp;lt;code&amp;gt;RequestMapper&amp;lt;/code&amp;gt; rész körül, adjuk meg a kezelendő hosztokat és path-okat. Egy Shibboleth SP példány több, az adott webszerver által kezelt hosztot is kezelni tud, és egy-egy hoszton belül több útvonalat is, ezeket itt meg kell adni. Alább egy példa:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;RequestMapper type=&amp;quot;Native&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;RequestMap applicationId=&amp;quot;default&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Host name=&amp;quot;hosztnév&amp;quot; authType=&amp;quot;shibboleth&amp;quot; requireSession=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;Path name=&amp;quot;secure&amp;quot; authType=&amp;quot;shibboleth&amp;quot; requireSession=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;/Host&amp;gt;&lt;br /&gt;
        &amp;lt;/RequestMap&amp;gt;&lt;br /&gt;
    &amp;lt;/RequestMapper&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A péda szerint a hosztnév alatti tartalom nem kíván meg shibbolethes azonosítást, kivéve a &amp;lt;code&amp;gt;/secure&amp;lt;/code&amp;gt; location. Ha valahol shibbolethes azonosítást kívánunk használni, azt ezen kívül az adott hoszt webszerver konfigjában is jeleznünk kell. Apache-nál az alábbi módon.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Location /secure&amp;gt;&lt;br /&gt;
  AuthType shibboleth&lt;br /&gt;
  require valid-user&lt;br /&gt;
  ShibUseHeaders On&lt;br /&gt;
  ShibRequireSession On&lt;br /&gt;
 &amp;lt;/Location&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SP adatainak közzététele ==&lt;br /&gt;
A fenti beállítások után egy működő Shibboleth SP-t kapunk eredményül, ugyanakkor ténylegesen csak akkor fog tudni együttműködni a föderációban résztvevő IdP-kkel, ha az SP metaadatait közzétesszük, így azt az IdPk megismerhetik. Ehhez az eduID föderációban a frissen beállított SP adatait a [[Resource_Registry|Resource Registry]] nevű webes adminisztrációs oldalon kell felvinni egy varázsló segítségével, majd a jóváhagyás után várni pár órát, amíg a változások érvénybe lépnek. Ha nincs az intézményi entitások menedzseléséhez jogod ('Access denied'), akkor konzultálj az intézményed eduID kapcsolattartójával, hogy az SP-det szeretnéd a föderációba regisztrálni. Segítséget nyújt az alábbi lista: https://rr.aai.niif.hu/list&lt;br /&gt;
&lt;br /&gt;
== HEXAA integráció ==&lt;br /&gt;
&lt;br /&gt;
Ha az eduID-ban használatos külső attribútum forrást is szeretnénk az SP-nkhez illeszteni, akkor a shibboleth2.xml fileban a következő példán keresztül lehet megtenni.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;AttributeResolver type=&amp;quot;Chaining&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeResolver type=&amp;quot;Query&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeResolver type=&amp;quot;SimpleAggregation&amp;quot; attributeId=&amp;quot;eppn&amp;quot; format=&amp;quot;urn:oid:1.3.6.1.4.1.5923.1.1.1.6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Entity&amp;gt;https://hexaa.eduid.hu/hexaa&amp;lt;/Entity&amp;gt;&lt;br /&gt;
        &amp;lt;Attribute Name=&amp;quot;urn:oid:1.3.6.1.4.1.5923.1.1.1.7&amp;quot; NameFormat=&amp;quot;urn:oasis:names:tc:SAML:2.0:attrname-format:uri&amp;quot; FriendlyName=&amp;quot;eduPersonEntitlement&amp;quot;/&amp;gt;  &lt;br /&gt;
    &amp;lt;/AttributeResolver&amp;gt;&lt;br /&gt;
  &amp;lt;/AttributeResolver&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kapcsolódó lapok ==&lt;br /&gt;
* [[FastCGI | Shibboleth 2 SP telepítése FastCGI alapú webszerver környezetben]]&lt;br /&gt;
&lt;br /&gt;
[[Category: AAI]] [[Category: Shibboleth SP]] [[Category: HOWTO]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Alkalmaz%C3%A1sok_samliz%C3%A1l%C3%A1st_seg%C3%ADt%C5%91_teszt_IdP_simplesamlPHP_seg%C3%ADts%C3%A9g%C3%A9vel&amp;diff=2169</id>
		<title>Alkalmazások samlizálást segítő teszt IdP simplesamlPHP segítségével</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Alkalmaz%C3%A1sok_samliz%C3%A1l%C3%A1st_seg%C3%ADt%C5%91_teszt_IdP_simplesamlPHP_seg%C3%ADts%C3%A9g%C3%A9vel&amp;diff=2169"/>
				<updated>2011-11-15T14:37:22Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: Új oldal, tartalma: „1. Telepítünk egy SSP egyedet valamelyik szerverünkre.  2. Engedélyezzük a '''userpass''' auth forrás modult.  touch modules/exampleauth/enable  3. Elrendezzük a me…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1. Telepítünk egy SSP egyedet valamelyik szerverünkre.&lt;br /&gt;
&lt;br /&gt;
2. Engedélyezzük a '''userpass''' auth forrás modult.&lt;br /&gt;
 touch modules/exampleauth/enable&lt;br /&gt;
&lt;br /&gt;
3. Elrendezzük a metadatákat.&lt;br /&gt;
&lt;br /&gt;
4. Az authsources.php file-t valahogy így alakítjuk ki:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 &lt;br /&gt;
 $config = array(&lt;br /&gt;
 &lt;br /&gt;
        // This is a authentication source which handles admin authentication.&lt;br /&gt;
        'admin' =&amp;gt; array(&lt;br /&gt;
                // The default is to use core:AdminPassword, but it can be replaced with&lt;br /&gt;
                // any authentication source.&lt;br /&gt;
  &lt;br /&gt;
                'core:AdminPassword',&lt;br /&gt;
        ),&lt;br /&gt;
        &lt;br /&gt;
        'multi' =&amp;gt; array(&lt;br /&gt;
            'multiauth:MultiAuth',&lt;br /&gt;
 &lt;br /&gt;
            /*&lt;br /&gt;
             * The available authentication sources.&lt;br /&gt;
             * They must be defined in this authsources.php file.&lt;br /&gt;
             */&lt;br /&gt;
            'sources' =&amp;gt; array('projekt1', 'projekt2'),&lt;br /&gt;
        ),&lt;br /&gt;
        'projekt1' =&amp;gt; array(&lt;br /&gt;
                'exampleauth:UserPass',&lt;br /&gt;
                'tesztuser1:tesztuser1' =&amp;gt; array(&lt;br /&gt;
                        'eduPersonPrincipalName' =&amp;gt; array('tesztuser1@example.com'),&lt;br /&gt;
                        'uid' =&amp;gt; array('tesztuser1'),&lt;br /&gt;
                        'cn' =&amp;gt; &amp;quot;Nemecsek Ernő&amp;quot;,&lt;br /&gt;
                        'sn' =&amp;gt; &amp;quot;Nemecsek&amp;quot;,&lt;br /&gt;
                        'givenName' =&amp;gt; &amp;quot;Ernő&amp;quot;,&lt;br /&gt;
                        'mail' =&amp;gt; &amp;quot;devnull@example.com&amp;quot;,&lt;br /&gt;
                        'homePostalAddress' =&amp;gt; &amp;quot;1234 Budapest, Nincsisilyen utca 2.&amp;quot;,&lt;br /&gt;
                        'schacDateOfBirth' =&amp;gt; &amp;quot;19751221&amp;quot;,&lt;br /&gt;
                        'schacPlaceOfBirth' =&amp;gt; &amp;quot;Budapest&amp;quot;,&lt;br /&gt;
                        'niifPersonMothersName' =&amp;gt; &amp;quot;Törőcsik Mari&amp;quot;,&lt;br /&gt;
                        'niifPersonResidentalAddress' =&amp;gt; &amp;quot;3456 Nagyabajom, Mitírjakide utca 2.&amp;quot;,&lt;br /&gt;
                ),&lt;br /&gt;
                'tesztuser2:tesztuser2' =&amp;gt; array(&lt;br /&gt;
                        'eduPersonPrincipalName' =&amp;gt; array('tesztuser2@example.com'),&lt;br /&gt;
                        'uid' =&amp;gt; array('tesztuser2'),&lt;br /&gt;
                        'cn' =&amp;gt; &amp;quot;Nemecsek Ernő 2&amp;quot;,&lt;br /&gt;
                        'sn' =&amp;gt; &amp;quot;Nemecsek&amp;quot;,&lt;br /&gt;
                        'givenName' =&amp;gt; &amp;quot;Ernő&amp;quot;,&lt;br /&gt;
                        'mail' =&amp;gt; &amp;quot;devnull@example.com&amp;quot;,&lt;br /&gt;
                        'homePostalAddress' =&amp;gt; &amp;quot;1234 Budapest, Nincsisilyen utca 2.&amp;quot;,&lt;br /&gt;
                        'schacDateOfBirth' =&amp;gt; &amp;quot;19751221&amp;quot;,&lt;br /&gt;
                        'schacPlaceOfBirth' =&amp;gt; &amp;quot;Budapest&amp;quot;,&lt;br /&gt;
                        'niifPersonMothersName' =&amp;gt; &amp;quot;Törőcsik Mari&amp;quot;,&lt;br /&gt;
                        'niifPersonResidentalAddress' =&amp;gt; &amp;quot;3456 Nagyabajom, Mitírjakide utca 2.&amp;quot;,&lt;br /&gt;
                ),&lt;br /&gt;
        ),&lt;br /&gt;
       'projekt2' =&amp;gt; array(&lt;br /&gt;
                'exampleauth:UserPass',&lt;br /&gt;
                'tesztuser1:tesztuser1' =&amp;gt; array(&lt;br /&gt;
                        'eduPersonPrincipalName' =&amp;gt; array('tesztuser1@example.com'),&lt;br /&gt;
                        'uid' =&amp;gt; array('tesztuser1'),&lt;br /&gt;
                        'cn' =&amp;gt; &amp;quot;Nemecsek Ernő&amp;quot;,&lt;br /&gt;
                        'sn' =&amp;gt; &amp;quot;Nemecsek&amp;quot;,&lt;br /&gt;
                        'givenName' =&amp;gt; &amp;quot;Ernő&amp;quot;,&lt;br /&gt;
                        'mail' =&amp;gt; &amp;quot;devnull@example.com&amp;quot;,&lt;br /&gt;
                        'homePostalAddress' =&amp;gt; &amp;quot;1234 Budapest, Nincsisilyen utca 2.&amp;quot;,&lt;br /&gt;
                        'schacDateOfBirth' =&amp;gt; &amp;quot;19751221&amp;quot;,&lt;br /&gt;
                        'schacPlaceOfBirth' =&amp;gt; &amp;quot;Budapest&amp;quot;,&lt;br /&gt;
                        'niifPersonMothersName' =&amp;gt; &amp;quot;Törőcsik Mari&amp;quot;,&lt;br /&gt;
                        'niifPersonResidentalAddress' =&amp;gt; &amp;quot;3456 Nagyabajom, Mitírjakide utca 2.&amp;quot;,&lt;br /&gt;
                ),&lt;br /&gt;
                'tesztuser2:tesztuser2' =&amp;gt; array(&lt;br /&gt;
                        'eduPersonPrincipalName' =&amp;gt; array('tesztuser2@example.com'),&lt;br /&gt;
                        'uid' =&amp;gt; array('tesztuser2'),&lt;br /&gt;
                        'cn' =&amp;gt; &amp;quot;Nemecsek Ernő 2&amp;quot;,&lt;br /&gt;
                        'sn' =&amp;gt; &amp;quot;Nemecsek&amp;quot;,&lt;br /&gt;
                        'givenName' =&amp;gt; &amp;quot;Ernő&amp;quot;,&lt;br /&gt;
                        'mail' =&amp;gt; &amp;quot;devnull@example.com&amp;quot;,&lt;br /&gt;
                        'homePostalAddress' =&amp;gt; &amp;quot;1234 Budapest, Nincsisilyen utca 2.&amp;quot;,&lt;br /&gt;
                        'schacDateOfBirth' =&amp;gt; &amp;quot;19751221&amp;quot;,&lt;br /&gt;
                        'schacPlaceOfBirth' =&amp;gt; &amp;quot;Budapest&amp;quot;,&lt;br /&gt;
                        'niifPersonMothersName' =&amp;gt; &amp;quot;Törőcsik Mari&amp;quot;,&lt;br /&gt;
                        'niifPersonResidentalAddress' =&amp;gt; &amp;quot;3456 Nagyabajom, Mitírjakide utca 2.&amp;quot;,&lt;br /&gt;
                ),&lt;br /&gt;
        ),&lt;br /&gt;
 );&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=2168</id>
		<title>Szerkesztő:Gyufi(AT)sztaki.hu</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=2168"/>
				<updated>2011-11-15T14:27:15Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;2010. szeptember&lt;br /&gt;
: [[Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban]]&lt;br /&gt;
: [[simpleSAMLphp NIIF ldap séma mapping]]&lt;br /&gt;
&lt;br /&gt;
=Networkshop 2010.=&lt;br /&gt;
&lt;br /&gt;
simpleSAMLphp, mint IdP a Sztakiban.&lt;br /&gt;
&lt;br /&gt;
http://docs.google.com/present/view?id=dgxggrcj_105djxkgkdq&lt;br /&gt;
&lt;br /&gt;
[[Alkalmazások samlizálást segítő teszt IdP simplesamlPHP segítségével]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Tagok_Tan%C3%A1cs%C3%A1nak_M%C5%B1k%C3%B6d%C3%A9se&amp;diff=2104</id>
		<title>Tagok Tanácsának Működése</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Tagok_Tan%C3%A1cs%C3%A1nak_M%C5%B1k%C3%B6d%C3%A9se&amp;diff=2104"/>
				<updated>2011-09-07T09:34:07Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* Döntéshozatal módjai */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== A döntéshozatal módja ==&lt;br /&gt;
=== Döntéshozatal módjai ===&lt;br /&gt;
* '''Tiltakozás hiányában meghozott döntés''': a Föderációs Operátor elektronikus úton eljuttatja a határozati javaslatot a Tagok Tanácsa tagjainak. Amennyiben a megadott határidőn belül a Tagok Tanácsának egyetlen szavazati joggal rendelkező tagja sem emel kifogást, a határozat elfogadásra kerül. Ellenkező esetben — amennyiben a Föderációs Operátor fenntartja a határozati javaslatot —  Egyszerű szótöbbséggel döntenek&lt;br /&gt;
* '''Egyszerű szótöbbség:''' a Tagok Tanácsának tagjai vagy egy ülésen személyesen, vagy meghatározott módon elektronikus úton, vagy egyéb – a Tagok Tanácsa által előzetesen meghatározott módon –  szavaznak a határozati javaslatról. A határozat elfogadásra kerül, ha a leadott szavazatok 50%-a +1 szavazat támogatja azt.&lt;br /&gt;
* '''Minősített többség:'''  a Tagok Tanácsának tagjai vagy egy ülésen személyesen, vagy meghatározott módon elektronikus úton, vagy egyéb – a Tagok Tanácsa által előzetesen meghatározott módon –  szavaznak a határozati javaslatról. A határozat elfogadásra kerül, ha  az összes Tag 66%-a + 1 szavazat támogatja azt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; Tagok Tanácsának tiltakozása hiányában három (3) nap elteltét követően elfogadásra kerő döntések:&lt;br /&gt;
* új Tag vagy Partner felvételéhez a Föderációba;&lt;br /&gt;
* Tag vagy Partner új IdP-jének vagy SP-jének regisztrálása&lt;br /&gt;
&lt;br /&gt;
; Tagok Tanácsának tiltakozás hiányában tíz (10) nap elteltét követően elfogadásra kerülő döntések:&lt;br /&gt;
* a Műszaki Dokumentumokat érintő kisebb módosítások.&lt;br /&gt;
&lt;br /&gt;
; Tagok Tanácsának egyszerű szótöbbséggel meghozott döntése szükséges:&lt;br /&gt;
* Tagok Tanácsának saját eljárási szabályainak elfogadása, módosítása;&lt;br /&gt;
* Föderációs Szabályzat Műszaki Dokumentumainak jelentősebb módosításához, illetve bármely más dokumentum módosításához;&lt;br /&gt;
* a Föderációs Szabályzathoz kapcsolódó új dokumentum elfogadásához;&lt;br /&gt;
* Tagok ill. Partnerek vitás kérdéseivel kapcsolatos döntésekhez&lt;br /&gt;
&lt;br /&gt;
; Tagok Tanácsának minősített többségű döntése szükséges:&lt;br /&gt;
* a Döntéshozatal rendjének megváltoztatásához&lt;br /&gt;
* nemzetközi szervezetekhez és együttműködésekhez történő csatlakozásról szóló döntéshez.&lt;br /&gt;
* a Szolgáltatási díj bevezetéséhez, összegének megváltoztatásához;&lt;br /&gt;
* a Föderáció megszüntetéséhez.&lt;br /&gt;
&lt;br /&gt;
; Szavazásra jogosult a Tag szerződésben rögzített adminisztratív kapcsolattartó, vagy egy írásban meghatalmazott személy.&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=1958</id>
		<title>Szerkesztő:Gyufi(AT)sztaki.hu</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=1958"/>
				<updated>2010-09-27T12:28:34Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;2010. szeptember&lt;br /&gt;
: [[Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban]]&lt;br /&gt;
: [[simpleSAMLphp NIIF ldap séma mapping]]&lt;br /&gt;
&lt;br /&gt;
=Networkshop 2010.=&lt;br /&gt;
&lt;br /&gt;
simpleSAMLphp, mint IdP a Sztakiban.&lt;br /&gt;
&lt;br /&gt;
http://docs.google.com/present/view?id=dgxggrcj_105djxkgkdq&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SimpleSAMLphp_NIIF_ldap_s%C3%A9ma_mapping&amp;diff=1956</id>
		<title>SimpleSAMLphp NIIF ldap séma mapping</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SimpleSAMLphp_NIIF_ldap_s%C3%A9ma_mapping&amp;diff=1956"/>
				<updated>2010-09-27T12:28:15Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: SimpeleSAMLphp NIIF ldap séma mapping lapot átneveztem SimpleSAMLphp NIIF ldap séma mapping névre&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A simpleSAMLphp különböző attribútum mappinget használ az attribúmnevek átfordításaihoz. A href ldap sémához még nincs, ezt a két file tartalmazza az oid - name oda-vissza mapping-et. Az attributemap könyvtárban van a helyük. A config.php authproc szabályai között kell felvenni őket, amikor szükség van rá.&lt;br /&gt;
&lt;br /&gt;
config/config.php&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
         'authproc.sp' =&amp;gt; array(&lt;br /&gt;
 ...&lt;br /&gt;
                11 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap', 'oid-href'&lt;br /&gt;
                ),&lt;br /&gt;
 ...&lt;br /&gt;
    ),&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
attributemap/href-oid.php&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php &lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 *  Hungarian Research and Education Federation AttributeSchema representation&lt;br /&gt;
 *  source: https://wiki.aai.niif.hu/images/3/35/99-niifschema.ldif&lt;br /&gt;
 *  @author: Szabó Gyula, aai.sztaki.hu  &amp;lt;gyufi@sztaki.hu&amp;gt;&lt;br /&gt;
 *  &lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 $attributemap = array(&lt;br /&gt;
 	'niifPersonCityOfBirth' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.155', &lt;br /&gt;
  	'niifPersonDateOfBirth' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.152',&lt;br /&gt;
 	'niifPersonActivityStatus' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.153',&lt;br /&gt;
 	'niifPersonJoinDate'  =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.169',&lt;br /&gt;
 	'niifPersonOrgID' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.154',&lt;br /&gt;
 	'niifCertificateSubjectDN' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.151',&lt;br /&gt;
 	'niifEduPersonFacultyDN' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.161',&lt;br /&gt;
 	'niifPersonPosition' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.167',&lt;br /&gt;
 	'niifStatus' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.1',&lt;br /&gt;
 	'niifPersonIdentityNumber' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.158',&lt;br /&gt;
 	'niifTitle' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.2',&lt;br /&gt;
 	'niifCertificateSHA1Fingerprint' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.173',&lt;br /&gt;
 	'niifEduPersonAttendedCourse' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.164',&lt;br /&gt;
  	'niifEduPersonArchiveCourse' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.171',&lt;br /&gt;
 	'niifEduPersonHeldCourse' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.172',&lt;br /&gt;
 	'niifPrefix' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.0',&lt;br /&gt;
 	'niifPersonDegree' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.166',&lt;br /&gt;
 	'niifEduPersonFaculty' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.160',&lt;br /&gt;
 	'niifEduPersonMajor' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.162',&lt;br /&gt;
 	'niifPersonQuitDate' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.170',&lt;br /&gt;
 	'niifPersonMothersName' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.157',&lt;br /&gt;
 	'niifEduPersonAcademicYear' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.163',&lt;br /&gt;
 	'niifPersonCountyOfBirth' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.156',&lt;br /&gt;
 	'niifUniqueId' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.3',&lt;br /&gt;
 	'niifPersonPrefix' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.165',&lt;br /&gt;
 	'niifActiveMemberOf' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.168',&lt;br /&gt;
 	'niifPersonResidentalAddress' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.159',&lt;br /&gt;
 	'niifIDPrefix' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.100',&lt;br /&gt;
 );&lt;br /&gt;
 ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/attributemap/oid-href.php&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php &lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 *  Hungarian Research and Education Federation AttributeSchema representation&lt;br /&gt;
 *  source: https://wiki.aai.niif.hu/images/3/35/99-niifschema.ldif&lt;br /&gt;
 *  @author: Szabó Gyula, aai.sztaki.hu  &amp;lt;gyufi@sztaki.hu&amp;gt;&lt;br /&gt;
 *  &lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 $attributemap = array(&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.155' =&amp;gt; 'niifPersonCityOfBirth',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.152' =&amp;gt; 'niifPersonDateOfBirth',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.153' =&amp;gt; 'niifPersonActivityStatus',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.169' =&amp;gt; 'niifPersonJoinDate' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.154' =&amp;gt; 'niifPersonOrgID',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.151' =&amp;gt; 'niifCertificateSubjectDN',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.161' =&amp;gt; 'niifEduPersonFacultyDN',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.167' =&amp;gt; 'niifPersonPosition' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.1' =&amp;gt; 'niifStatus',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.158' =&amp;gt; 'niifPersonIdentityNumber',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.2' =&amp;gt; 'niifTitle',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.173' =&amp;gt; 'niifCertificateSHA1Fingerprint',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.164' =&amp;gt; 'niifEduPersonAttendedCourse',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.171' =&amp;gt; 'niifEduPersonArchiveCourse',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.172' =&amp;gt; 'niifEduPersonHeldCourse',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.0' =&amp;gt; 'niifPrefix',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.166' =&amp;gt; 'niifPersonDegree' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.160' =&amp;gt; 'niifEduPersonFaculty',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.162' =&amp;gt; 'niifEduPersonMajor',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.170' =&amp;gt; 'niifPersonQuitDate' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.157' =&amp;gt; 'niifPersonMothersName',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.163' =&amp;gt; 'niifEduPersonAcademicYear',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.156' =&amp;gt; 'niifPersonCountyOfBirth',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.3' =&amp;gt; 'niifUniqueId',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.165' =&amp;gt; 'niifPersonPrefix' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.168' =&amp;gt; 'niifActiveMemberOf' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.159' =&amp;gt; 'niifPersonResidentalAddress',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.100' =&amp;gt; 'niifIDPrefix',&lt;br /&gt;
 );&lt;br /&gt;
 ?&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SimpeleSAMLphp_NIIF_ldap_s%C3%A9ma_mapping&amp;diff=1957</id>
		<title>SimpeleSAMLphp NIIF ldap séma mapping</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SimpeleSAMLphp_NIIF_ldap_s%C3%A9ma_mapping&amp;diff=1957"/>
				<updated>2010-09-27T12:28:15Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: SimpeleSAMLphp NIIF ldap séma mapping lapot átneveztem SimpleSAMLphp NIIF ldap séma mapping névre&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#ÁTIRÁNYÍTÁS [[SimpleSAMLphp NIIF ldap séma mapping]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=SimpleSAMLphp_NIIF_ldap_s%C3%A9ma_mapping&amp;diff=1955</id>
		<title>SimpleSAMLphp NIIF ldap séma mapping</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=SimpleSAMLphp_NIIF_ldap_s%C3%A9ma_mapping&amp;diff=1955"/>
				<updated>2010-09-27T12:16:47Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: Új oldal, tartalma: „A simpleSAMLphp különböző attribútum mappinget használ az attribúmnevek átfordításaihoz. A href ldap sémához még nincs, ezt a két file tartalmazza az oid - n…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A simpleSAMLphp különböző attribútum mappinget használ az attribúmnevek átfordításaihoz. A href ldap sémához még nincs, ezt a két file tartalmazza az oid - name oda-vissza mapping-et. Az attributemap könyvtárban van a helyük. A config.php authproc szabályai között kell felvenni őket, amikor szükség van rá.&lt;br /&gt;
&lt;br /&gt;
config/config.php&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
         'authproc.sp' =&amp;gt; array(&lt;br /&gt;
 ...&lt;br /&gt;
                11 =&amp;gt; array(&lt;br /&gt;
                        'class' =&amp;gt; 'core:AttributeMap', 'oid-href'&lt;br /&gt;
                ),&lt;br /&gt;
 ...&lt;br /&gt;
    ),&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
attributemap/href-oid.php&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php &lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 *  Hungarian Research and Education Federation AttributeSchema representation&lt;br /&gt;
 *  source: https://wiki.aai.niif.hu/images/3/35/99-niifschema.ldif&lt;br /&gt;
 *  @author: Szabó Gyula, aai.sztaki.hu  &amp;lt;gyufi@sztaki.hu&amp;gt;&lt;br /&gt;
 *  &lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 $attributemap = array(&lt;br /&gt;
 	'niifPersonCityOfBirth' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.155', &lt;br /&gt;
  	'niifPersonDateOfBirth' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.152',&lt;br /&gt;
 	'niifPersonActivityStatus' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.153',&lt;br /&gt;
 	'niifPersonJoinDate'  =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.169',&lt;br /&gt;
 	'niifPersonOrgID' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.154',&lt;br /&gt;
 	'niifCertificateSubjectDN' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.151',&lt;br /&gt;
 	'niifEduPersonFacultyDN' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.161',&lt;br /&gt;
 	'niifPersonPosition' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.167',&lt;br /&gt;
 	'niifStatus' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.1',&lt;br /&gt;
 	'niifPersonIdentityNumber' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.158',&lt;br /&gt;
 	'niifTitle' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.2',&lt;br /&gt;
 	'niifCertificateSHA1Fingerprint' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.173',&lt;br /&gt;
 	'niifEduPersonAttendedCourse' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.164',&lt;br /&gt;
  	'niifEduPersonArchiveCourse' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.171',&lt;br /&gt;
 	'niifEduPersonHeldCourse' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.172',&lt;br /&gt;
 	'niifPrefix' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.0',&lt;br /&gt;
 	'niifPersonDegree' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.166',&lt;br /&gt;
 	'niifEduPersonFaculty' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.160',&lt;br /&gt;
 	'niifEduPersonMajor' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.162',&lt;br /&gt;
 	'niifPersonQuitDate' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.170',&lt;br /&gt;
 	'niifPersonMothersName' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.157',&lt;br /&gt;
 	'niifEduPersonAcademicYear' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.163',&lt;br /&gt;
 	'niifPersonCountyOfBirth' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.156',&lt;br /&gt;
 	'niifUniqueId' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.3',&lt;br /&gt;
 	'niifPersonPrefix' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.165',&lt;br /&gt;
 	'niifActiveMemberOf' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.168',&lt;br /&gt;
 	'niifPersonResidentalAddress' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.159',&lt;br /&gt;
 	'niifIDPrefix' =&amp;gt; 'urn:oid:1.3.6.1.4.1.11914.0.1.100',&lt;br /&gt;
 );&lt;br /&gt;
 ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/attributemap/oid-href.php&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php &lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 *  Hungarian Research and Education Federation AttributeSchema representation&lt;br /&gt;
 *  source: https://wiki.aai.niif.hu/images/3/35/99-niifschema.ldif&lt;br /&gt;
 *  @author: Szabó Gyula, aai.sztaki.hu  &amp;lt;gyufi@sztaki.hu&amp;gt;&lt;br /&gt;
 *  &lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
 $attributemap = array(&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.155' =&amp;gt; 'niifPersonCityOfBirth',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.152' =&amp;gt; 'niifPersonDateOfBirth',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.153' =&amp;gt; 'niifPersonActivityStatus',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.169' =&amp;gt; 'niifPersonJoinDate' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.154' =&amp;gt; 'niifPersonOrgID',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.151' =&amp;gt; 'niifCertificateSubjectDN',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.161' =&amp;gt; 'niifEduPersonFacultyDN',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.167' =&amp;gt; 'niifPersonPosition' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.1' =&amp;gt; 'niifStatus',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.158' =&amp;gt; 'niifPersonIdentityNumber',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.2' =&amp;gt; 'niifTitle',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.173' =&amp;gt; 'niifCertificateSHA1Fingerprint',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.164' =&amp;gt; 'niifEduPersonAttendedCourse',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.171' =&amp;gt; 'niifEduPersonArchiveCourse',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.172' =&amp;gt; 'niifEduPersonHeldCourse',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.0' =&amp;gt; 'niifPrefix',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.166' =&amp;gt; 'niifPersonDegree' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.160' =&amp;gt; 'niifEduPersonFaculty',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.162' =&amp;gt; 'niifEduPersonMajor',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.170' =&amp;gt; 'niifPersonQuitDate' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.157' =&amp;gt; 'niifPersonMothersName',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.163' =&amp;gt; 'niifEduPersonAcademicYear',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.156' =&amp;gt; 'niifPersonCountyOfBirth',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.3' =&amp;gt; 'niifUniqueId',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.165' =&amp;gt; 'niifPersonPrefix' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.168' =&amp;gt; 'niifActiveMemberOf' ,&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.159' =&amp;gt; 'niifPersonResidentalAddress',&lt;br /&gt;
 	'urn:oid:1.3.6.1.4.1.11914.0.1.100' =&amp;gt; 'niifIDPrefix',&lt;br /&gt;
 );&lt;br /&gt;
 ?&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=1954</id>
		<title>Szerkesztő:Gyufi(AT)sztaki.hu</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=1954"/>
				<updated>2010-09-27T12:01:10Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;2010. szeptember&lt;br /&gt;
: [[Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban]]&lt;br /&gt;
: [[simpeleSAMLphp NIIF ldap séma mapping]]&lt;br /&gt;
&lt;br /&gt;
=Networkshop 2010.=&lt;br /&gt;
&lt;br /&gt;
simpleSAMLphp, mint IdP a Sztakiban.&lt;br /&gt;
&lt;br /&gt;
http://docs.google.com/present/view?id=dgxggrcj_105djxkgkdq&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=1948</id>
		<title>Szerkesztő:Gyufi(AT)sztaki.hu</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=1948"/>
				<updated>2010-09-16T08:49:43Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
;2010. szeptember&lt;br /&gt;
: [[Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Networkshop 2010.=&lt;br /&gt;
&lt;br /&gt;
simpleSAMLphp, mint IdP a Sztakiban.&lt;br /&gt;
&lt;br /&gt;
http://docs.google.com/present/view?id=dgxggrcj_105djxkgkdq&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=F%C3%A1jl:HuntekaMintSPRendszerArchitektura.png&amp;diff=1947</id>
		<title>Fájl:HuntekaMintSPRendszerArchitektura.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=F%C3%A1jl:HuntekaMintSPRendszerArchitektura.png&amp;diff=1947"/>
				<updated>2010-09-16T08:46:51Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1946</id>
		<title>Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1946"/>
				<updated>2010-09-16T08:46:28Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* Rendszer architektúra */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Könyvtári alkalmazás használati esetei=&lt;br /&gt;
&lt;br /&gt;
==Könyvtári és föderatív azonosságok==&lt;br /&gt;
&lt;br /&gt;
A könyvtári alkalmazás olvasói nyilvántartásában szereplő és a föderatív azonosítás szolgáltatónál lévő azonosságokat a könyvtári alkalmazásban célszerűen össze kell kapcsolni. Ez az identitás összekapcsolás mindig feltételezi a felhasználó aktív közreműködését, e nélkül az identitások összekapcsolása nem jöhet létre.&lt;br /&gt;
&lt;br /&gt;
Egy föderatív azonosítással elérhető, SP-vel védett Online könyvtári beiratkozás szolgáltatásnál ez egy tájékoztató szöveg megjelenése és tudomásul vétele után történik meg, a már hagyományos módon beiratkozott, az alkalmazás olvasói nyilvántartásában már szereplő olvasók “könyvtári identitását” viszont külön eljárással kell összekapcsolni az IdP által azonosítottakkal.&lt;br /&gt;
&lt;br /&gt;
Ha a  könyvtári alkalmazásban már létezik webes azonosítás, akkor célszerű egy olyan komponenst beilleszteni, ahol a felhasználó mind a könyvtári azonosságát (könyvtári azonosító - jelszó), mind a föderatív azonosságát tudja bizonyítani, és a komponens összeköti a két azonosítót a kapcsoló táblában (account linking). A tájékoztató szöveg megjelenítése és annak elfogadása ekkor&lt;br /&gt;
&lt;br /&gt;
Az MTA SZTAKI könyvtára esetében a felhasználók nem tudtak bejelentkezni a webes felületen, az identitás összekapcsolást segítő kulcs az email cím lehetett, ez alapján az összerendelések nagy tömegét elvégezhettük, a maradék azonosítót pedig kézzel, további adatok összehasonlításával, vagy közvetlenül az olvasó megkeresésével lehetett elvégezni.&lt;br /&gt;
&lt;br /&gt;
===Identitások összekapcsolása===&lt;br /&gt;
&lt;br /&gt;
A könyvtári rendszert fel kell készíteni a szövetségi azonosítás során használt azonosítójukkal érkező felhasználók  fogadására. Ehhez szükség van egy kapcsoló táblára, ahol a könyvtári azonosítót és a föderált azonosítókat tároljuk.ű&lt;br /&gt;
&lt;br /&gt;
[[Kép:Accountlinking.png]]&lt;br /&gt;
&lt;br /&gt;
Bejelentkezés során bármely eduid-vel azonosítja a felhasználót a szóbanforgó Home IdP, az alkalmazás kikeresi a megfelelő könyvtári alkalmazásbeli azonosítót, és a továbbiakban az alkalmazás ezt használja a munkamenet során.&lt;br /&gt;
&lt;br /&gt;
==Beiratkozás==&lt;br /&gt;
&lt;br /&gt;
Ha a felhasználó olyan azonosítóval jön a Home IdP-től, ami nincs egyetlen alkalmazás azonosítóhoz sem kapcsolva, a beiratkozás folyamatát kell végrehajtani.&lt;br /&gt;
&lt;br /&gt;
A beiratkozás folyamán létre kell hozni az olvasó táblában az új olvasót, és a Home IdP-től kapott személyes adatokkal fel kell tölteni az olvasó rekordot.&lt;br /&gt;
&lt;br /&gt;
A “Föderált azonosító” kapcsolótáblában létre kell hozni a könyvtári azonosítót és a föderált azonosítót összerendelő rekordot.&lt;br /&gt;
&lt;br /&gt;
==Kiiratkozás==&lt;br /&gt;
&lt;br /&gt;
Felhasználó kiiratását az OIOSAML.java nem támogatja, az azonosító lejáratásával lehet a felhasználó jogosultságait korlátozni. Tervezésnél meg kell fontolni, hogy egy-egy IdP által azonosított felhasználó beiratásánál mennyi az az idő, amíg az olvasót aktívnak szeretnénk tudni. Megvizsgálva néhány könyvtár Használati szabályzatát a megoldás megfelel az általános gyakorlatnak. A könyvtárak beiratkozáskor kiállított olvasójegyét bizonyos időre szóló érvényességgel (általában 1 év) állítják ki, ha az olvasó ennek elteltével nem hosszabbítja meg olvasójegye érvényességét, az lejár.&lt;br /&gt;
&lt;br /&gt;
==Azonosítás és attribútumok átadása==&lt;br /&gt;
&lt;br /&gt;
A LoginFilter által védett URL-re irányuló kéréskor a SAML Assertion és az általa hordozott attribútumok a dk.itst.oiosaml.sp.UserAssertion objektumból lekérdezhetőek. Ezen objektum csak a védett URL-eken érhető el a dk.itst.oiosaml.sp.UserAssertionHolder.get() metódus meghívásával.&lt;br /&gt;
&lt;br /&gt;
Ha csak a login funkciót védjük SAML SP-vel, érdemes a user session-be átmenteni a szükséges attribútumokat, ha azokat más funkciókkal is el kell érni.&lt;br /&gt;
&lt;br /&gt;
Attribútum mappingről igény szerint a fejlesztés során kell gondoskodnunk, az OIOSAML.java nem támogat ilyen funkciót.&lt;br /&gt;
&lt;br /&gt;
Példa az eduPersonPrincipalName attribútum kinyeréséről:&lt;br /&gt;
&lt;br /&gt;
 UserAssertion ua = UserAssertionHolder.get();&lt;br /&gt;
 String eppn = ua.getAttribute(“urn:oid:1.3.6.1.4.1.5923.1.1.1.6 ”);&lt;br /&gt;
&lt;br /&gt;
A rendszerfejlesztéshez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/developers.html]&lt;br /&gt;
&lt;br /&gt;
==Attribútumok frissítése==&lt;br /&gt;
&lt;br /&gt;
Hogy a könyvtári rendszerben nyilvántartott olvasók adatai naprakészek legyenek, a Home IdP-től származó attribútumokat nem csak a beiratkozáskor, hanem a mindennapi használatkor is igénybe vehetjük.&lt;br /&gt;
&lt;br /&gt;
Az IdP-től kapott attribútumokat a könyvtári alkalmazás ellenőrzi, és ha az adott attribútum még nem szerepel a nyilvántartásában, azt rögzíti.&lt;br /&gt;
&lt;br /&gt;
Az alkalmazás saját szabály-rendszere döntheti el, hogy a meglévő értékeket lecseréli az Home IdP-től kapottal, vagy csak hozzáadja új értékként a már meglévőhöz.&lt;br /&gt;
&lt;br /&gt;
==Kijelentkezés==&lt;br /&gt;
&lt;br /&gt;
===SP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásból történő kijelentkezést a session-változók törlésével kell megoldani, és biztosítani kell a Single Logout folyamat elindítását. Az OIOSAML.java esetében ezt a saml/Logout URL-re történő redirect-tel lehet kezdeményezni.&lt;br /&gt;
&lt;br /&gt;
 HttpSession session = req.getSession(false);&lt;br /&gt;
 res.sendRedirect(&amp;quot;saml/Logout&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
[[Kép:SPinitSLO.png]]&lt;br /&gt;
&lt;br /&gt;
===IdP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Ha a Single Logout-ot a felhasználó egy másik alkalmazásnál kezdeményezte, és kérte, hogy valamennyi aktív alkalmazásból léptesse ki a rendszer, az IdP a könyvtári alkalmazásnak egy Logout Request-et küld a böngésző átirányításának segítségével. A kérésről a SAML SP-n kívül az alkalmazásnak is tudnia kell, hogy a felhasználó session-jén a kilépést érvényre juttassa. Ezt a SAML SP SLO endpoint-jai elé tett filter segítségével lehet a legegyszerűbben végrehajtani.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 LogoutFilter.java&lt;br /&gt;
 &lt;br /&gt;
 import java.io.IOException;&lt;br /&gt;
 import javax.servlet.Filter;&lt;br /&gt;
 import javax.servlet.FilterChain;&lt;br /&gt;
 import javax.servlet.FilterConfig;&lt;br /&gt;
 import javax.servlet.ServletException;&lt;br /&gt;
 import javax.servlet.ServletRequest;&lt;br /&gt;
 import javax.servlet.ServletResponse;&lt;br /&gt;
 import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
 import javax.servlet.http.HttpSession;&lt;br /&gt;
 &lt;br /&gt;
 import org.apache.log4j.Logger;&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 * Servlet Filter implementation class LogoutFilter&lt;br /&gt;
 */&lt;br /&gt;
 public class LogoutFilter implements Filter {  &lt;br /&gt;
 &lt;br /&gt;
    /**&lt;br /&gt;
    * Default constructor.&lt;br /&gt;
    */&lt;br /&gt;
   private static final Logger log = Logger.getLogger(LogoutFilter.class);    &lt;br /&gt;
   &lt;br /&gt;
    public LogoutFilter() {&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#destroy()&lt;br /&gt;
    */&lt;br /&gt;
   public void destroy() {&lt;br /&gt;
   } &lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)&lt;br /&gt;
    */&lt;br /&gt;
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {&lt;br /&gt;
       chain.doFilter(request, response);&lt;br /&gt;
       log.debug(&amp;quot;Enter into LoginFilter&amp;quot;);&lt;br /&gt;
       HttpServletRequest servletRequest = ((HttpServletRequest) request);        &lt;br /&gt;
       HttpSession session = servletRequest.getSession(false);&lt;br /&gt;
       if (session != null){&lt;br /&gt;
           log.debug(&amp;quot;Remove application related session attributes.&amp;quot;);            &lt;br /&gt;
           session.removeAttribute(&amp;quot;aai_auth&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#init(FilterConfig)&lt;br /&gt;
    */&lt;br /&gt;
   public void init(FilterConfig fConfig) throws ServletException {&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
web.xml&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
  &amp;lt;filter&amp;gt;    &lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;LogoutFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirect&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirectResponse&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
[[Kép:IdPinitSLO.png]]&lt;br /&gt;
&lt;br /&gt;
=Rendszer architektúra=&lt;br /&gt;
&lt;br /&gt;
[[Kép:HuntekaMintSPRendszerArchitektura.png]]&lt;br /&gt;
&lt;br /&gt;
==OIOSAML.java, mint SP komponens==&lt;br /&gt;
(OIOSAML 2.0 Toolkit test results dokumentumból érdemes ide tenni vm.-t)&lt;br /&gt;
===Telepítés===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java letöltése után a következő lépésekkel telepíthetjük alkalmazásunkhoz az oiosaml.java SP komponenst:&lt;br /&gt;
&lt;br /&gt;
1. Másoljuk a  lib/* fileokat a könyvtári alkalamzás WEB-INF/lib könyvtárába&lt;br /&gt;
&lt;br /&gt;
2. Egészítsük ki az alkalmazás web.xml leírófile-ját a következőkkel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;context-param&amp;gt;&lt;br /&gt;
    &amp;lt;param-name&amp;gt;oiosaml-j.home&amp;lt;/param-name&amp;gt;&lt;br /&gt;
    &amp;lt;param-value&amp;gt;/path/to/oiosaml.home&amp;lt;/param-value&amp;gt;&lt;br /&gt;
 &amp;lt;/context-param&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-class&amp;gt;dk.itst.oiosaml.sp.service.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;dk.itst.oiosaml.sp.service.SPFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/protected/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A SAMLDispatcherServlet servlet végzi el a SAML-lal kapcsolatos kéréseket, ajánlott a /saml/* URL alá definiálni.&lt;br /&gt;
&lt;br /&gt;
A LoginFilter filter által védett URL-lek (példánkban /protected/*) csak SAML-os azonosítással érhetőek el, ezen URL-ek alatt érhetők el különböző objektumokban TODO a  SAML Assertion-ben átadott attribútumértékek.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a az OIOSAML.java ellenőrzi konfigurációját, és ha a rendszer nincs helyesen konfigurálva, elindul az autoconfig folyamat, ahol a rendszert a webes felületről konfigurálhatjuk. A konfigurációs folyamat végén az SP aláírt meta-adata letölthető.&lt;br /&gt;
&lt;br /&gt;
===Konfiguráció===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java konfigurációja az oiosaml-sp.properties file-ban található.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a következő módosításokat érdemes megtenni a fileban:&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.assurancelevel=0&lt;br /&gt;
&lt;br /&gt;
Az elfogadott azonosítási szintet állíthatjuk itt be. Mivel a föderációban ilyet egyelőre nem használunk, és egyes IdP-k nem támogatják (simpleSAMLphp) ezt az attribútumot, állítsuk 0-ra.&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.uri.home=../&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásunk kezdő lapja. SLO után ide irányítódik át a felhasználó böngészője.&lt;br /&gt;
&lt;br /&gt;
A konfigurációs beállítások teljes dokumentációja az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/configuration.html]&lt;br /&gt;
&lt;br /&gt;
===Meta-adat kezelés===&lt;br /&gt;
&lt;br /&gt;
A SAML SP komponens működéséhez elengedhetetlen, hogy a vele bizalmi szövetségben lévő IdP-k meta-adatait ismerje.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java meta-adatformátumának a legfőbb jellemzője, hogy az egyes entitásokat egyenként külön file-ban kell eltárolni. Az szóban forgó file-okat a metadata/IdP alkönyvtárba kell helyezni XML formátumban, a név-konvenció csak annyit követel meg, hogy .xml-re végződjön a file neve.&lt;br /&gt;
&lt;br /&gt;
Fontos tudni, hogy az OIOSAML.java csak induláskor tölti be a meta-adatokat, így ha azokat változtatjuk, az alkalmazást újra kell indítani, hogy a változtatások érvényre jussanak.&lt;br /&gt;
&lt;br /&gt;
===Discovery Service===&lt;br /&gt;
Ha az SP több IdP-vel is bizalmi szövetséget alkot, szükség van Discovery Service-re is, hogy a felhasználó eldönthesse, melyik IdP-nél kívánja magát azonosítani.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java tartalmaz egy discovery service servlet-et, ami az IdP metadatáiból állít össze egy weboldalt, ahol a felhasználó kiválaszthatja a saját IdP-jét.&lt;br /&gt;
&lt;br /&gt;
Telepítése az oiosaml.java-discovery.*.war file egyszerű deploy-olásával történik, beállításra az oiosaml-sp.properties file oiosaml-sp.discovery.* változók használhatóak.&lt;br /&gt;
&lt;br /&gt;
A discovery service-hez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/discovery.html]&lt;br /&gt;
&lt;br /&gt;
===Metadata frissítés===&lt;br /&gt;
&lt;br /&gt;
A meta-adatok frissítése kapcsán meg kell oldani a HREF letölthető teljes meta-adatának entitásonként külön file-ba történő szétvágását.&lt;br /&gt;
&lt;br /&gt;
Ezt a feladatot a mdsigner-j-cli-2.0-rc2-jar-with-dependencies.jar nevű program végzi el.&lt;br /&gt;
&lt;br /&gt;
Működéséhez szükséges a metadata aláíró root certificate, ezzel lehet ellenőrizni a metadata hitelességét.&lt;br /&gt;
&lt;br /&gt;
A programot célszerű rendszeresen, pl. naponta futtatni, egy külön folyamatban leválogatni a releváns IdP-ket, ellenőrizni a módosulásokat, módosulás esetén frissíteni a SAML SP metadata könyvtárát és újraindítani a webalkalmazást.&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=F%C3%A1jl:IdPinitSLO.png&amp;diff=1945</id>
		<title>Fájl:IdPinitSLO.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=F%C3%A1jl:IdPinitSLO.png&amp;diff=1945"/>
				<updated>2010-09-16T08:44:16Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1944</id>
		<title>Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1944"/>
				<updated>2010-09-16T08:43:51Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* IdP által kezdeményezett SLO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Könyvtári alkalmazás használati esetei=&lt;br /&gt;
&lt;br /&gt;
==Könyvtári és föderatív azonosságok==&lt;br /&gt;
&lt;br /&gt;
A könyvtári alkalmazás olvasói nyilvántartásában szereplő és a föderatív azonosítás szolgáltatónál lévő azonosságokat a könyvtári alkalmazásban célszerűen össze kell kapcsolni. Ez az identitás összekapcsolás mindig feltételezi a felhasználó aktív közreműködését, e nélkül az identitások összekapcsolása nem jöhet létre.&lt;br /&gt;
&lt;br /&gt;
Egy föderatív azonosítással elérhető, SP-vel védett Online könyvtári beiratkozás szolgáltatásnál ez egy tájékoztató szöveg megjelenése és tudomásul vétele után történik meg, a már hagyományos módon beiratkozott, az alkalmazás olvasói nyilvántartásában már szereplő olvasók “könyvtári identitását” viszont külön eljárással kell összekapcsolni az IdP által azonosítottakkal.&lt;br /&gt;
&lt;br /&gt;
Ha a  könyvtári alkalmazásban már létezik webes azonosítás, akkor célszerű egy olyan komponenst beilleszteni, ahol a felhasználó mind a könyvtári azonosságát (könyvtári azonosító - jelszó), mind a föderatív azonosságát tudja bizonyítani, és a komponens összeköti a két azonosítót a kapcsoló táblában (account linking). A tájékoztató szöveg megjelenítése és annak elfogadása ekkor&lt;br /&gt;
&lt;br /&gt;
Az MTA SZTAKI könyvtára esetében a felhasználók nem tudtak bejelentkezni a webes felületen, az identitás összekapcsolást segítő kulcs az email cím lehetett, ez alapján az összerendelések nagy tömegét elvégezhettük, a maradék azonosítót pedig kézzel, további adatok összehasonlításával, vagy közvetlenül az olvasó megkeresésével lehetett elvégezni.&lt;br /&gt;
&lt;br /&gt;
===Identitások összekapcsolása===&lt;br /&gt;
&lt;br /&gt;
A könyvtári rendszert fel kell készíteni a szövetségi azonosítás során használt azonosítójukkal érkező felhasználók  fogadására. Ehhez szükség van egy kapcsoló táblára, ahol a könyvtári azonosítót és a föderált azonosítókat tároljuk.ű&lt;br /&gt;
&lt;br /&gt;
[[Kép:Accountlinking.png]]&lt;br /&gt;
&lt;br /&gt;
Bejelentkezés során bármely eduid-vel azonosítja a felhasználót a szóbanforgó Home IdP, az alkalmazás kikeresi a megfelelő könyvtári alkalmazásbeli azonosítót, és a továbbiakban az alkalmazás ezt használja a munkamenet során.&lt;br /&gt;
&lt;br /&gt;
==Beiratkozás==&lt;br /&gt;
&lt;br /&gt;
Ha a felhasználó olyan azonosítóval jön a Home IdP-től, ami nincs egyetlen alkalmazás azonosítóhoz sem kapcsolva, a beiratkozás folyamatát kell végrehajtani.&lt;br /&gt;
&lt;br /&gt;
A beiratkozás folyamán létre kell hozni az olvasó táblában az új olvasót, és a Home IdP-től kapott személyes adatokkal fel kell tölteni az olvasó rekordot.&lt;br /&gt;
&lt;br /&gt;
A “Föderált azonosító” kapcsolótáblában létre kell hozni a könyvtári azonosítót és a föderált azonosítót összerendelő rekordot.&lt;br /&gt;
&lt;br /&gt;
==Kiiratkozás==&lt;br /&gt;
&lt;br /&gt;
Felhasználó kiiratását az OIOSAML.java nem támogatja, az azonosító lejáratásával lehet a felhasználó jogosultságait korlátozni. Tervezésnél meg kell fontolni, hogy egy-egy IdP által azonosított felhasználó beiratásánál mennyi az az idő, amíg az olvasót aktívnak szeretnénk tudni. Megvizsgálva néhány könyvtár Használati szabályzatát a megoldás megfelel az általános gyakorlatnak. A könyvtárak beiratkozáskor kiállított olvasójegyét bizonyos időre szóló érvényességgel (általában 1 év) állítják ki, ha az olvasó ennek elteltével nem hosszabbítja meg olvasójegye érvényességét, az lejár.&lt;br /&gt;
&lt;br /&gt;
==Azonosítás és attribútumok átadása==&lt;br /&gt;
&lt;br /&gt;
A LoginFilter által védett URL-re irányuló kéréskor a SAML Assertion és az általa hordozott attribútumok a dk.itst.oiosaml.sp.UserAssertion objektumból lekérdezhetőek. Ezen objektum csak a védett URL-eken érhető el a dk.itst.oiosaml.sp.UserAssertionHolder.get() metódus meghívásával.&lt;br /&gt;
&lt;br /&gt;
Ha csak a login funkciót védjük SAML SP-vel, érdemes a user session-be átmenteni a szükséges attribútumokat, ha azokat más funkciókkal is el kell érni.&lt;br /&gt;
&lt;br /&gt;
Attribútum mappingről igény szerint a fejlesztés során kell gondoskodnunk, az OIOSAML.java nem támogat ilyen funkciót.&lt;br /&gt;
&lt;br /&gt;
Példa az eduPersonPrincipalName attribútum kinyeréséről:&lt;br /&gt;
&lt;br /&gt;
 UserAssertion ua = UserAssertionHolder.get();&lt;br /&gt;
 String eppn = ua.getAttribute(“urn:oid:1.3.6.1.4.1.5923.1.1.1.6 ”);&lt;br /&gt;
&lt;br /&gt;
A rendszerfejlesztéshez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/developers.html]&lt;br /&gt;
&lt;br /&gt;
==Attribútumok frissítése==&lt;br /&gt;
&lt;br /&gt;
Hogy a könyvtári rendszerben nyilvántartott olvasók adatai naprakészek legyenek, a Home IdP-től származó attribútumokat nem csak a beiratkozáskor, hanem a mindennapi használatkor is igénybe vehetjük.&lt;br /&gt;
&lt;br /&gt;
Az IdP-től kapott attribútumokat a könyvtári alkalmazás ellenőrzi, és ha az adott attribútum még nem szerepel a nyilvántartásában, azt rögzíti.&lt;br /&gt;
&lt;br /&gt;
Az alkalmazás saját szabály-rendszere döntheti el, hogy a meglévő értékeket lecseréli az Home IdP-től kapottal, vagy csak hozzáadja új értékként a már meglévőhöz.&lt;br /&gt;
&lt;br /&gt;
==Kijelentkezés==&lt;br /&gt;
&lt;br /&gt;
===SP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásból történő kijelentkezést a session-változók törlésével kell megoldani, és biztosítani kell a Single Logout folyamat elindítását. Az OIOSAML.java esetében ezt a saml/Logout URL-re történő redirect-tel lehet kezdeményezni.&lt;br /&gt;
&lt;br /&gt;
 HttpSession session = req.getSession(false);&lt;br /&gt;
 res.sendRedirect(&amp;quot;saml/Logout&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
[[Kép:SPinitSLO.png]]&lt;br /&gt;
&lt;br /&gt;
===IdP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Ha a Single Logout-ot a felhasználó egy másik alkalmazásnál kezdeményezte, és kérte, hogy valamennyi aktív alkalmazásból léptesse ki a rendszer, az IdP a könyvtári alkalmazásnak egy Logout Request-et küld a böngésző átirányításának segítségével. A kérésről a SAML SP-n kívül az alkalmazásnak is tudnia kell, hogy a felhasználó session-jén a kilépést érvényre juttassa. Ezt a SAML SP SLO endpoint-jai elé tett filter segítségével lehet a legegyszerűbben végrehajtani.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 LogoutFilter.java&lt;br /&gt;
 &lt;br /&gt;
 import java.io.IOException;&lt;br /&gt;
 import javax.servlet.Filter;&lt;br /&gt;
 import javax.servlet.FilterChain;&lt;br /&gt;
 import javax.servlet.FilterConfig;&lt;br /&gt;
 import javax.servlet.ServletException;&lt;br /&gt;
 import javax.servlet.ServletRequest;&lt;br /&gt;
 import javax.servlet.ServletResponse;&lt;br /&gt;
 import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
 import javax.servlet.http.HttpSession;&lt;br /&gt;
 &lt;br /&gt;
 import org.apache.log4j.Logger;&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 * Servlet Filter implementation class LogoutFilter&lt;br /&gt;
 */&lt;br /&gt;
 public class LogoutFilter implements Filter {  &lt;br /&gt;
 &lt;br /&gt;
    /**&lt;br /&gt;
    * Default constructor.&lt;br /&gt;
    */&lt;br /&gt;
   private static final Logger log = Logger.getLogger(LogoutFilter.class);    &lt;br /&gt;
   &lt;br /&gt;
    public LogoutFilter() {&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#destroy()&lt;br /&gt;
    */&lt;br /&gt;
   public void destroy() {&lt;br /&gt;
   } &lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)&lt;br /&gt;
    */&lt;br /&gt;
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {&lt;br /&gt;
       chain.doFilter(request, response);&lt;br /&gt;
       log.debug(&amp;quot;Enter into LoginFilter&amp;quot;);&lt;br /&gt;
       HttpServletRequest servletRequest = ((HttpServletRequest) request);        &lt;br /&gt;
       HttpSession session = servletRequest.getSession(false);&lt;br /&gt;
       if (session != null){&lt;br /&gt;
           log.debug(&amp;quot;Remove application related session attributes.&amp;quot;);            &lt;br /&gt;
           session.removeAttribute(&amp;quot;aai_auth&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#init(FilterConfig)&lt;br /&gt;
    */&lt;br /&gt;
   public void init(FilterConfig fConfig) throws ServletException {&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
web.xml&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
  &amp;lt;filter&amp;gt;    &lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;LogoutFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirect&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirectResponse&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
[[Kép:IdPinitSLO.png]]&lt;br /&gt;
&lt;br /&gt;
=Rendszer architektúra=&lt;br /&gt;
&lt;br /&gt;
==OIOSAML.java, mint SP komponens==&lt;br /&gt;
(OIOSAML 2.0 Toolkit test results dokumentumból érdemes ide tenni vm.-t)&lt;br /&gt;
===Telepítés===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java letöltése után a következő lépésekkel telepíthetjük alkalmazásunkhoz az oiosaml.java SP komponenst:&lt;br /&gt;
&lt;br /&gt;
1. Másoljuk a  lib/* fileokat a könyvtári alkalamzás WEB-INF/lib könyvtárába&lt;br /&gt;
&lt;br /&gt;
2. Egészítsük ki az alkalmazás web.xml leírófile-ját a következőkkel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;context-param&amp;gt;&lt;br /&gt;
    &amp;lt;param-name&amp;gt;oiosaml-j.home&amp;lt;/param-name&amp;gt;&lt;br /&gt;
    &amp;lt;param-value&amp;gt;/path/to/oiosaml.home&amp;lt;/param-value&amp;gt;&lt;br /&gt;
 &amp;lt;/context-param&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-class&amp;gt;dk.itst.oiosaml.sp.service.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;dk.itst.oiosaml.sp.service.SPFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/protected/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A SAMLDispatcherServlet servlet végzi el a SAML-lal kapcsolatos kéréseket, ajánlott a /saml/* URL alá definiálni.&lt;br /&gt;
&lt;br /&gt;
A LoginFilter filter által védett URL-lek (példánkban /protected/*) csak SAML-os azonosítással érhetőek el, ezen URL-ek alatt érhetők el különböző objektumokban TODO a  SAML Assertion-ben átadott attribútumértékek.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a az OIOSAML.java ellenőrzi konfigurációját, és ha a rendszer nincs helyesen konfigurálva, elindul az autoconfig folyamat, ahol a rendszert a webes felületről konfigurálhatjuk. A konfigurációs folyamat végén az SP aláírt meta-adata letölthető.&lt;br /&gt;
&lt;br /&gt;
===Konfiguráció===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java konfigurációja az oiosaml-sp.properties file-ban található.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a következő módosításokat érdemes megtenni a fileban:&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.assurancelevel=0&lt;br /&gt;
&lt;br /&gt;
Az elfogadott azonosítási szintet állíthatjuk itt be. Mivel a föderációban ilyet egyelőre nem használunk, és egyes IdP-k nem támogatják (simpleSAMLphp) ezt az attribútumot, állítsuk 0-ra.&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.uri.home=../&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásunk kezdő lapja. SLO után ide irányítódik át a felhasználó böngészője.&lt;br /&gt;
&lt;br /&gt;
A konfigurációs beállítások teljes dokumentációja az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/configuration.html]&lt;br /&gt;
&lt;br /&gt;
===Meta-adat kezelés===&lt;br /&gt;
&lt;br /&gt;
A SAML SP komponens működéséhez elengedhetetlen, hogy a vele bizalmi szövetségben lévő IdP-k meta-adatait ismerje.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java meta-adatformátumának a legfőbb jellemzője, hogy az egyes entitásokat egyenként külön file-ban kell eltárolni. Az szóban forgó file-okat a metadata/IdP alkönyvtárba kell helyezni XML formátumban, a név-konvenció csak annyit követel meg, hogy .xml-re végződjön a file neve.&lt;br /&gt;
&lt;br /&gt;
Fontos tudni, hogy az OIOSAML.java csak induláskor tölti be a meta-adatokat, így ha azokat változtatjuk, az alkalmazást újra kell indítani, hogy a változtatások érvényre jussanak.&lt;br /&gt;
&lt;br /&gt;
===Discovery Service===&lt;br /&gt;
Ha az SP több IdP-vel is bizalmi szövetséget alkot, szükség van Discovery Service-re is, hogy a felhasználó eldönthesse, melyik IdP-nél kívánja magát azonosítani.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java tartalmaz egy discovery service servlet-et, ami az IdP metadatáiból állít össze egy weboldalt, ahol a felhasználó kiválaszthatja a saját IdP-jét.&lt;br /&gt;
&lt;br /&gt;
Telepítése az oiosaml.java-discovery.*.war file egyszerű deploy-olásával történik, beállításra az oiosaml-sp.properties file oiosaml-sp.discovery.* változók használhatóak.&lt;br /&gt;
&lt;br /&gt;
A discovery service-hez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/discovery.html]&lt;br /&gt;
&lt;br /&gt;
===Metadata frissítés===&lt;br /&gt;
&lt;br /&gt;
A meta-adatok frissítése kapcsán meg kell oldani a HREF letölthető teljes meta-adatának entitásonként külön file-ba történő szétvágását.&lt;br /&gt;
&lt;br /&gt;
Ezt a feladatot a mdsigner-j-cli-2.0-rc2-jar-with-dependencies.jar nevű program végzi el.&lt;br /&gt;
&lt;br /&gt;
Működéséhez szükséges a metadata aláíró root certificate, ezzel lehet ellenőrizni a metadata hitelességét.&lt;br /&gt;
&lt;br /&gt;
A programot célszerű rendszeresen, pl. naponta futtatni, egy külön folyamatban leválogatni a releváns IdP-ket, ellenőrizni a módosulásokat, módosulás esetén frissíteni a SAML SP metadata könyvtárát és újraindítani a webalkalmazást.&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=F%C3%A1jl:SPinitSLO.png&amp;diff=1943</id>
		<title>Fájl:SPinitSLO.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=F%C3%A1jl:SPinitSLO.png&amp;diff=1943"/>
				<updated>2010-09-16T08:42:34Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1942</id>
		<title>Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1942"/>
				<updated>2010-09-16T08:42:16Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* SP által kezdeményezett SLO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Könyvtári alkalmazás használati esetei=&lt;br /&gt;
&lt;br /&gt;
==Könyvtári és föderatív azonosságok==&lt;br /&gt;
&lt;br /&gt;
A könyvtári alkalmazás olvasói nyilvántartásában szereplő és a föderatív azonosítás szolgáltatónál lévő azonosságokat a könyvtári alkalmazásban célszerűen össze kell kapcsolni. Ez az identitás összekapcsolás mindig feltételezi a felhasználó aktív közreműködését, e nélkül az identitások összekapcsolása nem jöhet létre.&lt;br /&gt;
&lt;br /&gt;
Egy föderatív azonosítással elérhető, SP-vel védett Online könyvtári beiratkozás szolgáltatásnál ez egy tájékoztató szöveg megjelenése és tudomásul vétele után történik meg, a már hagyományos módon beiratkozott, az alkalmazás olvasói nyilvántartásában már szereplő olvasók “könyvtári identitását” viszont külön eljárással kell összekapcsolni az IdP által azonosítottakkal.&lt;br /&gt;
&lt;br /&gt;
Ha a  könyvtári alkalmazásban már létezik webes azonosítás, akkor célszerű egy olyan komponenst beilleszteni, ahol a felhasználó mind a könyvtári azonosságát (könyvtári azonosító - jelszó), mind a föderatív azonosságát tudja bizonyítani, és a komponens összeköti a két azonosítót a kapcsoló táblában (account linking). A tájékoztató szöveg megjelenítése és annak elfogadása ekkor&lt;br /&gt;
&lt;br /&gt;
Az MTA SZTAKI könyvtára esetében a felhasználók nem tudtak bejelentkezni a webes felületen, az identitás összekapcsolást segítő kulcs az email cím lehetett, ez alapján az összerendelések nagy tömegét elvégezhettük, a maradék azonosítót pedig kézzel, további adatok összehasonlításával, vagy közvetlenül az olvasó megkeresésével lehetett elvégezni.&lt;br /&gt;
&lt;br /&gt;
===Identitások összekapcsolása===&lt;br /&gt;
&lt;br /&gt;
A könyvtári rendszert fel kell készíteni a szövetségi azonosítás során használt azonosítójukkal érkező felhasználók  fogadására. Ehhez szükség van egy kapcsoló táblára, ahol a könyvtári azonosítót és a föderált azonosítókat tároljuk.ű&lt;br /&gt;
&lt;br /&gt;
[[Kép:Accountlinking.png]]&lt;br /&gt;
&lt;br /&gt;
Bejelentkezés során bármely eduid-vel azonosítja a felhasználót a szóbanforgó Home IdP, az alkalmazás kikeresi a megfelelő könyvtári alkalmazásbeli azonosítót, és a továbbiakban az alkalmazás ezt használja a munkamenet során.&lt;br /&gt;
&lt;br /&gt;
==Beiratkozás==&lt;br /&gt;
&lt;br /&gt;
Ha a felhasználó olyan azonosítóval jön a Home IdP-től, ami nincs egyetlen alkalmazás azonosítóhoz sem kapcsolva, a beiratkozás folyamatát kell végrehajtani.&lt;br /&gt;
&lt;br /&gt;
A beiratkozás folyamán létre kell hozni az olvasó táblában az új olvasót, és a Home IdP-től kapott személyes adatokkal fel kell tölteni az olvasó rekordot.&lt;br /&gt;
&lt;br /&gt;
A “Föderált azonosító” kapcsolótáblában létre kell hozni a könyvtári azonosítót és a föderált azonosítót összerendelő rekordot.&lt;br /&gt;
&lt;br /&gt;
==Kiiratkozás==&lt;br /&gt;
&lt;br /&gt;
Felhasználó kiiratását az OIOSAML.java nem támogatja, az azonosító lejáratásával lehet a felhasználó jogosultságait korlátozni. Tervezésnél meg kell fontolni, hogy egy-egy IdP által azonosított felhasználó beiratásánál mennyi az az idő, amíg az olvasót aktívnak szeretnénk tudni. Megvizsgálva néhány könyvtár Használati szabályzatát a megoldás megfelel az általános gyakorlatnak. A könyvtárak beiratkozáskor kiállított olvasójegyét bizonyos időre szóló érvényességgel (általában 1 év) állítják ki, ha az olvasó ennek elteltével nem hosszabbítja meg olvasójegye érvényességét, az lejár.&lt;br /&gt;
&lt;br /&gt;
==Azonosítás és attribútumok átadása==&lt;br /&gt;
&lt;br /&gt;
A LoginFilter által védett URL-re irányuló kéréskor a SAML Assertion és az általa hordozott attribútumok a dk.itst.oiosaml.sp.UserAssertion objektumból lekérdezhetőek. Ezen objektum csak a védett URL-eken érhető el a dk.itst.oiosaml.sp.UserAssertionHolder.get() metódus meghívásával.&lt;br /&gt;
&lt;br /&gt;
Ha csak a login funkciót védjük SAML SP-vel, érdemes a user session-be átmenteni a szükséges attribútumokat, ha azokat más funkciókkal is el kell érni.&lt;br /&gt;
&lt;br /&gt;
Attribútum mappingről igény szerint a fejlesztés során kell gondoskodnunk, az OIOSAML.java nem támogat ilyen funkciót.&lt;br /&gt;
&lt;br /&gt;
Példa az eduPersonPrincipalName attribútum kinyeréséről:&lt;br /&gt;
&lt;br /&gt;
 UserAssertion ua = UserAssertionHolder.get();&lt;br /&gt;
 String eppn = ua.getAttribute(“urn:oid:1.3.6.1.4.1.5923.1.1.1.6 ”);&lt;br /&gt;
&lt;br /&gt;
A rendszerfejlesztéshez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/developers.html]&lt;br /&gt;
&lt;br /&gt;
==Attribútumok frissítése==&lt;br /&gt;
&lt;br /&gt;
Hogy a könyvtári rendszerben nyilvántartott olvasók adatai naprakészek legyenek, a Home IdP-től származó attribútumokat nem csak a beiratkozáskor, hanem a mindennapi használatkor is igénybe vehetjük.&lt;br /&gt;
&lt;br /&gt;
Az IdP-től kapott attribútumokat a könyvtári alkalmazás ellenőrzi, és ha az adott attribútum még nem szerepel a nyilvántartásában, azt rögzíti.&lt;br /&gt;
&lt;br /&gt;
Az alkalmazás saját szabály-rendszere döntheti el, hogy a meglévő értékeket lecseréli az Home IdP-től kapottal, vagy csak hozzáadja új értékként a már meglévőhöz.&lt;br /&gt;
&lt;br /&gt;
==Kijelentkezés==&lt;br /&gt;
&lt;br /&gt;
===SP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásból történő kijelentkezést a session-változók törlésével kell megoldani, és biztosítani kell a Single Logout folyamat elindítását. Az OIOSAML.java esetében ezt a saml/Logout URL-re történő redirect-tel lehet kezdeményezni.&lt;br /&gt;
&lt;br /&gt;
 HttpSession session = req.getSession(false);&lt;br /&gt;
 res.sendRedirect(&amp;quot;saml/Logout&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
[[Kép:SPinitSLO.png]]&lt;br /&gt;
&lt;br /&gt;
===IdP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Ha a Single Logout-ot a felhasználó egy másik alkalmazásnál kezdeményezte, és kérte, hogy valamennyi aktív alkalmazásból léptesse ki a rendszer, az IdP a könyvtári alkalmazásnak egy Logout Request-et küld a böngésző átirányításának segítségével. A kérésről a SAML SP-n kívül az alkalmazásnak is tudnia kell, hogy a felhasználó session-jén a kilépést érvényre juttassa. Ezt a SAML SP SLO endpoint-jai elé tett filter segítségével lehet a legegyszerűbben végrehajtani.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 LogoutFilter.java&lt;br /&gt;
 &lt;br /&gt;
 import java.io.IOException;&lt;br /&gt;
 import javax.servlet.Filter;&lt;br /&gt;
 import javax.servlet.FilterChain;&lt;br /&gt;
 import javax.servlet.FilterConfig;&lt;br /&gt;
 import javax.servlet.ServletException;&lt;br /&gt;
 import javax.servlet.ServletRequest;&lt;br /&gt;
 import javax.servlet.ServletResponse;&lt;br /&gt;
 import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
 import javax.servlet.http.HttpSession;&lt;br /&gt;
 &lt;br /&gt;
 import org.apache.log4j.Logger;&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 * Servlet Filter implementation class LogoutFilter&lt;br /&gt;
 */&lt;br /&gt;
 public class LogoutFilter implements Filter {  &lt;br /&gt;
 &lt;br /&gt;
    /**&lt;br /&gt;
    * Default constructor.&lt;br /&gt;
    */&lt;br /&gt;
   private static final Logger log = Logger.getLogger(LogoutFilter.class);    &lt;br /&gt;
   &lt;br /&gt;
    public LogoutFilter() {&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#destroy()&lt;br /&gt;
    */&lt;br /&gt;
   public void destroy() {&lt;br /&gt;
   } &lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)&lt;br /&gt;
    */&lt;br /&gt;
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {&lt;br /&gt;
       chain.doFilter(request, response);&lt;br /&gt;
       log.debug(&amp;quot;Enter into LoginFilter&amp;quot;);&lt;br /&gt;
       HttpServletRequest servletRequest = ((HttpServletRequest) request);        &lt;br /&gt;
       HttpSession session = servletRequest.getSession(false);&lt;br /&gt;
       if (session != null){&lt;br /&gt;
           log.debug(&amp;quot;Remove application related session attributes.&amp;quot;);            &lt;br /&gt;
           session.removeAttribute(&amp;quot;aai_auth&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#init(FilterConfig)&lt;br /&gt;
    */&lt;br /&gt;
   public void init(FilterConfig fConfig) throws ServletException {&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
web.xml&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
  &amp;lt;filter&amp;gt;    &lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;LogoutFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirect&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirectResponse&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
=Rendszer architektúra=&lt;br /&gt;
&lt;br /&gt;
==OIOSAML.java, mint SP komponens==&lt;br /&gt;
(OIOSAML 2.0 Toolkit test results dokumentumból érdemes ide tenni vm.-t)&lt;br /&gt;
===Telepítés===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java letöltése után a következő lépésekkel telepíthetjük alkalmazásunkhoz az oiosaml.java SP komponenst:&lt;br /&gt;
&lt;br /&gt;
1. Másoljuk a  lib/* fileokat a könyvtári alkalamzás WEB-INF/lib könyvtárába&lt;br /&gt;
&lt;br /&gt;
2. Egészítsük ki az alkalmazás web.xml leírófile-ját a következőkkel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;context-param&amp;gt;&lt;br /&gt;
    &amp;lt;param-name&amp;gt;oiosaml-j.home&amp;lt;/param-name&amp;gt;&lt;br /&gt;
    &amp;lt;param-value&amp;gt;/path/to/oiosaml.home&amp;lt;/param-value&amp;gt;&lt;br /&gt;
 &amp;lt;/context-param&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-class&amp;gt;dk.itst.oiosaml.sp.service.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;dk.itst.oiosaml.sp.service.SPFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/protected/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A SAMLDispatcherServlet servlet végzi el a SAML-lal kapcsolatos kéréseket, ajánlott a /saml/* URL alá definiálni.&lt;br /&gt;
&lt;br /&gt;
A LoginFilter filter által védett URL-lek (példánkban /protected/*) csak SAML-os azonosítással érhetőek el, ezen URL-ek alatt érhetők el különböző objektumokban TODO a  SAML Assertion-ben átadott attribútumértékek.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a az OIOSAML.java ellenőrzi konfigurációját, és ha a rendszer nincs helyesen konfigurálva, elindul az autoconfig folyamat, ahol a rendszert a webes felületről konfigurálhatjuk. A konfigurációs folyamat végén az SP aláírt meta-adata letölthető.&lt;br /&gt;
&lt;br /&gt;
===Konfiguráció===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java konfigurációja az oiosaml-sp.properties file-ban található.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a következő módosításokat érdemes megtenni a fileban:&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.assurancelevel=0&lt;br /&gt;
&lt;br /&gt;
Az elfogadott azonosítási szintet állíthatjuk itt be. Mivel a föderációban ilyet egyelőre nem használunk, és egyes IdP-k nem támogatják (simpleSAMLphp) ezt az attribútumot, állítsuk 0-ra.&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.uri.home=../&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásunk kezdő lapja. SLO után ide irányítódik át a felhasználó böngészője.&lt;br /&gt;
&lt;br /&gt;
A konfigurációs beállítások teljes dokumentációja az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/configuration.html]&lt;br /&gt;
&lt;br /&gt;
===Meta-adat kezelés===&lt;br /&gt;
&lt;br /&gt;
A SAML SP komponens működéséhez elengedhetetlen, hogy a vele bizalmi szövetségben lévő IdP-k meta-adatait ismerje.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java meta-adatformátumának a legfőbb jellemzője, hogy az egyes entitásokat egyenként külön file-ban kell eltárolni. Az szóban forgó file-okat a metadata/IdP alkönyvtárba kell helyezni XML formátumban, a név-konvenció csak annyit követel meg, hogy .xml-re végződjön a file neve.&lt;br /&gt;
&lt;br /&gt;
Fontos tudni, hogy az OIOSAML.java csak induláskor tölti be a meta-adatokat, így ha azokat változtatjuk, az alkalmazást újra kell indítani, hogy a változtatások érvényre jussanak.&lt;br /&gt;
&lt;br /&gt;
===Discovery Service===&lt;br /&gt;
Ha az SP több IdP-vel is bizalmi szövetséget alkot, szükség van Discovery Service-re is, hogy a felhasználó eldönthesse, melyik IdP-nél kívánja magát azonosítani.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java tartalmaz egy discovery service servlet-et, ami az IdP metadatáiból állít össze egy weboldalt, ahol a felhasználó kiválaszthatja a saját IdP-jét.&lt;br /&gt;
&lt;br /&gt;
Telepítése az oiosaml.java-discovery.*.war file egyszerű deploy-olásával történik, beállításra az oiosaml-sp.properties file oiosaml-sp.discovery.* változók használhatóak.&lt;br /&gt;
&lt;br /&gt;
A discovery service-hez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/discovery.html]&lt;br /&gt;
&lt;br /&gt;
===Metadata frissítés===&lt;br /&gt;
&lt;br /&gt;
A meta-adatok frissítése kapcsán meg kell oldani a HREF letölthető teljes meta-adatának entitásonként külön file-ba történő szétvágását.&lt;br /&gt;
&lt;br /&gt;
Ezt a feladatot a mdsigner-j-cli-2.0-rc2-jar-with-dependencies.jar nevű program végzi el.&lt;br /&gt;
&lt;br /&gt;
Működéséhez szükséges a metadata aláíró root certificate, ezzel lehet ellenőrizni a metadata hitelességét.&lt;br /&gt;
&lt;br /&gt;
A programot célszerű rendszeresen, pl. naponta futtatni, egy külön folyamatban leválogatni a releváns IdP-ket, ellenőrizni a módosulásokat, módosulás esetén frissíteni a SAML SP metadata könyvtárát és újraindítani a webalkalmazást.&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1941</id>
		<title>Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1941"/>
				<updated>2010-09-16T08:39:04Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* Identitások összekapcsolása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Könyvtári alkalmazás használati esetei=&lt;br /&gt;
&lt;br /&gt;
==Könyvtári és föderatív azonosságok==&lt;br /&gt;
&lt;br /&gt;
A könyvtári alkalmazás olvasói nyilvántartásában szereplő és a föderatív azonosítás szolgáltatónál lévő azonosságokat a könyvtári alkalmazásban célszerűen össze kell kapcsolni. Ez az identitás összekapcsolás mindig feltételezi a felhasználó aktív közreműködését, e nélkül az identitások összekapcsolása nem jöhet létre.&lt;br /&gt;
&lt;br /&gt;
Egy föderatív azonosítással elérhető, SP-vel védett Online könyvtári beiratkozás szolgáltatásnál ez egy tájékoztató szöveg megjelenése és tudomásul vétele után történik meg, a már hagyományos módon beiratkozott, az alkalmazás olvasói nyilvántartásában már szereplő olvasók “könyvtári identitását” viszont külön eljárással kell összekapcsolni az IdP által azonosítottakkal.&lt;br /&gt;
&lt;br /&gt;
Ha a  könyvtári alkalmazásban már létezik webes azonosítás, akkor célszerű egy olyan komponenst beilleszteni, ahol a felhasználó mind a könyvtári azonosságát (könyvtári azonosító - jelszó), mind a föderatív azonosságát tudja bizonyítani, és a komponens összeköti a két azonosítót a kapcsoló táblában (account linking). A tájékoztató szöveg megjelenítése és annak elfogadása ekkor&lt;br /&gt;
&lt;br /&gt;
Az MTA SZTAKI könyvtára esetében a felhasználók nem tudtak bejelentkezni a webes felületen, az identitás összekapcsolást segítő kulcs az email cím lehetett, ez alapján az összerendelések nagy tömegét elvégezhettük, a maradék azonosítót pedig kézzel, további adatok összehasonlításával, vagy közvetlenül az olvasó megkeresésével lehetett elvégezni.&lt;br /&gt;
&lt;br /&gt;
===Identitások összekapcsolása===&lt;br /&gt;
&lt;br /&gt;
A könyvtári rendszert fel kell készíteni a szövetségi azonosítás során használt azonosítójukkal érkező felhasználók  fogadására. Ehhez szükség van egy kapcsoló táblára, ahol a könyvtári azonosítót és a föderált azonosítókat tároljuk.ű&lt;br /&gt;
&lt;br /&gt;
[[Kép:Accountlinking.png]]&lt;br /&gt;
&lt;br /&gt;
Bejelentkezés során bármely eduid-vel azonosítja a felhasználót a szóbanforgó Home IdP, az alkalmazás kikeresi a megfelelő könyvtári alkalmazásbeli azonosítót, és a továbbiakban az alkalmazás ezt használja a munkamenet során.&lt;br /&gt;
&lt;br /&gt;
==Beiratkozás==&lt;br /&gt;
&lt;br /&gt;
Ha a felhasználó olyan azonosítóval jön a Home IdP-től, ami nincs egyetlen alkalmazás azonosítóhoz sem kapcsolva, a beiratkozás folyamatát kell végrehajtani.&lt;br /&gt;
&lt;br /&gt;
A beiratkozás folyamán létre kell hozni az olvasó táblában az új olvasót, és a Home IdP-től kapott személyes adatokkal fel kell tölteni az olvasó rekordot.&lt;br /&gt;
&lt;br /&gt;
A “Föderált azonosító” kapcsolótáblában létre kell hozni a könyvtári azonosítót és a föderált azonosítót összerendelő rekordot.&lt;br /&gt;
&lt;br /&gt;
==Kiiratkozás==&lt;br /&gt;
&lt;br /&gt;
Felhasználó kiiratását az OIOSAML.java nem támogatja, az azonosító lejáratásával lehet a felhasználó jogosultságait korlátozni. Tervezésnél meg kell fontolni, hogy egy-egy IdP által azonosított felhasználó beiratásánál mennyi az az idő, amíg az olvasót aktívnak szeretnénk tudni. Megvizsgálva néhány könyvtár Használati szabályzatát a megoldás megfelel az általános gyakorlatnak. A könyvtárak beiratkozáskor kiállított olvasójegyét bizonyos időre szóló érvényességgel (általában 1 év) állítják ki, ha az olvasó ennek elteltével nem hosszabbítja meg olvasójegye érvényességét, az lejár.&lt;br /&gt;
&lt;br /&gt;
==Azonosítás és attribútumok átadása==&lt;br /&gt;
&lt;br /&gt;
A LoginFilter által védett URL-re irányuló kéréskor a SAML Assertion és az általa hordozott attribútumok a dk.itst.oiosaml.sp.UserAssertion objektumból lekérdezhetőek. Ezen objektum csak a védett URL-eken érhető el a dk.itst.oiosaml.sp.UserAssertionHolder.get() metódus meghívásával.&lt;br /&gt;
&lt;br /&gt;
Ha csak a login funkciót védjük SAML SP-vel, érdemes a user session-be átmenteni a szükséges attribútumokat, ha azokat más funkciókkal is el kell érni.&lt;br /&gt;
&lt;br /&gt;
Attribútum mappingről igény szerint a fejlesztés során kell gondoskodnunk, az OIOSAML.java nem támogat ilyen funkciót.&lt;br /&gt;
&lt;br /&gt;
Példa az eduPersonPrincipalName attribútum kinyeréséről:&lt;br /&gt;
&lt;br /&gt;
 UserAssertion ua = UserAssertionHolder.get();&lt;br /&gt;
 String eppn = ua.getAttribute(“urn:oid:1.3.6.1.4.1.5923.1.1.1.6 ”);&lt;br /&gt;
&lt;br /&gt;
A rendszerfejlesztéshez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/developers.html]&lt;br /&gt;
&lt;br /&gt;
==Attribútumok frissítése==&lt;br /&gt;
&lt;br /&gt;
Hogy a könyvtári rendszerben nyilvántartott olvasók adatai naprakészek legyenek, a Home IdP-től származó attribútumokat nem csak a beiratkozáskor, hanem a mindennapi használatkor is igénybe vehetjük.&lt;br /&gt;
&lt;br /&gt;
Az IdP-től kapott attribútumokat a könyvtári alkalmazás ellenőrzi, és ha az adott attribútum még nem szerepel a nyilvántartásában, azt rögzíti.&lt;br /&gt;
&lt;br /&gt;
Az alkalmazás saját szabály-rendszere döntheti el, hogy a meglévő értékeket lecseréli az Home IdP-től kapottal, vagy csak hozzáadja új értékként a már meglévőhöz.&lt;br /&gt;
&lt;br /&gt;
==Kijelentkezés==&lt;br /&gt;
&lt;br /&gt;
===SP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásból történő kijelentkezést a session-változók törlésével kell megoldani, és biztosítani kell a Single Logout folyamat elindítását. Az OIOSAML.java esetében ezt a saml/Logout URL-re történő redirect-tel lehet kezdeményezni.&lt;br /&gt;
&lt;br /&gt;
 HttpSession session = req.getSession(false);&lt;br /&gt;
 res.sendRedirect(&amp;quot;saml/Logout&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===IdP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Ha a Single Logout-ot a felhasználó egy másik alkalmazásnál kezdeményezte, és kérte, hogy valamennyi aktív alkalmazásból léptesse ki a rendszer, az IdP a könyvtári alkalmazásnak egy Logout Request-et küld a böngésző átirányításának segítségével. A kérésről a SAML SP-n kívül az alkalmazásnak is tudnia kell, hogy a felhasználó session-jén a kilépést érvényre juttassa. Ezt a SAML SP SLO endpoint-jai elé tett filter segítségével lehet a legegyszerűbben végrehajtani.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 LogoutFilter.java&lt;br /&gt;
 &lt;br /&gt;
 import java.io.IOException;&lt;br /&gt;
 import javax.servlet.Filter;&lt;br /&gt;
 import javax.servlet.FilterChain;&lt;br /&gt;
 import javax.servlet.FilterConfig;&lt;br /&gt;
 import javax.servlet.ServletException;&lt;br /&gt;
 import javax.servlet.ServletRequest;&lt;br /&gt;
 import javax.servlet.ServletResponse;&lt;br /&gt;
 import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
 import javax.servlet.http.HttpSession;&lt;br /&gt;
 &lt;br /&gt;
 import org.apache.log4j.Logger;&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 * Servlet Filter implementation class LogoutFilter&lt;br /&gt;
 */&lt;br /&gt;
 public class LogoutFilter implements Filter {  &lt;br /&gt;
 &lt;br /&gt;
    /**&lt;br /&gt;
    * Default constructor.&lt;br /&gt;
    */&lt;br /&gt;
   private static final Logger log = Logger.getLogger(LogoutFilter.class);    &lt;br /&gt;
   &lt;br /&gt;
    public LogoutFilter() {&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#destroy()&lt;br /&gt;
    */&lt;br /&gt;
   public void destroy() {&lt;br /&gt;
   } &lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)&lt;br /&gt;
    */&lt;br /&gt;
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {&lt;br /&gt;
       chain.doFilter(request, response);&lt;br /&gt;
       log.debug(&amp;quot;Enter into LoginFilter&amp;quot;);&lt;br /&gt;
       HttpServletRequest servletRequest = ((HttpServletRequest) request);        &lt;br /&gt;
       HttpSession session = servletRequest.getSession(false);&lt;br /&gt;
       if (session != null){&lt;br /&gt;
           log.debug(&amp;quot;Remove application related session attributes.&amp;quot;);            &lt;br /&gt;
           session.removeAttribute(&amp;quot;aai_auth&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#init(FilterConfig)&lt;br /&gt;
    */&lt;br /&gt;
   public void init(FilterConfig fConfig) throws ServletException {&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
web.xml&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
  &amp;lt;filter&amp;gt;    &lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;LogoutFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirect&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirectResponse&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
=Rendszer architektúra=&lt;br /&gt;
&lt;br /&gt;
==OIOSAML.java, mint SP komponens==&lt;br /&gt;
(OIOSAML 2.0 Toolkit test results dokumentumból érdemes ide tenni vm.-t)&lt;br /&gt;
===Telepítés===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java letöltése után a következő lépésekkel telepíthetjük alkalmazásunkhoz az oiosaml.java SP komponenst:&lt;br /&gt;
&lt;br /&gt;
1. Másoljuk a  lib/* fileokat a könyvtári alkalamzás WEB-INF/lib könyvtárába&lt;br /&gt;
&lt;br /&gt;
2. Egészítsük ki az alkalmazás web.xml leírófile-ját a következőkkel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;context-param&amp;gt;&lt;br /&gt;
    &amp;lt;param-name&amp;gt;oiosaml-j.home&amp;lt;/param-name&amp;gt;&lt;br /&gt;
    &amp;lt;param-value&amp;gt;/path/to/oiosaml.home&amp;lt;/param-value&amp;gt;&lt;br /&gt;
 &amp;lt;/context-param&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-class&amp;gt;dk.itst.oiosaml.sp.service.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;dk.itst.oiosaml.sp.service.SPFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/protected/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A SAMLDispatcherServlet servlet végzi el a SAML-lal kapcsolatos kéréseket, ajánlott a /saml/* URL alá definiálni.&lt;br /&gt;
&lt;br /&gt;
A LoginFilter filter által védett URL-lek (példánkban /protected/*) csak SAML-os azonosítással érhetőek el, ezen URL-ek alatt érhetők el különböző objektumokban TODO a  SAML Assertion-ben átadott attribútumértékek.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a az OIOSAML.java ellenőrzi konfigurációját, és ha a rendszer nincs helyesen konfigurálva, elindul az autoconfig folyamat, ahol a rendszert a webes felületről konfigurálhatjuk. A konfigurációs folyamat végén az SP aláírt meta-adata letölthető.&lt;br /&gt;
&lt;br /&gt;
===Konfiguráció===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java konfigurációja az oiosaml-sp.properties file-ban található.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a következő módosításokat érdemes megtenni a fileban:&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.assurancelevel=0&lt;br /&gt;
&lt;br /&gt;
Az elfogadott azonosítási szintet állíthatjuk itt be. Mivel a föderációban ilyet egyelőre nem használunk, és egyes IdP-k nem támogatják (simpleSAMLphp) ezt az attribútumot, állítsuk 0-ra.&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.uri.home=../&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásunk kezdő lapja. SLO után ide irányítódik át a felhasználó böngészője.&lt;br /&gt;
&lt;br /&gt;
A konfigurációs beállítások teljes dokumentációja az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/configuration.html]&lt;br /&gt;
&lt;br /&gt;
===Meta-adat kezelés===&lt;br /&gt;
&lt;br /&gt;
A SAML SP komponens működéséhez elengedhetetlen, hogy a vele bizalmi szövetségben lévő IdP-k meta-adatait ismerje.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java meta-adatformátumának a legfőbb jellemzője, hogy az egyes entitásokat egyenként külön file-ban kell eltárolni. Az szóban forgó file-okat a metadata/IdP alkönyvtárba kell helyezni XML formátumban, a név-konvenció csak annyit követel meg, hogy .xml-re végződjön a file neve.&lt;br /&gt;
&lt;br /&gt;
Fontos tudni, hogy az OIOSAML.java csak induláskor tölti be a meta-adatokat, így ha azokat változtatjuk, az alkalmazást újra kell indítani, hogy a változtatások érvényre jussanak.&lt;br /&gt;
&lt;br /&gt;
===Discovery Service===&lt;br /&gt;
Ha az SP több IdP-vel is bizalmi szövetséget alkot, szükség van Discovery Service-re is, hogy a felhasználó eldönthesse, melyik IdP-nél kívánja magát azonosítani.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java tartalmaz egy discovery service servlet-et, ami az IdP metadatáiból állít össze egy weboldalt, ahol a felhasználó kiválaszthatja a saját IdP-jét.&lt;br /&gt;
&lt;br /&gt;
Telepítése az oiosaml.java-discovery.*.war file egyszerű deploy-olásával történik, beállításra az oiosaml-sp.properties file oiosaml-sp.discovery.* változók használhatóak.&lt;br /&gt;
&lt;br /&gt;
A discovery service-hez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/discovery.html]&lt;br /&gt;
&lt;br /&gt;
===Metadata frissítés===&lt;br /&gt;
&lt;br /&gt;
A meta-adatok frissítése kapcsán meg kell oldani a HREF letölthető teljes meta-adatának entitásonként külön file-ba történő szétvágását.&lt;br /&gt;
&lt;br /&gt;
Ezt a feladatot a mdsigner-j-cli-2.0-rc2-jar-with-dependencies.jar nevű program végzi el.&lt;br /&gt;
&lt;br /&gt;
Működéséhez szükséges a metadata aláíró root certificate, ezzel lehet ellenőrizni a metadata hitelességét.&lt;br /&gt;
&lt;br /&gt;
A programot célszerű rendszeresen, pl. naponta futtatni, egy külön folyamatban leválogatni a releváns IdP-ket, ellenőrizni a módosulásokat, módosulás esetén frissíteni a SAML SP metadata könyvtárát és újraindítani a webalkalmazást.&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=F%C3%A1jl:Accountlinking.png&amp;diff=1940</id>
		<title>Fájl:Accountlinking.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=F%C3%A1jl:Accountlinking.png&amp;diff=1940"/>
				<updated>2010-09-16T08:38:34Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1938</id>
		<title>Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1938"/>
				<updated>2010-09-16T08:03:41Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* Identitások összekapcsolása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Könyvtári alkalmazás használati esetei=&lt;br /&gt;
&lt;br /&gt;
==Könyvtári és föderatív azonosságok==&lt;br /&gt;
&lt;br /&gt;
A könyvtári alkalmazás olvasói nyilvántartásában szereplő és a föderatív azonosítás szolgáltatónál lévő azonosságokat a könyvtári alkalmazásban célszerűen össze kell kapcsolni. Ez az identitás összekapcsolás mindig feltételezi a felhasználó aktív közreműködését, e nélkül az identitások összekapcsolása nem jöhet létre.&lt;br /&gt;
&lt;br /&gt;
Egy föderatív azonosítással elérhető, SP-vel védett Online könyvtári beiratkozás szolgáltatásnál ez egy tájékoztató szöveg megjelenése és tudomásul vétele után történik meg, a már hagyományos módon beiratkozott, az alkalmazás olvasói nyilvántartásában már szereplő olvasók “könyvtári identitását” viszont külön eljárással kell összekapcsolni az IdP által azonosítottakkal.&lt;br /&gt;
&lt;br /&gt;
Ha a  könyvtári alkalmazásban már létezik webes azonosítás, akkor célszerű egy olyan komponenst beilleszteni, ahol a felhasználó mind a könyvtári azonosságát (könyvtári azonosító - jelszó), mind a föderatív azonosságát tudja bizonyítani, és a komponens összeköti a két azonosítót a kapcsoló táblában (account linking). A tájékoztató szöveg megjelenítése és annak elfogadása ekkor&lt;br /&gt;
&lt;br /&gt;
Az MTA SZTAKI könyvtára esetében a felhasználók nem tudtak bejelentkezni a webes felületen, az identitás összekapcsolást segítő kulcs az email cím lehetett, ez alapján az összerendelések nagy tömegét elvégezhettük, a maradék azonosítót pedig kézzel, további adatok összehasonlításával, vagy közvetlenül az olvasó megkeresésével lehetett elvégezni.&lt;br /&gt;
&lt;br /&gt;
===Identitások összekapcsolása===&lt;br /&gt;
&lt;br /&gt;
A könyvtári rendszert fel kell készíteni a szövetségi azonosítás során használt azonosítójukkal érkező felhasználók  fogadására. Ehhez szükség van egy kapcsoló táblára, ahol a könyvtári azonosítót és a föderált azonosítókat tároljuk.ű&lt;br /&gt;
&lt;br /&gt;
[[Kép:accountlinking]]&lt;br /&gt;
&lt;br /&gt;
Bejelentkezés során bármely eduid-vel azonosítja a felhasználót a szóbanforgó Home IdP, az alkalmazás kikeresi a megfelelő könyvtári alkalmazásbeli azonosítót, és a továbbiakban az alkalmazás ezt használja a munkamenet során.&lt;br /&gt;
&lt;br /&gt;
==Beiratkozás==&lt;br /&gt;
&lt;br /&gt;
Ha a felhasználó olyan azonosítóval jön a Home IdP-től, ami nincs egyetlen alkalmazás azonosítóhoz sem kapcsolva, a beiratkozás folyamatát kell végrehajtani.&lt;br /&gt;
&lt;br /&gt;
A beiratkozás folyamán létre kell hozni az olvasó táblában az új olvasót, és a Home IdP-től kapott személyes adatokkal fel kell tölteni az olvasó rekordot.&lt;br /&gt;
&lt;br /&gt;
A “Föderált azonosító” kapcsolótáblában létre kell hozni a könyvtári azonosítót és a föderált azonosítót összerendelő rekordot.&lt;br /&gt;
&lt;br /&gt;
==Kiiratkozás==&lt;br /&gt;
&lt;br /&gt;
Felhasználó kiiratását az OIOSAML.java nem támogatja, az azonosító lejáratásával lehet a felhasználó jogosultságait korlátozni. Tervezésnél meg kell fontolni, hogy egy-egy IdP által azonosított felhasználó beiratásánál mennyi az az idő, amíg az olvasót aktívnak szeretnénk tudni. Megvizsgálva néhány könyvtár Használati szabályzatát a megoldás megfelel az általános gyakorlatnak. A könyvtárak beiratkozáskor kiállított olvasójegyét bizonyos időre szóló érvényességgel (általában 1 év) állítják ki, ha az olvasó ennek elteltével nem hosszabbítja meg olvasójegye érvényességét, az lejár.&lt;br /&gt;
&lt;br /&gt;
==Azonosítás és attribútumok átadása==&lt;br /&gt;
&lt;br /&gt;
A LoginFilter által védett URL-re irányuló kéréskor a SAML Assertion és az általa hordozott attribútumok a dk.itst.oiosaml.sp.UserAssertion objektumból lekérdezhetőek. Ezen objektum csak a védett URL-eken érhető el a dk.itst.oiosaml.sp.UserAssertionHolder.get() metódus meghívásával.&lt;br /&gt;
&lt;br /&gt;
Ha csak a login funkciót védjük SAML SP-vel, érdemes a user session-be átmenteni a szükséges attribútumokat, ha azokat más funkciókkal is el kell érni.&lt;br /&gt;
&lt;br /&gt;
Attribútum mappingről igény szerint a fejlesztés során kell gondoskodnunk, az OIOSAML.java nem támogat ilyen funkciót.&lt;br /&gt;
&lt;br /&gt;
Példa az eduPersonPrincipalName attribútum kinyeréséről:&lt;br /&gt;
&lt;br /&gt;
 UserAssertion ua = UserAssertionHolder.get();&lt;br /&gt;
 String eppn = ua.getAttribute(“urn:oid:1.3.6.1.4.1.5923.1.1.1.6 ”);&lt;br /&gt;
&lt;br /&gt;
A rendszerfejlesztéshez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/developers.html]&lt;br /&gt;
&lt;br /&gt;
==Attribútumok frissítése==&lt;br /&gt;
&lt;br /&gt;
Hogy a könyvtári rendszerben nyilvántartott olvasók adatai naprakészek legyenek, a Home IdP-től származó attribútumokat nem csak a beiratkozáskor, hanem a mindennapi használatkor is igénybe vehetjük.&lt;br /&gt;
&lt;br /&gt;
Az IdP-től kapott attribútumokat a könyvtári alkalmazás ellenőrzi, és ha az adott attribútum még nem szerepel a nyilvántartásában, azt rögzíti.&lt;br /&gt;
&lt;br /&gt;
Az alkalmazás saját szabály-rendszere döntheti el, hogy a meglévő értékeket lecseréli az Home IdP-től kapottal, vagy csak hozzáadja új értékként a már meglévőhöz.&lt;br /&gt;
&lt;br /&gt;
==Kijelentkezés==&lt;br /&gt;
&lt;br /&gt;
===SP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásból történő kijelentkezést a session-változók törlésével kell megoldani, és biztosítani kell a Single Logout folyamat elindítását. Az OIOSAML.java esetében ezt a saml/Logout URL-re történő redirect-tel lehet kezdeményezni.&lt;br /&gt;
&lt;br /&gt;
 HttpSession session = req.getSession(false);&lt;br /&gt;
 res.sendRedirect(&amp;quot;saml/Logout&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===IdP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Ha a Single Logout-ot a felhasználó egy másik alkalmazásnál kezdeményezte, és kérte, hogy valamennyi aktív alkalmazásból léptesse ki a rendszer, az IdP a könyvtári alkalmazásnak egy Logout Request-et küld a böngésző átirányításának segítségével. A kérésről a SAML SP-n kívül az alkalmazásnak is tudnia kell, hogy a felhasználó session-jén a kilépést érvényre juttassa. Ezt a SAML SP SLO endpoint-jai elé tett filter segítségével lehet a legegyszerűbben végrehajtani.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 LogoutFilter.java&lt;br /&gt;
 &lt;br /&gt;
 import java.io.IOException;&lt;br /&gt;
 import javax.servlet.Filter;&lt;br /&gt;
 import javax.servlet.FilterChain;&lt;br /&gt;
 import javax.servlet.FilterConfig;&lt;br /&gt;
 import javax.servlet.ServletException;&lt;br /&gt;
 import javax.servlet.ServletRequest;&lt;br /&gt;
 import javax.servlet.ServletResponse;&lt;br /&gt;
 import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
 import javax.servlet.http.HttpSession;&lt;br /&gt;
 &lt;br /&gt;
 import org.apache.log4j.Logger;&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 * Servlet Filter implementation class LogoutFilter&lt;br /&gt;
 */&lt;br /&gt;
 public class LogoutFilter implements Filter {  &lt;br /&gt;
 &lt;br /&gt;
    /**&lt;br /&gt;
    * Default constructor.&lt;br /&gt;
    */&lt;br /&gt;
   private static final Logger log = Logger.getLogger(LogoutFilter.class);    &lt;br /&gt;
   &lt;br /&gt;
    public LogoutFilter() {&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#destroy()&lt;br /&gt;
    */&lt;br /&gt;
   public void destroy() {&lt;br /&gt;
   } &lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)&lt;br /&gt;
    */&lt;br /&gt;
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {&lt;br /&gt;
       chain.doFilter(request, response);&lt;br /&gt;
       log.debug(&amp;quot;Enter into LoginFilter&amp;quot;);&lt;br /&gt;
       HttpServletRequest servletRequest = ((HttpServletRequest) request);        &lt;br /&gt;
       HttpSession session = servletRequest.getSession(false);&lt;br /&gt;
       if (session != null){&lt;br /&gt;
           log.debug(&amp;quot;Remove application related session attributes.&amp;quot;);            &lt;br /&gt;
           session.removeAttribute(&amp;quot;aai_auth&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#init(FilterConfig)&lt;br /&gt;
    */&lt;br /&gt;
   public void init(FilterConfig fConfig) throws ServletException {&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
web.xml&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
  &amp;lt;filter&amp;gt;    &lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;LogoutFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirect&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirectResponse&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
=Rendszer architektúra=&lt;br /&gt;
&lt;br /&gt;
==OIOSAML.java, mint SP komponens==&lt;br /&gt;
(OIOSAML 2.0 Toolkit test results dokumentumból érdemes ide tenni vm.-t)&lt;br /&gt;
===Telepítés===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java letöltése után a következő lépésekkel telepíthetjük alkalmazásunkhoz az oiosaml.java SP komponenst:&lt;br /&gt;
&lt;br /&gt;
1. Másoljuk a  lib/* fileokat a könyvtári alkalamzás WEB-INF/lib könyvtárába&lt;br /&gt;
&lt;br /&gt;
2. Egészítsük ki az alkalmazás web.xml leírófile-ját a következőkkel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;context-param&amp;gt;&lt;br /&gt;
    &amp;lt;param-name&amp;gt;oiosaml-j.home&amp;lt;/param-name&amp;gt;&lt;br /&gt;
    &amp;lt;param-value&amp;gt;/path/to/oiosaml.home&amp;lt;/param-value&amp;gt;&lt;br /&gt;
 &amp;lt;/context-param&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-class&amp;gt;dk.itst.oiosaml.sp.service.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;dk.itst.oiosaml.sp.service.SPFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/protected/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A SAMLDispatcherServlet servlet végzi el a SAML-lal kapcsolatos kéréseket, ajánlott a /saml/* URL alá definiálni.&lt;br /&gt;
&lt;br /&gt;
A LoginFilter filter által védett URL-lek (példánkban /protected/*) csak SAML-os azonosítással érhetőek el, ezen URL-ek alatt érhetők el különböző objektumokban TODO a  SAML Assertion-ben átadott attribútumértékek.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a az OIOSAML.java ellenőrzi konfigurációját, és ha a rendszer nincs helyesen konfigurálva, elindul az autoconfig folyamat, ahol a rendszert a webes felületről konfigurálhatjuk. A konfigurációs folyamat végén az SP aláírt meta-adata letölthető.&lt;br /&gt;
&lt;br /&gt;
===Konfiguráció===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java konfigurációja az oiosaml-sp.properties file-ban található.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a következő módosításokat érdemes megtenni a fileban:&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.assurancelevel=0&lt;br /&gt;
&lt;br /&gt;
Az elfogadott azonosítási szintet állíthatjuk itt be. Mivel a föderációban ilyet egyelőre nem használunk, és egyes IdP-k nem támogatják (simpleSAMLphp) ezt az attribútumot, állítsuk 0-ra.&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.uri.home=../&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásunk kezdő lapja. SLO után ide irányítódik át a felhasználó böngészője.&lt;br /&gt;
&lt;br /&gt;
A konfigurációs beállítások teljes dokumentációja az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/configuration.html]&lt;br /&gt;
&lt;br /&gt;
===Meta-adat kezelés===&lt;br /&gt;
&lt;br /&gt;
A SAML SP komponens működéséhez elengedhetetlen, hogy a vele bizalmi szövetségben lévő IdP-k meta-adatait ismerje.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java meta-adatformátumának a legfőbb jellemzője, hogy az egyes entitásokat egyenként külön file-ban kell eltárolni. Az szóban forgó file-okat a metadata/IdP alkönyvtárba kell helyezni XML formátumban, a név-konvenció csak annyit követel meg, hogy .xml-re végződjön a file neve.&lt;br /&gt;
&lt;br /&gt;
Fontos tudni, hogy az OIOSAML.java csak induláskor tölti be a meta-adatokat, így ha azokat változtatjuk, az alkalmazást újra kell indítani, hogy a változtatások érvényre jussanak.&lt;br /&gt;
&lt;br /&gt;
===Discovery Service===&lt;br /&gt;
Ha az SP több IdP-vel is bizalmi szövetséget alkot, szükség van Discovery Service-re is, hogy a felhasználó eldönthesse, melyik IdP-nél kívánja magát azonosítani.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java tartalmaz egy discovery service servlet-et, ami az IdP metadatáiból állít össze egy weboldalt, ahol a felhasználó kiválaszthatja a saját IdP-jét.&lt;br /&gt;
&lt;br /&gt;
Telepítése az oiosaml.java-discovery.*.war file egyszerű deploy-olásával történik, beállításra az oiosaml-sp.properties file oiosaml-sp.discovery.* változók használhatóak.&lt;br /&gt;
&lt;br /&gt;
A discovery service-hez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/discovery.html]&lt;br /&gt;
&lt;br /&gt;
===Metadata frissítés===&lt;br /&gt;
&lt;br /&gt;
A meta-adatok frissítése kapcsán meg kell oldani a HREF letölthető teljes meta-adatának entitásonként külön file-ba történő szétvágását.&lt;br /&gt;
&lt;br /&gt;
Ezt a feladatot a mdsigner-j-cli-2.0-rc2-jar-with-dependencies.jar nevű program végzi el.&lt;br /&gt;
&lt;br /&gt;
Működéséhez szükséges a metadata aláíró root certificate, ezzel lehet ellenőrizni a metadata hitelességét.&lt;br /&gt;
&lt;br /&gt;
A programot célszerű rendszeresen, pl. naponta futtatni, egy külön folyamatban leválogatni a releváns IdP-ket, ellenőrizni a módosulásokat, módosulás esetén frissíteni a SAML SP metadata könyvtárát és újraindítani a webalkalmazást.&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1937</id>
		<title>Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1937"/>
				<updated>2010-09-16T08:03:27Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* Identitások összekapcsolása */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Könyvtári alkalmazás használati esetei=&lt;br /&gt;
&lt;br /&gt;
==Könyvtári és föderatív azonosságok==&lt;br /&gt;
&lt;br /&gt;
A könyvtári alkalmazás olvasói nyilvántartásában szereplő és a föderatív azonosítás szolgáltatónál lévő azonosságokat a könyvtári alkalmazásban célszerűen össze kell kapcsolni. Ez az identitás összekapcsolás mindig feltételezi a felhasználó aktív közreműködését, e nélkül az identitások összekapcsolása nem jöhet létre.&lt;br /&gt;
&lt;br /&gt;
Egy föderatív azonosítással elérhető, SP-vel védett Online könyvtári beiratkozás szolgáltatásnál ez egy tájékoztató szöveg megjelenése és tudomásul vétele után történik meg, a már hagyományos módon beiratkozott, az alkalmazás olvasói nyilvántartásában már szereplő olvasók “könyvtári identitását” viszont külön eljárással kell összekapcsolni az IdP által azonosítottakkal.&lt;br /&gt;
&lt;br /&gt;
Ha a  könyvtári alkalmazásban már létezik webes azonosítás, akkor célszerű egy olyan komponenst beilleszteni, ahol a felhasználó mind a könyvtári azonosságát (könyvtári azonosító - jelszó), mind a föderatív azonosságát tudja bizonyítani, és a komponens összeköti a két azonosítót a kapcsoló táblában (account linking). A tájékoztató szöveg megjelenítése és annak elfogadása ekkor&lt;br /&gt;
&lt;br /&gt;
Az MTA SZTAKI könyvtára esetében a felhasználók nem tudtak bejelentkezni a webes felületen, az identitás összekapcsolást segítő kulcs az email cím lehetett, ez alapján az összerendelések nagy tömegét elvégezhettük, a maradék azonosítót pedig kézzel, további adatok összehasonlításával, vagy közvetlenül az olvasó megkeresésével lehetett elvégezni.&lt;br /&gt;
&lt;br /&gt;
===Identitások összekapcsolása===&lt;br /&gt;
&lt;br /&gt;
A könyvtári rendszert fel kell készíteni a szövetségi azonosítás során használt azonosítójukkal érkező felhasználók  fogadására. Ehhez szükség van egy kapcsoló táblára, ahol a könyvtári azonosítót és a föderált azonosítókat tároljuk.ű&lt;br /&gt;
&lt;br /&gt;
[Kép:accountlinking]&lt;br /&gt;
&lt;br /&gt;
Bejelentkezés során bármely eduid-vel azonosítja a felhasználót a szóbanforgó Home IdP, az alkalmazás kikeresi a megfelelő könyvtári alkalmazásbeli azonosítót, és a továbbiakban az alkalmazás ezt használja a munkamenet során.&lt;br /&gt;
&lt;br /&gt;
==Beiratkozás==&lt;br /&gt;
&lt;br /&gt;
Ha a felhasználó olyan azonosítóval jön a Home IdP-től, ami nincs egyetlen alkalmazás azonosítóhoz sem kapcsolva, a beiratkozás folyamatát kell végrehajtani.&lt;br /&gt;
&lt;br /&gt;
A beiratkozás folyamán létre kell hozni az olvasó táblában az új olvasót, és a Home IdP-től kapott személyes adatokkal fel kell tölteni az olvasó rekordot.&lt;br /&gt;
&lt;br /&gt;
A “Föderált azonosító” kapcsolótáblában létre kell hozni a könyvtári azonosítót és a föderált azonosítót összerendelő rekordot.&lt;br /&gt;
&lt;br /&gt;
==Kiiratkozás==&lt;br /&gt;
&lt;br /&gt;
Felhasználó kiiratását az OIOSAML.java nem támogatja, az azonosító lejáratásával lehet a felhasználó jogosultságait korlátozni. Tervezésnél meg kell fontolni, hogy egy-egy IdP által azonosított felhasználó beiratásánál mennyi az az idő, amíg az olvasót aktívnak szeretnénk tudni. Megvizsgálva néhány könyvtár Használati szabályzatát a megoldás megfelel az általános gyakorlatnak. A könyvtárak beiratkozáskor kiállított olvasójegyét bizonyos időre szóló érvényességgel (általában 1 év) állítják ki, ha az olvasó ennek elteltével nem hosszabbítja meg olvasójegye érvényességét, az lejár.&lt;br /&gt;
&lt;br /&gt;
==Azonosítás és attribútumok átadása==&lt;br /&gt;
&lt;br /&gt;
A LoginFilter által védett URL-re irányuló kéréskor a SAML Assertion és az általa hordozott attribútumok a dk.itst.oiosaml.sp.UserAssertion objektumból lekérdezhetőek. Ezen objektum csak a védett URL-eken érhető el a dk.itst.oiosaml.sp.UserAssertionHolder.get() metódus meghívásával.&lt;br /&gt;
&lt;br /&gt;
Ha csak a login funkciót védjük SAML SP-vel, érdemes a user session-be átmenteni a szükséges attribútumokat, ha azokat más funkciókkal is el kell érni.&lt;br /&gt;
&lt;br /&gt;
Attribútum mappingről igény szerint a fejlesztés során kell gondoskodnunk, az OIOSAML.java nem támogat ilyen funkciót.&lt;br /&gt;
&lt;br /&gt;
Példa az eduPersonPrincipalName attribútum kinyeréséről:&lt;br /&gt;
&lt;br /&gt;
 UserAssertion ua = UserAssertionHolder.get();&lt;br /&gt;
 String eppn = ua.getAttribute(“urn:oid:1.3.6.1.4.1.5923.1.1.1.6 ”);&lt;br /&gt;
&lt;br /&gt;
A rendszerfejlesztéshez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/developers.html]&lt;br /&gt;
&lt;br /&gt;
==Attribútumok frissítése==&lt;br /&gt;
&lt;br /&gt;
Hogy a könyvtári rendszerben nyilvántartott olvasók adatai naprakészek legyenek, a Home IdP-től származó attribútumokat nem csak a beiratkozáskor, hanem a mindennapi használatkor is igénybe vehetjük.&lt;br /&gt;
&lt;br /&gt;
Az IdP-től kapott attribútumokat a könyvtári alkalmazás ellenőrzi, és ha az adott attribútum még nem szerepel a nyilvántartásában, azt rögzíti.&lt;br /&gt;
&lt;br /&gt;
Az alkalmazás saját szabály-rendszere döntheti el, hogy a meglévő értékeket lecseréli az Home IdP-től kapottal, vagy csak hozzáadja új értékként a már meglévőhöz.&lt;br /&gt;
&lt;br /&gt;
==Kijelentkezés==&lt;br /&gt;
&lt;br /&gt;
===SP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásból történő kijelentkezést a session-változók törlésével kell megoldani, és biztosítani kell a Single Logout folyamat elindítását. Az OIOSAML.java esetében ezt a saml/Logout URL-re történő redirect-tel lehet kezdeményezni.&lt;br /&gt;
&lt;br /&gt;
 HttpSession session = req.getSession(false);&lt;br /&gt;
 res.sendRedirect(&amp;quot;saml/Logout&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===IdP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Ha a Single Logout-ot a felhasználó egy másik alkalmazásnál kezdeményezte, és kérte, hogy valamennyi aktív alkalmazásból léptesse ki a rendszer, az IdP a könyvtári alkalmazásnak egy Logout Request-et küld a böngésző átirányításának segítségével. A kérésről a SAML SP-n kívül az alkalmazásnak is tudnia kell, hogy a felhasználó session-jén a kilépést érvényre juttassa. Ezt a SAML SP SLO endpoint-jai elé tett filter segítségével lehet a legegyszerűbben végrehajtani.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 LogoutFilter.java&lt;br /&gt;
 &lt;br /&gt;
 import java.io.IOException;&lt;br /&gt;
 import javax.servlet.Filter;&lt;br /&gt;
 import javax.servlet.FilterChain;&lt;br /&gt;
 import javax.servlet.FilterConfig;&lt;br /&gt;
 import javax.servlet.ServletException;&lt;br /&gt;
 import javax.servlet.ServletRequest;&lt;br /&gt;
 import javax.servlet.ServletResponse;&lt;br /&gt;
 import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
 import javax.servlet.http.HttpSession;&lt;br /&gt;
 &lt;br /&gt;
 import org.apache.log4j.Logger;&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 * Servlet Filter implementation class LogoutFilter&lt;br /&gt;
 */&lt;br /&gt;
 public class LogoutFilter implements Filter {  &lt;br /&gt;
 &lt;br /&gt;
    /**&lt;br /&gt;
    * Default constructor.&lt;br /&gt;
    */&lt;br /&gt;
   private static final Logger log = Logger.getLogger(LogoutFilter.class);    &lt;br /&gt;
   &lt;br /&gt;
    public LogoutFilter() {&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#destroy()&lt;br /&gt;
    */&lt;br /&gt;
   public void destroy() {&lt;br /&gt;
   } &lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)&lt;br /&gt;
    */&lt;br /&gt;
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {&lt;br /&gt;
       chain.doFilter(request, response);&lt;br /&gt;
       log.debug(&amp;quot;Enter into LoginFilter&amp;quot;);&lt;br /&gt;
       HttpServletRequest servletRequest = ((HttpServletRequest) request);        &lt;br /&gt;
       HttpSession session = servletRequest.getSession(false);&lt;br /&gt;
       if (session != null){&lt;br /&gt;
           log.debug(&amp;quot;Remove application related session attributes.&amp;quot;);            &lt;br /&gt;
           session.removeAttribute(&amp;quot;aai_auth&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#init(FilterConfig)&lt;br /&gt;
    */&lt;br /&gt;
   public void init(FilterConfig fConfig) throws ServletException {&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
web.xml&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
  &amp;lt;filter&amp;gt;    &lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;LogoutFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirect&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirectResponse&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
=Rendszer architektúra=&lt;br /&gt;
&lt;br /&gt;
==OIOSAML.java, mint SP komponens==&lt;br /&gt;
(OIOSAML 2.0 Toolkit test results dokumentumból érdemes ide tenni vm.-t)&lt;br /&gt;
===Telepítés===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java letöltése után a következő lépésekkel telepíthetjük alkalmazásunkhoz az oiosaml.java SP komponenst:&lt;br /&gt;
&lt;br /&gt;
1. Másoljuk a  lib/* fileokat a könyvtári alkalamzás WEB-INF/lib könyvtárába&lt;br /&gt;
&lt;br /&gt;
2. Egészítsük ki az alkalmazás web.xml leírófile-ját a következőkkel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;context-param&amp;gt;&lt;br /&gt;
    &amp;lt;param-name&amp;gt;oiosaml-j.home&amp;lt;/param-name&amp;gt;&lt;br /&gt;
    &amp;lt;param-value&amp;gt;/path/to/oiosaml.home&amp;lt;/param-value&amp;gt;&lt;br /&gt;
 &amp;lt;/context-param&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-class&amp;gt;dk.itst.oiosaml.sp.service.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;dk.itst.oiosaml.sp.service.SPFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/protected/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A SAMLDispatcherServlet servlet végzi el a SAML-lal kapcsolatos kéréseket, ajánlott a /saml/* URL alá definiálni.&lt;br /&gt;
&lt;br /&gt;
A LoginFilter filter által védett URL-lek (példánkban /protected/*) csak SAML-os azonosítással érhetőek el, ezen URL-ek alatt érhetők el különböző objektumokban TODO a  SAML Assertion-ben átadott attribútumértékek.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a az OIOSAML.java ellenőrzi konfigurációját, és ha a rendszer nincs helyesen konfigurálva, elindul az autoconfig folyamat, ahol a rendszert a webes felületről konfigurálhatjuk. A konfigurációs folyamat végén az SP aláírt meta-adata letölthető.&lt;br /&gt;
&lt;br /&gt;
===Konfiguráció===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java konfigurációja az oiosaml-sp.properties file-ban található.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a következő módosításokat érdemes megtenni a fileban:&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.assurancelevel=0&lt;br /&gt;
&lt;br /&gt;
Az elfogadott azonosítási szintet állíthatjuk itt be. Mivel a föderációban ilyet egyelőre nem használunk, és egyes IdP-k nem támogatják (simpleSAMLphp) ezt az attribútumot, állítsuk 0-ra.&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.uri.home=../&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásunk kezdő lapja. SLO után ide irányítódik át a felhasználó böngészője.&lt;br /&gt;
&lt;br /&gt;
A konfigurációs beállítások teljes dokumentációja az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/configuration.html]&lt;br /&gt;
&lt;br /&gt;
===Meta-adat kezelés===&lt;br /&gt;
&lt;br /&gt;
A SAML SP komponens működéséhez elengedhetetlen, hogy a vele bizalmi szövetségben lévő IdP-k meta-adatait ismerje.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java meta-adatformátumának a legfőbb jellemzője, hogy az egyes entitásokat egyenként külön file-ban kell eltárolni. Az szóban forgó file-okat a metadata/IdP alkönyvtárba kell helyezni XML formátumban, a név-konvenció csak annyit követel meg, hogy .xml-re végződjön a file neve.&lt;br /&gt;
&lt;br /&gt;
Fontos tudni, hogy az OIOSAML.java csak induláskor tölti be a meta-adatokat, így ha azokat változtatjuk, az alkalmazást újra kell indítani, hogy a változtatások érvényre jussanak.&lt;br /&gt;
&lt;br /&gt;
===Discovery Service===&lt;br /&gt;
Ha az SP több IdP-vel is bizalmi szövetséget alkot, szükség van Discovery Service-re is, hogy a felhasználó eldönthesse, melyik IdP-nél kívánja magát azonosítani.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java tartalmaz egy discovery service servlet-et, ami az IdP metadatáiból állít össze egy weboldalt, ahol a felhasználó kiválaszthatja a saját IdP-jét.&lt;br /&gt;
&lt;br /&gt;
Telepítése az oiosaml.java-discovery.*.war file egyszerű deploy-olásával történik, beállításra az oiosaml-sp.properties file oiosaml-sp.discovery.* változók használhatóak.&lt;br /&gt;
&lt;br /&gt;
A discovery service-hez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/discovery.html]&lt;br /&gt;
&lt;br /&gt;
===Metadata frissítés===&lt;br /&gt;
&lt;br /&gt;
A meta-adatok frissítése kapcsán meg kell oldani a HREF letölthető teljes meta-adatának entitásonként külön file-ba történő szétvágását.&lt;br /&gt;
&lt;br /&gt;
Ezt a feladatot a mdsigner-j-cli-2.0-rc2-jar-with-dependencies.jar nevű program végzi el.&lt;br /&gt;
&lt;br /&gt;
Működéséhez szükséges a metadata aláíró root certificate, ezzel lehet ellenőrizni a metadata hitelességét.&lt;br /&gt;
&lt;br /&gt;
A programot célszerű rendszeresen, pl. naponta futtatni, egy külön folyamatban leválogatni a releváns IdP-ket, ellenőrizni a módosulásokat, módosulás esetén frissíteni a SAML SP metadata könyvtárát és újraindítani a webalkalmazást.&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1936</id>
		<title>Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1936"/>
				<updated>2010-09-16T07:50:02Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* IdP által kezdeményezett SLO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Könyvtári alkalmazás használati esetei=&lt;br /&gt;
&lt;br /&gt;
==Könyvtári és föderatív azonosságok==&lt;br /&gt;
&lt;br /&gt;
A könyvtári alkalmazás olvasói nyilvántartásában szereplő és a föderatív azonosítás szolgáltatónál lévő azonosságokat a könyvtári alkalmazásban célszerűen össze kell kapcsolni. Ez az identitás összekapcsolás mindig feltételezi a felhasználó aktív közreműködését, e nélkül az identitások összekapcsolása nem jöhet létre.&lt;br /&gt;
&lt;br /&gt;
Egy föderatív azonosítással elérhető, SP-vel védett Online könyvtári beiratkozás szolgáltatásnál ez egy tájékoztató szöveg megjelenése és tudomásul vétele után történik meg, a már hagyományos módon beiratkozott, az alkalmazás olvasói nyilvántartásában már szereplő olvasók “könyvtári identitását” viszont külön eljárással kell összekapcsolni az IdP által azonosítottakkal.&lt;br /&gt;
&lt;br /&gt;
Ha a  könyvtári alkalmazásban már létezik webes azonosítás, akkor célszerű egy olyan komponenst beilleszteni, ahol a felhasználó mind a könyvtári azonosságát (könyvtári azonosító - jelszó), mind a föderatív azonosságát tudja bizonyítani, és a komponens összeköti a két azonosítót a kapcsoló táblában (account linking). A tájékoztató szöveg megjelenítése és annak elfogadása ekkor&lt;br /&gt;
&lt;br /&gt;
Az MTA SZTAKI könyvtára esetében a felhasználók nem tudtak bejelentkezni a webes felületen, az identitás összekapcsolást segítő kulcs az email cím lehetett, ez alapján az összerendelések nagy tömegét elvégezhettük, a maradék azonosítót pedig kézzel, további adatok összehasonlításával, vagy közvetlenül az olvasó megkeresésével lehetett elvégezni.&lt;br /&gt;
&lt;br /&gt;
===Identitások összekapcsolása===&lt;br /&gt;
&lt;br /&gt;
A könyvtári rendszert fel kell készíteni a szövetségi azonosítás során használt azonosítójukkal érkező felhasználók  fogadására. Ehhez szükség van egy kapcsoló táblára, ahol a könyvtári azonosítót és a föderált azonosítókat tároljuk.&lt;br /&gt;
&lt;br /&gt;
Bejelentkezés során bármely eduid-vel azonosítja a felhasználót a szóbanforgó Home IdP, az alkalmazás kikeresi a megfelelő könyvtári alkalmazásbeli azonosítót, és a továbbiakban az alkalmazás ezt használja a munkamenet során.&lt;br /&gt;
&lt;br /&gt;
==Beiratkozás==&lt;br /&gt;
&lt;br /&gt;
Ha a felhasználó olyan azonosítóval jön a Home IdP-től, ami nincs egyetlen alkalmazás azonosítóhoz sem kapcsolva, a beiratkozás folyamatát kell végrehajtani.&lt;br /&gt;
&lt;br /&gt;
A beiratkozás folyamán létre kell hozni az olvasó táblában az új olvasót, és a Home IdP-től kapott személyes adatokkal fel kell tölteni az olvasó rekordot.&lt;br /&gt;
&lt;br /&gt;
A “Föderált azonosító” kapcsolótáblában létre kell hozni a könyvtári azonosítót és a föderált azonosítót összerendelő rekordot.&lt;br /&gt;
&lt;br /&gt;
==Kiiratkozás==&lt;br /&gt;
&lt;br /&gt;
Felhasználó kiiratását az OIOSAML.java nem támogatja, az azonosító lejáratásával lehet a felhasználó jogosultságait korlátozni. Tervezésnél meg kell fontolni, hogy egy-egy IdP által azonosított felhasználó beiratásánál mennyi az az idő, amíg az olvasót aktívnak szeretnénk tudni. Megvizsgálva néhány könyvtár Használati szabályzatát a megoldás megfelel az általános gyakorlatnak. A könyvtárak beiratkozáskor kiállított olvasójegyét bizonyos időre szóló érvényességgel (általában 1 év) állítják ki, ha az olvasó ennek elteltével nem hosszabbítja meg olvasójegye érvényességét, az lejár.&lt;br /&gt;
&lt;br /&gt;
==Azonosítás és attribútumok átadása==&lt;br /&gt;
&lt;br /&gt;
A LoginFilter által védett URL-re irányuló kéréskor a SAML Assertion és az általa hordozott attribútumok a dk.itst.oiosaml.sp.UserAssertion objektumból lekérdezhetőek. Ezen objektum csak a védett URL-eken érhető el a dk.itst.oiosaml.sp.UserAssertionHolder.get() metódus meghívásával.&lt;br /&gt;
&lt;br /&gt;
Ha csak a login funkciót védjük SAML SP-vel, érdemes a user session-be átmenteni a szükséges attribútumokat, ha azokat más funkciókkal is el kell érni.&lt;br /&gt;
&lt;br /&gt;
Attribútum mappingről igény szerint a fejlesztés során kell gondoskodnunk, az OIOSAML.java nem támogat ilyen funkciót.&lt;br /&gt;
&lt;br /&gt;
Példa az eduPersonPrincipalName attribútum kinyeréséről:&lt;br /&gt;
&lt;br /&gt;
 UserAssertion ua = UserAssertionHolder.get();&lt;br /&gt;
 String eppn = ua.getAttribute(“urn:oid:1.3.6.1.4.1.5923.1.1.1.6 ”);&lt;br /&gt;
&lt;br /&gt;
A rendszerfejlesztéshez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/developers.html]&lt;br /&gt;
&lt;br /&gt;
==Attribútumok frissítése==&lt;br /&gt;
&lt;br /&gt;
Hogy a könyvtári rendszerben nyilvántartott olvasók adatai naprakészek legyenek, a Home IdP-től származó attribútumokat nem csak a beiratkozáskor, hanem a mindennapi használatkor is igénybe vehetjük.&lt;br /&gt;
&lt;br /&gt;
Az IdP-től kapott attribútumokat a könyvtári alkalmazás ellenőrzi, és ha az adott attribútum még nem szerepel a nyilvántartásában, azt rögzíti.&lt;br /&gt;
&lt;br /&gt;
Az alkalmazás saját szabály-rendszere döntheti el, hogy a meglévő értékeket lecseréli az Home IdP-től kapottal, vagy csak hozzáadja új értékként a már meglévőhöz.&lt;br /&gt;
&lt;br /&gt;
==Kijelentkezés==&lt;br /&gt;
&lt;br /&gt;
===SP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásból történő kijelentkezést a session-változók törlésével kell megoldani, és biztosítani kell a Single Logout folyamat elindítását. Az OIOSAML.java esetében ezt a saml/Logout URL-re történő redirect-tel lehet kezdeményezni.&lt;br /&gt;
&lt;br /&gt;
 HttpSession session = req.getSession(false);&lt;br /&gt;
 res.sendRedirect(&amp;quot;saml/Logout&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===IdP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Ha a Single Logout-ot a felhasználó egy másik alkalmazásnál kezdeményezte, és kérte, hogy valamennyi aktív alkalmazásból léptesse ki a rendszer, az IdP a könyvtári alkalmazásnak egy Logout Request-et küld a böngésző átirányításának segítségével. A kérésről a SAML SP-n kívül az alkalmazásnak is tudnia kell, hogy a felhasználó session-jén a kilépést érvényre juttassa. Ezt a SAML SP SLO endpoint-jai elé tett filter segítségével lehet a legegyszerűbben végrehajtani.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 LogoutFilter.java&lt;br /&gt;
 &lt;br /&gt;
 import java.io.IOException;&lt;br /&gt;
 import javax.servlet.Filter;&lt;br /&gt;
 import javax.servlet.FilterChain;&lt;br /&gt;
 import javax.servlet.FilterConfig;&lt;br /&gt;
 import javax.servlet.ServletException;&lt;br /&gt;
 import javax.servlet.ServletRequest;&lt;br /&gt;
 import javax.servlet.ServletResponse;&lt;br /&gt;
 import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
 import javax.servlet.http.HttpSession;&lt;br /&gt;
 &lt;br /&gt;
 import org.apache.log4j.Logger;&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 * Servlet Filter implementation class LogoutFilter&lt;br /&gt;
 */&lt;br /&gt;
 public class LogoutFilter implements Filter {  &lt;br /&gt;
 &lt;br /&gt;
    /**&lt;br /&gt;
    * Default constructor.&lt;br /&gt;
    */&lt;br /&gt;
   private static final Logger log = Logger.getLogger(LogoutFilter.class);    &lt;br /&gt;
   &lt;br /&gt;
    public LogoutFilter() {&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#destroy()&lt;br /&gt;
    */&lt;br /&gt;
   public void destroy() {&lt;br /&gt;
   } &lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)&lt;br /&gt;
    */&lt;br /&gt;
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {&lt;br /&gt;
       chain.doFilter(request, response);&lt;br /&gt;
       log.debug(&amp;quot;Enter into LoginFilter&amp;quot;);&lt;br /&gt;
       HttpServletRequest servletRequest = ((HttpServletRequest) request);        &lt;br /&gt;
       HttpSession session = servletRequest.getSession(false);&lt;br /&gt;
       if (session != null){&lt;br /&gt;
           log.debug(&amp;quot;Remove application related session attributes.&amp;quot;);            &lt;br /&gt;
           session.removeAttribute(&amp;quot;aai_auth&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#init(FilterConfig)&lt;br /&gt;
    */&lt;br /&gt;
   public void init(FilterConfig fConfig) throws ServletException {&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
web.xml&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
  &amp;lt;filter&amp;gt;    &lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;LogoutFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirect&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirectResponse&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
=Rendszer architektúra=&lt;br /&gt;
&lt;br /&gt;
==OIOSAML.java, mint SP komponens==&lt;br /&gt;
(OIOSAML 2.0 Toolkit test results dokumentumból érdemes ide tenni vm.-t)&lt;br /&gt;
===Telepítés===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java letöltése után a következő lépésekkel telepíthetjük alkalmazásunkhoz az oiosaml.java SP komponenst:&lt;br /&gt;
&lt;br /&gt;
1. Másoljuk a  lib/* fileokat a könyvtári alkalamzás WEB-INF/lib könyvtárába&lt;br /&gt;
&lt;br /&gt;
2. Egészítsük ki az alkalmazás web.xml leírófile-ját a következőkkel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;context-param&amp;gt;&lt;br /&gt;
    &amp;lt;param-name&amp;gt;oiosaml-j.home&amp;lt;/param-name&amp;gt;&lt;br /&gt;
    &amp;lt;param-value&amp;gt;/path/to/oiosaml.home&amp;lt;/param-value&amp;gt;&lt;br /&gt;
 &amp;lt;/context-param&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-class&amp;gt;dk.itst.oiosaml.sp.service.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;dk.itst.oiosaml.sp.service.SPFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/protected/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A SAMLDispatcherServlet servlet végzi el a SAML-lal kapcsolatos kéréseket, ajánlott a /saml/* URL alá definiálni.&lt;br /&gt;
&lt;br /&gt;
A LoginFilter filter által védett URL-lek (példánkban /protected/*) csak SAML-os azonosítással érhetőek el, ezen URL-ek alatt érhetők el különböző objektumokban TODO a  SAML Assertion-ben átadott attribútumértékek.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a az OIOSAML.java ellenőrzi konfigurációját, és ha a rendszer nincs helyesen konfigurálva, elindul az autoconfig folyamat, ahol a rendszert a webes felületről konfigurálhatjuk. A konfigurációs folyamat végén az SP aláírt meta-adata letölthető.&lt;br /&gt;
&lt;br /&gt;
===Konfiguráció===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java konfigurációja az oiosaml-sp.properties file-ban található.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a következő módosításokat érdemes megtenni a fileban:&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.assurancelevel=0&lt;br /&gt;
&lt;br /&gt;
Az elfogadott azonosítási szintet állíthatjuk itt be. Mivel a föderációban ilyet egyelőre nem használunk, és egyes IdP-k nem támogatják (simpleSAMLphp) ezt az attribútumot, állítsuk 0-ra.&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.uri.home=../&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásunk kezdő lapja. SLO után ide irányítódik át a felhasználó böngészője.&lt;br /&gt;
&lt;br /&gt;
A konfigurációs beállítások teljes dokumentációja az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/configuration.html]&lt;br /&gt;
&lt;br /&gt;
===Meta-adat kezelés===&lt;br /&gt;
&lt;br /&gt;
A SAML SP komponens működéséhez elengedhetetlen, hogy a vele bizalmi szövetségben lévő IdP-k meta-adatait ismerje.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java meta-adatformátumának a legfőbb jellemzője, hogy az egyes entitásokat egyenként külön file-ban kell eltárolni. Az szóban forgó file-okat a metadata/IdP alkönyvtárba kell helyezni XML formátumban, a név-konvenció csak annyit követel meg, hogy .xml-re végződjön a file neve.&lt;br /&gt;
&lt;br /&gt;
Fontos tudni, hogy az OIOSAML.java csak induláskor tölti be a meta-adatokat, így ha azokat változtatjuk, az alkalmazást újra kell indítani, hogy a változtatások érvényre jussanak.&lt;br /&gt;
&lt;br /&gt;
===Discovery Service===&lt;br /&gt;
Ha az SP több IdP-vel is bizalmi szövetséget alkot, szükség van Discovery Service-re is, hogy a felhasználó eldönthesse, melyik IdP-nél kívánja magát azonosítani.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java tartalmaz egy discovery service servlet-et, ami az IdP metadatáiból állít össze egy weboldalt, ahol a felhasználó kiválaszthatja a saját IdP-jét.&lt;br /&gt;
&lt;br /&gt;
Telepítése az oiosaml.java-discovery.*.war file egyszerű deploy-olásával történik, beállításra az oiosaml-sp.properties file oiosaml-sp.discovery.* változók használhatóak.&lt;br /&gt;
&lt;br /&gt;
A discovery service-hez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/discovery.html]&lt;br /&gt;
&lt;br /&gt;
===Metadata frissítés===&lt;br /&gt;
&lt;br /&gt;
A meta-adatok frissítése kapcsán meg kell oldani a HREF letölthető teljes meta-adatának entitásonként külön file-ba történő szétvágását.&lt;br /&gt;
&lt;br /&gt;
Ezt a feladatot a mdsigner-j-cli-2.0-rc2-jar-with-dependencies.jar nevű program végzi el.&lt;br /&gt;
&lt;br /&gt;
Működéséhez szükséges a metadata aláíró root certificate, ezzel lehet ellenőrizni a metadata hitelességét.&lt;br /&gt;
&lt;br /&gt;
A programot célszerű rendszeresen, pl. naponta futtatni, egy külön folyamatban leválogatni a releváns IdP-ket, ellenőrizni a módosulásokat, módosulás esetén frissíteni a SAML SP metadata könyvtárát és újraindítani a webalkalmazást.&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1935</id>
		<title>Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1935"/>
				<updated>2010-09-16T07:34:42Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* huntéka, mint SP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Könyvtári alkalmazás használati esetei=&lt;br /&gt;
&lt;br /&gt;
==Könyvtári és föderatív azonosságok==&lt;br /&gt;
&lt;br /&gt;
A könyvtári alkalmazás olvasói nyilvántartásában szereplő és a föderatív azonosítás szolgáltatónál lévő azonosságokat a könyvtári alkalmazásban célszerűen össze kell kapcsolni. Ez az identitás összekapcsolás mindig feltételezi a felhasználó aktív közreműködését, e nélkül az identitások összekapcsolása nem jöhet létre.&lt;br /&gt;
&lt;br /&gt;
Egy föderatív azonosítással elérhető, SP-vel védett Online könyvtári beiratkozás szolgáltatásnál ez egy tájékoztató szöveg megjelenése és tudomásul vétele után történik meg, a már hagyományos módon beiratkozott, az alkalmazás olvasói nyilvántartásában már szereplő olvasók “könyvtári identitását” viszont külön eljárással kell összekapcsolni az IdP által azonosítottakkal.&lt;br /&gt;
&lt;br /&gt;
Ha a  könyvtári alkalmazásban már létezik webes azonosítás, akkor célszerű egy olyan komponenst beilleszteni, ahol a felhasználó mind a könyvtári azonosságát (könyvtári azonosító - jelszó), mind a föderatív azonosságát tudja bizonyítani, és a komponens összeköti a két azonosítót a kapcsoló táblában (account linking). A tájékoztató szöveg megjelenítése és annak elfogadása ekkor&lt;br /&gt;
&lt;br /&gt;
Az MTA SZTAKI könyvtára esetében a felhasználók nem tudtak bejelentkezni a webes felületen, az identitás összekapcsolást segítő kulcs az email cím lehetett, ez alapján az összerendelések nagy tömegét elvégezhettük, a maradék azonosítót pedig kézzel, további adatok összehasonlításával, vagy közvetlenül az olvasó megkeresésével lehetett elvégezni.&lt;br /&gt;
&lt;br /&gt;
===Identitások összekapcsolása===&lt;br /&gt;
&lt;br /&gt;
A könyvtári rendszert fel kell készíteni a szövetségi azonosítás során használt azonosítójukkal érkező felhasználók  fogadására. Ehhez szükség van egy kapcsoló táblára, ahol a könyvtári azonosítót és a föderált azonosítókat tároljuk.&lt;br /&gt;
&lt;br /&gt;
Bejelentkezés során bármely eduid-vel azonosítja a felhasználót a szóbanforgó Home IdP, az alkalmazás kikeresi a megfelelő könyvtári alkalmazásbeli azonosítót, és a továbbiakban az alkalmazás ezt használja a munkamenet során.&lt;br /&gt;
&lt;br /&gt;
==Beiratkozás==&lt;br /&gt;
&lt;br /&gt;
Ha a felhasználó olyan azonosítóval jön a Home IdP-től, ami nincs egyetlen alkalmazás azonosítóhoz sem kapcsolva, a beiratkozás folyamatát kell végrehajtani.&lt;br /&gt;
&lt;br /&gt;
A beiratkozás folyamán létre kell hozni az olvasó táblában az új olvasót, és a Home IdP-től kapott személyes adatokkal fel kell tölteni az olvasó rekordot.&lt;br /&gt;
&lt;br /&gt;
A “Föderált azonosító” kapcsolótáblában létre kell hozni a könyvtári azonosítót és a föderált azonosítót összerendelő rekordot.&lt;br /&gt;
&lt;br /&gt;
==Kiiratkozás==&lt;br /&gt;
&lt;br /&gt;
Felhasználó kiiratását az OIOSAML.java nem támogatja, az azonosító lejáratásával lehet a felhasználó jogosultságait korlátozni. Tervezésnél meg kell fontolni, hogy egy-egy IdP által azonosított felhasználó beiratásánál mennyi az az idő, amíg az olvasót aktívnak szeretnénk tudni. Megvizsgálva néhány könyvtár Használati szabályzatát a megoldás megfelel az általános gyakorlatnak. A könyvtárak beiratkozáskor kiállított olvasójegyét bizonyos időre szóló érvényességgel (általában 1 év) állítják ki, ha az olvasó ennek elteltével nem hosszabbítja meg olvasójegye érvényességét, az lejár.&lt;br /&gt;
&lt;br /&gt;
==Azonosítás és attribútumok átadása==&lt;br /&gt;
&lt;br /&gt;
A LoginFilter által védett URL-re irányuló kéréskor a SAML Assertion és az általa hordozott attribútumok a dk.itst.oiosaml.sp.UserAssertion objektumból lekérdezhetőek. Ezen objektum csak a védett URL-eken érhető el a dk.itst.oiosaml.sp.UserAssertionHolder.get() metódus meghívásával.&lt;br /&gt;
&lt;br /&gt;
Ha csak a login funkciót védjük SAML SP-vel, érdemes a user session-be átmenteni a szükséges attribútumokat, ha azokat más funkciókkal is el kell érni.&lt;br /&gt;
&lt;br /&gt;
Attribútum mappingről igény szerint a fejlesztés során kell gondoskodnunk, az OIOSAML.java nem támogat ilyen funkciót.&lt;br /&gt;
&lt;br /&gt;
Példa az eduPersonPrincipalName attribútum kinyeréséről:&lt;br /&gt;
&lt;br /&gt;
 UserAssertion ua = UserAssertionHolder.get();&lt;br /&gt;
 String eppn = ua.getAttribute(“urn:oid:1.3.6.1.4.1.5923.1.1.1.6 ”);&lt;br /&gt;
&lt;br /&gt;
A rendszerfejlesztéshez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/developers.html]&lt;br /&gt;
&lt;br /&gt;
==Attribútumok frissítése==&lt;br /&gt;
&lt;br /&gt;
Hogy a könyvtári rendszerben nyilvántartott olvasók adatai naprakészek legyenek, a Home IdP-től származó attribútumokat nem csak a beiratkozáskor, hanem a mindennapi használatkor is igénybe vehetjük.&lt;br /&gt;
&lt;br /&gt;
Az IdP-től kapott attribútumokat a könyvtári alkalmazás ellenőrzi, és ha az adott attribútum még nem szerepel a nyilvántartásában, azt rögzíti.&lt;br /&gt;
&lt;br /&gt;
Az alkalmazás saját szabály-rendszere döntheti el, hogy a meglévő értékeket lecseréli az Home IdP-től kapottal, vagy csak hozzáadja új értékként a már meglévőhöz.&lt;br /&gt;
&lt;br /&gt;
==Kijelentkezés==&lt;br /&gt;
&lt;br /&gt;
===SP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásból történő kijelentkezést a session-változók törlésével kell megoldani, és biztosítani kell a Single Logout folyamat elindítását. Az OIOSAML.java esetében ezt a saml/Logout URL-re történő redirect-tel lehet kezdeményezni.&lt;br /&gt;
&lt;br /&gt;
 HttpSession session = req.getSession(false);&lt;br /&gt;
 res.sendRedirect(&amp;quot;saml/Logout&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
===IdP által kezdeményezett SLO===&lt;br /&gt;
&lt;br /&gt;
Ha a Single Logout-ot a felhasználó egy másik alkalmazásnál kezdeményezte, és kérte, hogy valamennyi aktív alkalmazásból léptesse ki a rendszer, az IdP a könyvtári alkalmazásnak egy Logout Request-et küld a böngésző átirányításának segítségével. A kérésről a SAML SP-n kívül az alkalmazásnak is tudnia kell, hogy a felhasználó session-jén a kilépést érvényre juttassa. Ezt a SAML SP SLO endpoint-jai elé tett filter segítségével lehet a legegyszerűbben végrehajtani.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 LogoutFilter.java&lt;br /&gt;
 &lt;br /&gt;
 import java.io.IOException;&lt;br /&gt;
 import javax.servlet.Filter;&lt;br /&gt;
 import javax.servlet.FilterChain;&lt;br /&gt;
 import javax.servlet.FilterConfig;&lt;br /&gt;
 import javax.servlet.ServletException;&lt;br /&gt;
 import javax.servlet.ServletRequest;&lt;br /&gt;
 import javax.servlet.ServletResponse;&lt;br /&gt;
 import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
 import javax.servlet.http.HttpSession;&lt;br /&gt;
 &lt;br /&gt;
 import org.apache.log4j.Logger;&lt;br /&gt;
 &lt;br /&gt;
 /**&lt;br /&gt;
 * Servlet Filter implementation class LogoutFilter&lt;br /&gt;
 */&lt;br /&gt;
 public class LogoutFilter implements Filter {  &lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
    * Default constructor.&lt;br /&gt;
    */&lt;br /&gt;
   private static final Logger log = Logger.getLogger(LogoutFilter.class);    &lt;br /&gt;
   &lt;br /&gt;
    public LogoutFilter() {&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#destroy()&lt;br /&gt;
    */&lt;br /&gt;
   public void destroy() {&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)&lt;br /&gt;
    */&lt;br /&gt;
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {&lt;br /&gt;
       chain.doFilter(request, response);&lt;br /&gt;
       log.debug(&amp;quot;Enter into LoginFilter&amp;quot;);&lt;br /&gt;
       HttpServletRequest servletRequest = ((HttpServletRequest) request);        &lt;br /&gt;
       HttpSession session = servletRequest.getSession(false);&lt;br /&gt;
       if (session != null){&lt;br /&gt;
           log.debug(&amp;quot;Remove application related session attributes.&amp;quot;);            &lt;br /&gt;
           session.removeAttribute(&amp;quot;aai_auth&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#init(FilterConfig)&lt;br /&gt;
    */&lt;br /&gt;
   public void init(FilterConfig fConfig) throws ServletException {&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
web.xml&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
  &amp;lt;filter&amp;gt;    &lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;LogoutFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirect&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirectResponse&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Rendszer architektúra=&lt;br /&gt;
&lt;br /&gt;
==OIOSAML.java, mint SP komponens==&lt;br /&gt;
(OIOSAML 2.0 Toolkit test results dokumentumból érdemes ide tenni vm.-t)&lt;br /&gt;
===Telepítés===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java letöltése után a következő lépésekkel telepíthetjük alkalmazásunkhoz az oiosaml.java SP komponenst:&lt;br /&gt;
&lt;br /&gt;
1. Másoljuk a  lib/* fileokat a könyvtári alkalamzás WEB-INF/lib könyvtárába&lt;br /&gt;
&lt;br /&gt;
2. Egészítsük ki az alkalmazás web.xml leírófile-ját a következőkkel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;context-param&amp;gt;&lt;br /&gt;
    &amp;lt;param-name&amp;gt;oiosaml-j.home&amp;lt;/param-name&amp;gt;&lt;br /&gt;
    &amp;lt;param-value&amp;gt;/path/to/oiosaml.home&amp;lt;/param-value&amp;gt;&lt;br /&gt;
 &amp;lt;/context-param&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-class&amp;gt;dk.itst.oiosaml.sp.service.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;dk.itst.oiosaml.sp.service.SPFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/protected/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A SAMLDispatcherServlet servlet végzi el a SAML-lal kapcsolatos kéréseket, ajánlott a /saml/* URL alá definiálni.&lt;br /&gt;
&lt;br /&gt;
A LoginFilter filter által védett URL-lek (példánkban /protected/*) csak SAML-os azonosítással érhetőek el, ezen URL-ek alatt érhetők el különböző objektumokban TODO a  SAML Assertion-ben átadott attribútumértékek.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a az OIOSAML.java ellenőrzi konfigurációját, és ha a rendszer nincs helyesen konfigurálva, elindul az autoconfig folyamat, ahol a rendszert a webes felületről konfigurálhatjuk. A konfigurációs folyamat végén az SP aláírt meta-adata letölthető.&lt;br /&gt;
&lt;br /&gt;
===Konfiguráció===&lt;br /&gt;
&lt;br /&gt;
Az oiosaml.java konfigurációja az oiosaml-sp.properties file-ban található.&lt;br /&gt;
&lt;br /&gt;
Telepítés után a következő módosításokat érdemes megtenni a fileban:&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.assurancelevel=0&lt;br /&gt;
&lt;br /&gt;
Az elfogadott azonosítási szintet állíthatjuk itt be. Mivel a föderációban ilyet egyelőre nem használunk, és egyes IdP-k nem támogatják (simpleSAMLphp) ezt az attribútumot, állítsuk 0-ra.&lt;br /&gt;
&lt;br /&gt;
 oiosaml-sp.uri.home=../&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásunk kezdő lapja. SLO után ide irányítódik át a felhasználó böngészője.&lt;br /&gt;
&lt;br /&gt;
A konfigurációs beállítások teljes dokumentációja az alábbi URL-en található:&lt;br /&gt;
&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/configuration.html]&lt;br /&gt;
&lt;br /&gt;
===Meta-adat kezelés===&lt;br /&gt;
&lt;br /&gt;
A SAML SP komponens működéséhez elengedhetetlen, hogy a vele bizalmi szövetségben lévő IdP-k meta-adatait ismerje.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java meta-adatformátumának a legfőbb jellemzője, hogy az egyes entitásokat egyenként külön file-ban kell eltárolni. Az szóban forgó file-okat a metadata/IdP alkönyvtárba kell helyezni XML formátumban, a név-konvenció csak annyit követel meg, hogy .xml-re végződjön a file neve.&lt;br /&gt;
&lt;br /&gt;
Fontos tudni, hogy az OIOSAML.java csak induláskor tölti be a meta-adatokat, így ha azokat változtatjuk, az alkalmazást újra kell indítani, hogy a változtatások érvényre jussanak.&lt;br /&gt;
&lt;br /&gt;
===Discovery Service===&lt;br /&gt;
Ha az SP több IdP-vel is bizalmi szövetséget alkot, szükség van Discovery Service-re is, hogy a felhasználó eldönthesse, melyik IdP-nél kívánja magát azonosítani.&lt;br /&gt;
&lt;br /&gt;
Az OIOSAML.java tartalmaz egy discovery service servlet-et, ami az IdP metadatáiból állít össze egy weboldalt, ahol a felhasználó kiválaszthatja a saját IdP-jét.&lt;br /&gt;
&lt;br /&gt;
Telepítése az oiosaml.java-discovery.*.war file egyszerű deploy-olásával történik, beállításra az oiosaml-sp.properties file oiosaml-sp.discovery.* változók használhatóak.&lt;br /&gt;
&lt;br /&gt;
A discovery service-hez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
[https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/discovery.html]&lt;br /&gt;
&lt;br /&gt;
===Metadata frissítés===&lt;br /&gt;
&lt;br /&gt;
A meta-adatok frissítése kapcsán meg kell oldani a HREF letölthető teljes meta-adatának entitásonként külön file-ba történő szétvágását.&lt;br /&gt;
&lt;br /&gt;
Ezt a feladatot a mdsigner-j-cli-2.0-rc2-jar-with-dependencies.jar nevű program végzi el.&lt;br /&gt;
&lt;br /&gt;
Működéséhez szükséges a metadata aláíró root certificate, ezzel lehet ellenőrizni a metadata hitelességét.&lt;br /&gt;
&lt;br /&gt;
A programot célszerű rendszeresen, pl. naponta futtatni, egy külön folyamatban leválogatni a releváns IdP-ket, ellenőrizni a módosulásokat, módosulás esetén frissíteni a SAML SP metadata könyvtárát és újraindítani a webalkalmazást.&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1934</id>
		<title>Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sz%C3%B6vets%C3%A9gi_alapon_t%C3%B6rt%C3%A9n%C5%91_felhaszn%C3%A1l%C3%B3_azonos%C3%ADt%C3%A1s_Hunt%C3%A9ka_k%C3%B6nyvt%C3%A1ri_alkalmaz%C3%A1sokban&amp;diff=1934"/>
				<updated>2010-09-16T07:20:49Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: Új oldal, tartalma: „=Könyvtári alkalmazás használati esetei= ==Könyvtári és föderatív azonosságok== A könyvtári alkalmazás olvasói nyilvántartásában szereplő és a föderat…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Könyvtári alkalmazás használati esetei=&lt;br /&gt;
==Könyvtári és föderatív azonosságok==&lt;br /&gt;
A könyvtári alkalmazás olvasói nyilvántartásában szereplő és a föderatív azonosítás szolgáltatónál lévő azonosságokat a könyvtári alkalmazásban célszerűen össze kell kapcsolni. Ez az identitás összekapcsolás mindig feltételezi a felhasználó aktív közreműködését, e nélkül az identitások összekapcsolása nem jöhet létre.&lt;br /&gt;
&lt;br /&gt;
Egy föderatív azonosítással elérhető, SP-vel védett Online könyvtári beiratkozás szolgáltatásnál ez egy tájékoztató szöveg megjelenése és tudomásul vétele után történik meg, a már hagyományos módon beiratkozott, az alkalmazás olvasói nyilvántartásában már szereplő olvasók “könyvtári identitását” viszont külön eljárással kell összekapcsolni az IdP által azonosítottakkal.&lt;br /&gt;
&lt;br /&gt;
Ha a  könyvtári alkalmazásban már létezik webes azonosítás, akkor célszerű egy olyan komponenst beilleszteni, ahol a felhasználó mind a könyvtári azonosságát (könyvtári azonosító - jelszó), mind a föderatív azonosságát tudja bizonyítani, és a komponens összeköti a két azonosítót a kapcsoló táblában (account linking). A tájékoztató szöveg megjelenítése és annak elfogadása ekkor&lt;br /&gt;
&lt;br /&gt;
Az MTA SZTAKI könyvtára esetében a felhasználók nem tudtak bejelentkezni a webes felületen, az identitás összekapcsolást segítő kulcs az email cím lehetett, ez alapján az összerendelések nagy tömegét elvégezhettük, a maradék azonosítót pedig kézzel, további adatok összehasonlításával, vagy közvetlenül az olvasó megkeresésével lehetett elvégezni.&lt;br /&gt;
&lt;br /&gt;
==Identitások összekapcsolása==&lt;br /&gt;
A könyvtári rendszert fel kell készíteni a szövetségi azonosítás során használt azonosítójukkal érkező felhasználók  fogadására. Ehhez szükség van egy kapcsoló táblára, ahol a könyvtári azonosítót és a föderált azonosítókat tároljuk.&lt;br /&gt;
Bejelentkezés során bármely eduid-vel azonosítja a felhasználót a szóbanforgó Home IdP, az alkalmazás kikeresi a megfelelő könyvtári alkalmazásbeli azonosítót, és a továbbiakban az alkalmazás ezt használja a munkamenet során.&lt;br /&gt;
Beiratkozás&lt;br /&gt;
Ha a felhasználó olyan azonosítóval jön a Home IdP-től, ami nincs egyetlen alkalmazás azonosítóhoz sem kapcsolva, a beiratkozás folyamatát kell végrehajtani.&lt;br /&gt;
A beiratkozás folyamán létre kell hozni az olvasó táblában az új olvasót, és a Home IdP-től kapott személyes adatokkal fel kell tölteni az olvasó rekordot.&lt;br /&gt;
A “Föderált azonosító” kapcsolótáblában létre kell hozni a könyvtári azonosítót és a föderált azonosítót összerendelő rekordot.&lt;br /&gt;
Kiiratkozás&lt;br /&gt;
Felhasználó kiiratását az OIOSAML.java nem támogatja, az azonosító lejáratásával lehet a felhasználó jogosultságait korlátozni. Tervezésnél meg kell fontolni, hogy egy-egy IdP által azonosított felhasználó beiratásánál mennyi az az idő, amíg az olvasót aktívnak szeretnénk tudni. Megvizsgálva néhány könyvtár Használati szabályzatát a megoldás megfelel az általános gyakorlatnak. A könyvtárak beiratkozáskor kiállított olvasójegyét bizonyos időre szóló érvényességgel (általában 1 év) állítják ki, ha az olvasó ennek elteltével nem hosszabbítja meg olvasójegye érvényességét, az lejár.&lt;br /&gt;
Azonosítás és attribútumok átadása&lt;br /&gt;
A LoginFilter által védett URL-re irányuló kéréskor a SAML Assertion és az általa hordozott attribútumok a dk.itst.oiosaml.sp.UserAssertion objektumból lekérdezhetőek. Ezen objektum csak a védett URL-eken érhető el a dk.itst.oiosaml.sp.UserAssertionHolder.get() metódus meghívásával.&lt;br /&gt;
Ha csak a login funkciót védjük SAML SP-vel, érdemes a user session-be átmenteni a szükséges attribútumokat, ha azokat más funkciókkal is el kell érni.&lt;br /&gt;
Attribútum mappingről igény szerint a fejlesztés során kell gondoskodnunk, az OIOSAML.java nem támogat ilyen funkciót.&lt;br /&gt;
Példa az eduPersonPrincipalName attribútum kinyeréséről:&lt;br /&gt;
&lt;br /&gt;
UserAssertion ua = UserAssertionHolder.get();&lt;br /&gt;
String eppn = ua.getAttribute(“urn:oid:1.3.6.1.4.1.5923.1.1.1.6 ”);&lt;br /&gt;
&lt;br /&gt;
A rendszerfejlesztéshez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/developers.html&lt;br /&gt;
Attribútumok frissítése&lt;br /&gt;
Hogy a könyvtári rendszerben nyilvántartott olvasók adatai naprakészek legyenek, a Home IdP-től származó attribútumokat nem csak a beiratkozáskor, hanem a mindennapi használatkor is igénybe vehetjük.&lt;br /&gt;
Az IdP-től kapott attribútumokat a könyvtári alkalmazás ellenőrzi, és ha az adott attribútum még nem szerepel a nyilvántartásában, azt rögzíti.&lt;br /&gt;
Az alkalmazás saját szabály-rendszere döntheti el, hogy a meglévő értékeket lecseréli az Home IdP-től kapottal, vagy csak hozzáadja új értékként a már meglévőhöz.&lt;br /&gt;
Kijelentkezés&lt;br /&gt;
SP által kezdeményezett SLO&lt;br /&gt;
Az alkalmazásból történő kijelentkezést a session-változók törlésével kell megoldani, és biztosítani kell a Single Logout folyamat elindítását. Az OIOSAML.java esetében ezt a saml/Logout URL-re történő redirect-tel lehet kezdeményezni.&lt;br /&gt;
&lt;br /&gt;
HttpSession session = req.getSession(false);&lt;br /&gt;
res.sendRedirect(&amp;quot;saml/Logout&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IdP által kezdeményezett SLO&lt;br /&gt;
Ha a Single Logout-ot a felhasználó egy másik alkalmazásnál kezdeményezte, és kérte, hogy valamennyi aktív alkalmazásból léptesse ki a rendszer, az IdP a könyvtári alkalmazásnak egy Logout Request-et küld a böngésző átirányításának segítségével. A kérésről a SAML SP-n kívül az alkalmazásnak is tudnia kell, hogy a felhasználó session-jén a kilépést érvényre juttassa. Ezt a SAML SP SLO endpoint-jai elé tett filter segítségével lehet a legegyszerűbben végrehajtani.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LogoutFilter.java&lt;br /&gt;
&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import javax.servlet.Filter;&lt;br /&gt;
import javax.servlet.FilterChain;&lt;br /&gt;
import javax.servlet.FilterConfig;&lt;br /&gt;
import javax.servlet.ServletException;&lt;br /&gt;
import javax.servlet.ServletRequest;&lt;br /&gt;
import javax.servlet.ServletResponse;&lt;br /&gt;
import javax.servlet.http.HttpServletRequest;&lt;br /&gt;
import javax.servlet.http.HttpSession;&lt;br /&gt;
&lt;br /&gt;
import org.apache.log4j.Logger;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
* Servlet Filter implementation class LogoutFilter&lt;br /&gt;
*/&lt;br /&gt;
public class LogoutFilter implements Filter {&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
    * Default constructor.&lt;br /&gt;
    */&lt;br /&gt;
   private static final Logger log = Logger.getLogger(LogoutFilter.class);    &lt;br /&gt;
   &lt;br /&gt;
    public LogoutFilter() {&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#destroy()&lt;br /&gt;
    */&lt;br /&gt;
   public void destroy() {&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)&lt;br /&gt;
    */&lt;br /&gt;
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {&lt;br /&gt;
       chain.doFilter(request, response);&lt;br /&gt;
       log.debug(&amp;quot;Enter into LoginFilter&amp;quot;);&lt;br /&gt;
       HttpServletRequest servletRequest = ((HttpServletRequest) request);        &lt;br /&gt;
       HttpSession session = servletRequest.getSession(false);&lt;br /&gt;
       if (session != null){&lt;br /&gt;
           log.debug(&amp;quot;Remove application related session attributes.&amp;quot;);            &lt;br /&gt;
           session.removeAttribute(&amp;quot;aai_auth&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   /**&lt;br /&gt;
    * @see Filter#init(FilterConfig)&lt;br /&gt;
    */&lt;br /&gt;
   public void init(FilterConfig fConfig) throws ServletException {&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
web.xml&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
 &amp;lt;filter&amp;gt;    &lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;LogoutFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
 &amp;lt;/filter&amp;gt;&lt;br /&gt;
 &amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LogoutFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirect&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/LogoutServiceHTTPRedirectResponse&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
 &amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rendszer architektúra&lt;br /&gt;
&lt;br /&gt;
OIOSAML.java, mint SP komponens&lt;br /&gt;
(OIOSAML 2.0 Toolkit test results dokumentumból érdemes ide tenni vm.-t)&lt;br /&gt;
Telepítés&lt;br /&gt;
Az oiosaml.java letöltése után a következő lépésekkel telepíthetjük alkalmazásunkhoz az oiosaml.java SP komponenst:&lt;br /&gt;
&lt;br /&gt;
   1. Másoljuk a  lib/* fileokat a könyvtári alkalamzás WEB-INF/lib könyvtárába&lt;br /&gt;
   2. Egészítsük ki az alkalmazás web.xml leírófile-ját a következőkkel:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;context-param&amp;gt;&lt;br /&gt;
    &amp;lt;param-name&amp;gt;oiosaml-j.home&amp;lt;/param-name&amp;gt;&lt;br /&gt;
    &amp;lt;param-value&amp;gt;/path/to/oiosaml.home&amp;lt;/param-value&amp;gt;&lt;br /&gt;
&amp;lt;/context-param&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;servlet&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-class&amp;gt;dk.itst.oiosaml.sp.service.DispatcherServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;
&amp;lt;/servlet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;servlet-name&amp;gt;SAMLDispatcherServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/saml/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;filter&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;filter-class&amp;gt;dk.itst.oiosaml.sp.service.SPFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;
&amp;lt;/filter&amp;gt;&lt;br /&gt;
&amp;lt;filter-mapping&amp;gt;&lt;br /&gt;
    &amp;lt;filter-name&amp;gt;LoginFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;
    &amp;lt;url-pattern&amp;gt;/protected/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;
&amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A SAMLDispatcherServlet servlet végzi el a SAML-lal kapcsolatos kéréseket, ajánlott a /saml/* URL alá definiálni.&lt;br /&gt;
A LoginFilter filter által védett URL-lek (példánkban /protected/*) csak SAML-os azonosítással érhetőek el, ezen URL-ek alatt érhetők el különböző objektumokban TODO a  SAML Assertion-ben átadott attribútumértékek.&lt;br /&gt;
Telepítés után a az OIOSAML.java ellenőrzi konfigurációját, és ha a rendszer nincs helyesen konfigurálva, elindul az autoconfig folyamat, ahol a rendszert a webes felületről konfigurálhatjuk. A konfigurációs folyamat végén az SP aláírt meta-adata letölthető.&lt;br /&gt;
Konfiguráció&lt;br /&gt;
Az oiosaml.java konfigurációja az oiosaml-sp.properties file-ban található.&lt;br /&gt;
Telepítés után a következő módosításokat érdemes megtenni a fileban:&lt;br /&gt;
&lt;br /&gt;
oiosaml-sp.assurancelevel=0&lt;br /&gt;
&lt;br /&gt;
Az elfogadott azonosítási szintet állíthatjuk itt be. Mivel a föderációban ilyet egyelőre nem használunk, és egyes IdP-k nem támogatják (simpleSAMLphp) ezt az attribútumot, állítsuk 0-ra.&lt;br /&gt;
&lt;br /&gt;
oiosaml-sp.uri.home=../&lt;br /&gt;
&lt;br /&gt;
Az alkalmazásunk kezdő lapja. SLO után ide irányítódik át a felhasználó böngészője.&lt;br /&gt;
&lt;br /&gt;
A konfigurációs beállítások teljes dokumentációja az alábbi URL-en található:&lt;br /&gt;
https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/configuration.html&lt;br /&gt;
Meta-adat kezelés&lt;br /&gt;
A SAML SP komponens működéséhez elengedhetetlen, hogy a vele bizalmi szövetségben lévő IdP-k meta-adatait ismerje.&lt;br /&gt;
Az OIOSAML.java meta-adatformátumának a legfőbb jellemzője, hogy az egyes entitásokat egyenként külön file-ban kell eltárolni. Az szóban forgó file-okat a metadata/IdP alkönyvtárba kell helyezni XML formátumban, a név-konvenció csak annyit követel meg, hogy .xml-re végződjön a file neve.&lt;br /&gt;
Fontos tudni, hogy az OIOSAML.java csak induláskor tölti be a meta-adatokat, így ha azokat változtatjuk, az alkalmazást újra kell indítani, hogy a változtatások érvényre jussanak.&lt;br /&gt;
Discovery Service&lt;br /&gt;
Ha az SP több IdP-vel is bizalmi szövetséget alkot, szükség van Discovery Service-re is, hogy a felhasználó eldönthesse, melyik IdP-nél kívánja magát azonosítani.&lt;br /&gt;
Az OIOSAML.java tartalmaz egy discovery service servlet-et, ami az IdP metadatáiból állít össze egy weboldalt, ahol a felhasználó kiválaszthatja a saját IdP-jét.&lt;br /&gt;
Telepítése az oiosaml.java-discovery.*.war file egyszerű deploy-olásával történik, beállításra az oiosaml-sp.properties file oiosaml-sp.discovery.* változók használhatóak.&lt;br /&gt;
&lt;br /&gt;
A discovery service-hez kapcsolódó dokumentáció az alábbi URL-en található:&lt;br /&gt;
https://svn.softwareborsen.dk/oiosaml.java/sp/trunk/docs/discovery.html&lt;br /&gt;
Metadata frissítés&lt;br /&gt;
A meta-adatok frissítése kapcsán meg kell oldani a HREF letölthető teljes meta-adatának entitásonként külön file-ba történő szétvágását.&lt;br /&gt;
Ezt a feladatot a mdsigner-j-cli-2.0-rc2-jar-with-dependencies.jar nevű program végzi el.&lt;br /&gt;
Működéséhez szükséges a metadata aláíró root certificate, ezzel lehet ellenőrizni a metadata hitelességét.&lt;br /&gt;
A programot célszerű rendszeresen, pl. naponta futtatni, egy külön folyamatban leválogatni a releváns IdP-ket, ellenőrizni a módosulásokat, módosulás esetén frissíteni a SAML SP metadata könyvtárát és újraindítani a webalkalmazást.&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=1933</id>
		<title>Szerkesztő:Gyufi(AT)sztaki.hu</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=1933"/>
				<updated>2010-09-16T07:15:16Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Szövetségi alapon történő felhasználó azonosítás Huntéka könyvtári alkalmazásokban]]=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Networkshop 2010.=&lt;br /&gt;
&lt;br /&gt;
simpleSAMLphp, mint IdP a Sztakiban.&lt;br /&gt;
&lt;br /&gt;
http://docs.google.com/present/view?id=dgxggrcj_105djxkgkdq&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=1668</id>
		<title>Szerkesztő:Gyufi(AT)sztaki.hu</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Szerkeszt%C5%91:Gyufi(AT)sztaki.hu&amp;diff=1668"/>
				<updated>2010-04-09T09:14:32Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: Új oldal, tartalma: „Networkshop 2010.  simpleSAMLphp, mint IdP a Sztakiban.  http://docs.google.com/present/view?id=dgxggrcj_105djxkgkdq”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Networkshop 2010.&lt;br /&gt;
&lt;br /&gt;
simpleSAMLphp, mint IdP a Sztakiban.&lt;br /&gt;
&lt;br /&gt;
http://docs.google.com/present/view?id=dgxggrcj_105djxkgkdq&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Attrib%C3%BAtum_felold%C3%A1s&amp;diff=1276</id>
		<title>Attribútum feloldás</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Attrib%C3%BAtum_felold%C3%A1s&amp;diff=1276"/>
				<updated>2009-10-01T09:15:17Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* JNDIDirectoryDataConnector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A felhasználó azonosítása után az IdP még csak a REMOTE_USER változóban megkapott principal azonosítót tudja. A következő lépésben meg kell határozni a felhasználóhoz kapcsolódó attribútumokat. Ezeket az attribútumokat általában valamilyen adatbázisból (LDAP, SQL) kell lekérdezni, de lehetséges konstans, ill. származtatott attribútumokat is használni.&lt;br /&gt;
&lt;br /&gt;
Fontos megjegyezni, hogy az attribútumok csak akkor adódnak át az SP-knek, ha ez az [[ShibIdPARP | Attribute Release Policy]]-ban engedélyezve van. Természetesen fel nem oldott attribútumokat nem lehet átadni.&lt;br /&gt;
&lt;br /&gt;
Az attribútum feloldást az [[ShibIdPConfig | IdP konfiguráció]] &amp;lt;code&amp;gt;IdPConfig&amp;lt;/code&amp;gt; elemének &amp;lt;code&amp;gt;resolverConfig&amp;lt;/code&amp;gt; attribútumában megadott XML állományban konfigurálhatjuk. Ez általában a '''&amp;lt;code&amp;gt;resolver.xml&amp;lt;/code&amp;gt;''' vagy '''&amp;lt;code&amp;gt;resolver.ldap.xml&amp;lt;/code&amp;gt;''' névre hallgat&lt;br /&gt;
== Működő példa konfiguráció ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;AttributeResolver xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
                   xmlns=&amp;quot;urn:mace:shibboleth:resolver:1.0&amp;quot;&lt;br /&gt;
                   xsi:schemaLocation=&amp;quot;urn:mace:shibboleth:resolver:1.0 shibboleth-resolver-1.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonEntitlement&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonAffiliation&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:cn&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:uid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonPrincipalName&amp;quot; smartScope=&amp;quot;niif.hu&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeDependency requires=&amp;quot;urn:mace:dir:attribute-def:uid&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonScopedAffiliation&amp;quot; smartScope=&amp;quot;niif.hu&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeDependency requires=&amp;quot;urn:mace:dir:attribute-def:eduPersonAffiliation&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonOrgDN&amp;quot; &amp;gt;&lt;br /&gt;
                &amp;lt;DataConnectorDependency requires=&amp;quot;staticOrgDN&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;JNDIDirectoryDataConnector id=&amp;quot;directory&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Search filter=&amp;quot;uid=%PRINCIPAL%&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Controls searchScope=&amp;quot;ONELEVEL_SCOPE&amp;quot; returningObjects=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Search&amp;gt;&lt;br /&gt;
                &amp;lt;Property name=&amp;quot;java.naming.factory.initial&amp;quot; value=&amp;quot;com.sun.jndi.ldap.LdapCtxFactory&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;Property name=&amp;quot;java.naming.provider.url&amp;quot; &lt;br /&gt;
                          value=&amp;quot;ldap://directory.iif.hu:636/ou=users,o=niifi,o=niif,c=hu&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;Property name=&amp;quot;java.naming.security.protocol&amp;quot; value=&amp;quot;ssl&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;Property name=&amp;quot;java.naming.security.principal&amp;quot; &lt;br /&gt;
                          value=&amp;quot;uid=niif-idp,ou=shib,ou=applications,o=niifi,o=niif,c=hu&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;Property name=&amp;quot;java.naming.security.credentials&amp;quot; value=&amp;quot;XXXXXXXX&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/JNDIDirectoryDataConnector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;StaticDataConnector id=&amp;quot;staticOrgDN&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Attribute name=&amp;quot;eduPersonOrgDN&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Value&amp;gt;o=niifi,o=niif,c=hu&amp;lt;/Value&amp;gt;&lt;br /&gt;
                &amp;lt;/Attribute&amp;gt;&lt;br /&gt;
        &amp;lt;/StaticDataConnector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/AttributeResolver&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Attribútum feloldás menete ==&lt;br /&gt;
Az attribútum feloldás abból áll, hogy attribútum definícióhoz adat(bázis) konnektorokat rendelünk. Az adat konnektor feladata az attribútum értékének meghatározása, pl. külső adatforrásokból. Az attribútum definíció azt adja meg, hogy miként kell az értéket a Shibboleth által használt SAML [[Assertion | assertionbe]] tenni.&lt;br /&gt;
== Adatok kinyerése (DataConnector) ==&lt;br /&gt;
Minden adatforrás rendelkezik egy ''id'' mezővel, amelynek az összes adatforrásra nézve egyedinek kell lennie.&lt;br /&gt;
=== JNDIDirectoryDataConnector ===&lt;br /&gt;
Ennek segítségével állíthatjuk be a JNDI LDAP kapcsolat paramétereit. Ezen az interfészen keresztül tetszőleges LDAP v3 interfészt biztosító adatforrás lekérdezhető.&lt;br /&gt;
&lt;br /&gt;
Példa: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;JNDIDirectoryDataConnector id=&amp;quot;directory&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Search filter=&amp;quot;uid=%PRINCIPAL%&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Controls searchScope=&amp;quot;ONELEVEL_SCOPE&amp;quot; returningObjects=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Search&amp;gt;&lt;br /&gt;
    &amp;lt;Property name=&amp;quot;java.naming.factory.initial&amp;quot; value=&amp;quot;com.sun.jndi.ldap.LdapCtxFactory&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Property name=&amp;quot;java.naming.provider.url&amp;quot; &lt;br /&gt;
              value=&amp;quot;ldap://directory.iif.hu:636/ou=users,o=niifi,o=niif,c=hu&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Property name=&amp;quot;java.naming.security.protocol&amp;quot; value=&amp;quot;ssl&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Property name=&amp;quot;java.naming.security.principal&amp;quot; &lt;br /&gt;
              value=&amp;quot;uid=niif-idp,ou=shib,ou=applications,o=niifi,o=niif,c=hu&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Property name=&amp;quot;java.naming.security.credentials&amp;quot; value=&amp;quot;XXXXXXXX&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/JNDIDirectoryDataConnector&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Példa beállítások magyarázata (részletes beállítási lehetőségekkel kapcsolatban lásd a [https://spaces.internet2.edu/display/SHIB/JNDIDataConnector Shibboleth Wiki vonatkozó részét]!)&lt;br /&gt;
* ''&amp;lt;code&amp;gt;Search@filter&amp;lt;/code&amp;gt;'': az az LDAP filter, amely alapján a REMOTE_USER értékéből megkereshető a felhasználó LDAP entry-je. Ha összetett szűrő szabályt kell mondani, akkor a '''&amp;amp;''' jelet '''&amp;amp;amp;amp;'''-vel kell eszképelni.&lt;br /&gt;
* ''&amp;lt;code&amp;gt;Search/Controls@searchScope&amp;lt;/code&amp;gt;'': az LDAP lekérdezés scope-ja. Lehetséges értékek:&lt;br /&gt;
** ONELEVEL_SCOPE&lt;br /&gt;
** OBJECT_SCOPE (base)&lt;br /&gt;
** SUBTREE_SCOPE&lt;br /&gt;
* ''&amp;lt;code&amp;gt;java.naming.provider.url&amp;lt;/code&amp;gt; property'': LDAP URL, amely a search base DN-jét is tartalmazza&lt;br /&gt;
* ''&amp;lt;code&amp;gt;java.naming.provider.protocol&amp;lt;/code&amp;gt; property'': itt lehet megadni, hogy SSL-t használjon-e az LDAP kapcsolat kiépítésekor. Ha nem akarunk SSL-t használni, akkor ezt a property-t ne adjuk meg! Lásd még: [[LDAP kliens SSL]]&lt;br /&gt;
* ''&amp;lt;code&amp;gt;java.naming.security.principal&amp;lt;/code&amp;gt; property'': az a DN, amellyel a Shibboleth alkalmazás bind-ol az LDAP szerverhez.&lt;br /&gt;
* ''&amp;lt;code&amp;gt;java.naming.security.credentials&amp;lt;/code&amp;gt; property'': az előző DN-hez tartozó jelszó&lt;br /&gt;
&lt;br /&gt;
=== JDBCDataConnector ===&lt;br /&gt;
E konnektor segítségével tetszőleges JDBC-n keresztül elérhető adatforrásból kinyerhetünk adatokat.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;JDBCDataConnector id=&amp;quot;studentSystem&amp;quot;&lt;br /&gt;
                   dbURL=&amp;quot;jdbc:postgresql://test.example.edu/test?user=postgres&amp;amp;password=test&amp;quot;&lt;br /&gt;
                   dbDriver=&amp;quot;org.postgresql.Driver&amp;quot;&lt;br /&gt;
    &amp;lt;Query&amp;gt;select entitlement from foo where name = ?&amp;lt;/Query&amp;gt;&lt;br /&gt;
&amp;lt;/JDBCDataConnector&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;?&amp;quot; karakterrel hivatkozhatunk a REMOTE_USER változóban kapott principal azonosítóra.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;JDBCDataConnector&amp;lt;/code&amp;gt; részletes paraméterezhetőségéről lásd a [https://spaces.internet2.edu/display/SHIB/JDBCDataConnector Shibboleth wiki vonatkozó részét]!&lt;br /&gt;
&lt;br /&gt;
=== StaticDataConnector ===&lt;br /&gt;
Ennek segítségével rendelhetünk statikus adatokat a felhasználókhoz. Legtöbbször akkor használjuk, ha az IdP-nél történt azonosítás tényéből attribútumokat akarunk származtatni.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;StaticDataConnector id=&amp;quot;staticOrgDN&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Attribute name=&amp;quot;eduPersonOrgDN&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Value&amp;gt;o=niifi,o=niif,c=hu&amp;lt;/Value&amp;gt;&lt;br /&gt;
   &amp;lt;/Attribute&amp;gt;&lt;br /&gt;
&amp;lt;/StaticDataConnector&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Egy &amp;lt;code&amp;gt;StaticDataConnector&amp;lt;/code&amp;gt; egyszerre több attribútumot is tud szolgáltatni, ill. egy attribútumnak több értéke is lehet. Bővebben lásd a [https://spaces.internet2.edu/display/SHIB/StaticDataConnector Shibboleth wiki vonatkozó részét]!&lt;br /&gt;
&lt;br /&gt;
== Attribútumok előkészítése (AttributeDefinition) ==&lt;br /&gt;
Az attribútum definíciók arra valók, hogy az adatforrásból származó értéket az átvitelt biztosító SAML szabványnak, illetve az attribútumot fogadó SP-nek megfelelő formátumba konvertálják. Ezért minden attribútum definíciónál meg lehet adni függőséget, amelyből az attribútum értéke származik. A függőségnek két fajtája van:&lt;br /&gt;
* '''DataConnectorDependency''': az attribútum értéke egy már definiált adatforrásból származik.&lt;br /&gt;
* '''AttributeDependency''': az attribútum értéke egy másik (feloldott) attribútum értékéből származik&lt;br /&gt;
Mindkét függőség megadásakor a ''requires'' XML attribútummal hivatkozhatunk a DataConnector vagy az AttributeDefinition ''id''-jére. Ebből következik az is, hogy minden attribútum definíciónak egyedi ''id'' mezője kell, hogy legyen.&lt;br /&gt;
=== SimpleAttributeDefinition ===&lt;br /&gt;
Ezzel a pluginnal egyszerű műveleteket végezhetünk az adatforrásokból származó értékeken (vagy akár átalakítás nélkül is továbbíthatjuk). Az alábbi attribútumokkal rendelkezik:&lt;br /&gt;
* ''id'': ezzel lehet rá függőségekben hivatkozni, ill. az attribútum forrásának megállapításához is felhasználható. Az [[Assertion]]-ben ennek az értéke szerepel attribútum névként.&lt;br /&gt;
* ''sourceName'': ezzel lehet explicit módon meghatározni a forrás nevét&lt;br /&gt;
* ''smartScope'': ha az érték nem scope-olt (azaz nem &amp;lt;code&amp;gt;valami@valahol&amp;lt;/code&amp;gt; formátumú), akkor az attribútum scope-ja a &amp;lt;code&amp;gt;smartScope&amp;lt;/code&amp;gt; lesz, ellenkező esetben a scope értéke a &amp;quot;@ utáni rész&amp;quot; lesz (pl.: &amp;lt;code&amp;gt;valahol&amp;lt;/code&amp;gt;).&lt;br /&gt;
:: &amp;lt;small&amp;gt;(Leegyszerűsítve) egy [[Assertion]]-ben egy attribútum így adható meg: attribútum név + scope + érték(ek)&amp;lt;/small&amp;gt;&lt;br /&gt;
* ''allowEmpty'': ez a boolean paraméter adja meg, hogy az üres érték elfogadható-e. Alapértelmezett értéke &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, azaz ha nincs érték, akkor az [[Assertion]]-be nem kerül bele az attribútum. Ha  &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, akkor érték nélkül kerül bele.&lt;br /&gt;
&lt;br /&gt;
A ''sourceName'' mezőt nem kötelező megadni, mert a forrás attribútum neve megadható az ''id'' paraméterben is. A forrás attribútum nevének meghatározása a következő sorrendben történik:&lt;br /&gt;
# Ha meg van adva a ''sourceName'', akkor az adat konnektortól ezt az attribútumot kapja meg&lt;br /&gt;
# Ha van olyan - az adat konnektor által nyújtott - attribútum, amely az ''id'' mezővel teljesen megegyezik, akkor annak az értékét használja&lt;br /&gt;
# Egyébként az adat konnektortól az ''id'' mezőben megadott paraméter utolsó &amp;quot;''':'''&amp;quot; vagy &amp;quot;'''/'''&amp;quot; jel utáni részének megfelelő attribútumot kérdezi le.&lt;br /&gt;
&lt;br /&gt;
'''Példa 1.''': a ''directory'' nevű adat konnektortól lekérdezi a &amp;quot;cn&amp;quot; attribútumot, majd ennek értékét az &amp;lt;code&amp;gt;urn:mace:dir:attribute-def:cn&amp;lt;/code&amp;gt; attribútumban küldi el a másik félnek.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:cn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Példa 2.''': a ''directory'' nevű adat konnektortól lekérdezi a ''displayName'' attribútumot, majd ennek értékét az &amp;lt;code&amp;gt;urn:mace:dir:attribute-def:&amp;lt;b&amp;gt;cn&amp;lt;/b&amp;gt;&amp;lt;/code&amp;gt; (!) attribútumban küldi el a másik félnek.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:cn&amp;quot; sourceName=&amp;quot;displayName&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Példa 3.''': a (már korábban feloldott) &amp;lt;code&amp;gt;urn:mace:dir:attribute-def:uid&amp;lt;/code&amp;gt; attribútumot (amennyiben az nem scope-olt) kiegészíti az &amp;quot;niif.hu&amp;quot; scope-pal, és ezt adja át &amp;lt;code&amp;gt;urn:mace:dir:attribute-def:eduPersonPrincipalName&amp;lt;/code&amp;gt; néven. Ha viszont az uid értéke pl. &amp;lt;code&amp;gt;valaki@valahol&amp;lt;/code&amp;gt;, akkor az átadott érték a &amp;lt;code&amp;gt;valaki&amp;lt;/code&amp;gt; lesz, a scope pedig &amp;lt;code&amp;gt;valahol&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonPrincipalName&amp;quot; smartScope=&amp;quot;niif.hu&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;AttributeDependency requires=&amp;quot;urn:mace:dir:attribute-def:uid&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Részletes leírást lásd a [https://spaces.internet2.edu/display/SHIB/SimpleAttributeDefinition Shibboleth wiki vonatkozó részében]!&lt;br /&gt;
&lt;br /&gt;
=== CompositeAttributeDefinition ===&lt;br /&gt;
'''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/CompositeAttributeDefinition&lt;br /&gt;
&lt;br /&gt;
=== RegExpAttributeDefinition ===&lt;br /&gt;
'''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/RegExpAttributeDefinition&lt;br /&gt;
&lt;br /&gt;
=== ScriptletAttributeDefinition ===&lt;br /&gt;
'''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/ScriptletAttributeDefinition&lt;br /&gt;
&lt;br /&gt;
=== SAML2PersistentID ===&lt;br /&gt;
'''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/SAML2PersistentIDAttributeDefinition&lt;br /&gt;
&lt;br /&gt;
== Tesztelés ==&lt;br /&gt;
A Shibboleth IdP-hez tartozik egy '''resolvertest''' névre hallgató program, amellyel ellenőrizhetjük az attribútumok feloldását. Használatához először be kell állítani a telepítésnek megfelelően az IDP_HOME és a JAVA_HOME változókat.&lt;br /&gt;
&lt;br /&gt;
Példa: &amp;lt;code&amp;gt;/usr/local/shibboleth-idp/bin/resolvertest --resolverxml=file:///etc/shibboleth-idp/resolver.ldap.xml --user=bajnokk&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Attribute xmlns=&amp;quot;urn:oasis:names:tc:SAML:1.0:assertion&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
           xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
           AttributeName=&amp;quot;urn:mace:dir:attribute-def:eduPersonOrgDN&amp;quot; &lt;br /&gt;
           AttributeNamespace=&amp;quot;urn:mace:shibboleth:1.0:attributeNamespace:uri&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeValue&amp;gt;o=niifi,o=niif,c=hu&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Attribute xmlns=&amp;quot;urn:oasis:names:tc:SAML:1.0:assertion&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
           xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
           AttributeName=&amp;quot;urn:mace:dir:attribute-def:uid&amp;quot; &lt;br /&gt;
           AttributeNamespace=&amp;quot;urn:mace:shibboleth:1.0:attributeNamespace:uri&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeValue&amp;gt;bajnokk&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Attribute xmlns=&amp;quot;urn:oasis:names:tc:SAML:1.0:assertion&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; &lt;br /&gt;
           xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
           AttributeName=&amp;quot;urn:mace:dir:attribute-def:eduPersonPrincipalName&amp;quot; &lt;br /&gt;
           AttributeNamespace=&amp;quot;urn:mace:shibboleth:1.0:attributeNamespace:uri&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeValue Scope=&amp;quot;niif.hu&amp;quot;&amp;gt;bajnokk&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Forrás ==&lt;br /&gt;
* https://spaces.internet2.edu/display/SHIB/NewIdPAttribute&lt;br /&gt;
* https://spaces.internet2.edu/display/SHIB/IdPAttributeConfig&lt;br /&gt;
&lt;br /&gt;
[[Kategória: Shibboleth IdP]]&lt;br /&gt;
[[Kategória: Shibboleth IdP konfiguráció]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Attrib%C3%BAtum_felold%C3%A1s&amp;diff=1275</id>
		<title>Attribútum feloldás</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Attrib%C3%BAtum_felold%C3%A1s&amp;diff=1275"/>
				<updated>2009-10-01T09:14:42Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* JNDIDirectoryDataConnector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A felhasználó azonosítása után az IdP még csak a REMOTE_USER változóban megkapott principal azonosítót tudja. A következő lépésben meg kell határozni a felhasználóhoz kapcsolódó attribútumokat. Ezeket az attribútumokat általában valamilyen adatbázisból (LDAP, SQL) kell lekérdezni, de lehetséges konstans, ill. származtatott attribútumokat is használni.&lt;br /&gt;
&lt;br /&gt;
Fontos megjegyezni, hogy az attribútumok csak akkor adódnak át az SP-knek, ha ez az [[ShibIdPARP | Attribute Release Policy]]-ban engedélyezve van. Természetesen fel nem oldott attribútumokat nem lehet átadni.&lt;br /&gt;
&lt;br /&gt;
Az attribútum feloldást az [[ShibIdPConfig | IdP konfiguráció]] &amp;lt;code&amp;gt;IdPConfig&amp;lt;/code&amp;gt; elemének &amp;lt;code&amp;gt;resolverConfig&amp;lt;/code&amp;gt; attribútumában megadott XML állományban konfigurálhatjuk. Ez általában a '''&amp;lt;code&amp;gt;resolver.xml&amp;lt;/code&amp;gt;''' vagy '''&amp;lt;code&amp;gt;resolver.ldap.xml&amp;lt;/code&amp;gt;''' névre hallgat&lt;br /&gt;
== Működő példa konfiguráció ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;AttributeResolver xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
                   xmlns=&amp;quot;urn:mace:shibboleth:resolver:1.0&amp;quot;&lt;br /&gt;
                   xsi:schemaLocation=&amp;quot;urn:mace:shibboleth:resolver:1.0 shibboleth-resolver-1.0.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonEntitlement&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonAffiliation&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:cn&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:uid&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonPrincipalName&amp;quot; smartScope=&amp;quot;niif.hu&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeDependency requires=&amp;quot;urn:mace:dir:attribute-def:uid&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonScopedAffiliation&amp;quot; smartScope=&amp;quot;niif.hu&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeDependency requires=&amp;quot;urn:mace:dir:attribute-def:eduPersonAffiliation&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonOrgDN&amp;quot; &amp;gt;&lt;br /&gt;
                &amp;lt;DataConnectorDependency requires=&amp;quot;staticOrgDN&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
         &amp;lt;JNDIDirectoryDataConnector id=&amp;quot;directory&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Search filter=&amp;quot;uid=%PRINCIPAL%&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Controls searchScope=&amp;quot;ONELEVEL_SCOPE&amp;quot; returningObjects=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;/Search&amp;gt;&lt;br /&gt;
                &amp;lt;Property name=&amp;quot;java.naming.factory.initial&amp;quot; value=&amp;quot;com.sun.jndi.ldap.LdapCtxFactory&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;Property name=&amp;quot;java.naming.provider.url&amp;quot; &lt;br /&gt;
                          value=&amp;quot;ldap://directory.iif.hu:636/ou=users,o=niifi,o=niif,c=hu&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;Property name=&amp;quot;java.naming.security.protocol&amp;quot; value=&amp;quot;ssl&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;Property name=&amp;quot;java.naming.security.principal&amp;quot; &lt;br /&gt;
                          value=&amp;quot;uid=niif-idp,ou=shib,ou=applications,o=niifi,o=niif,c=hu&amp;quot; /&amp;gt;&lt;br /&gt;
                &amp;lt;Property name=&amp;quot;java.naming.security.credentials&amp;quot; value=&amp;quot;XXXXXXXX&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/JNDIDirectoryDataConnector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;StaticDataConnector id=&amp;quot;staticOrgDN&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Attribute name=&amp;quot;eduPersonOrgDN&amp;quot;&amp;gt;&lt;br /&gt;
                        &amp;lt;Value&amp;gt;o=niifi,o=niif,c=hu&amp;lt;/Value&amp;gt;&lt;br /&gt;
                &amp;lt;/Attribute&amp;gt;&lt;br /&gt;
        &amp;lt;/StaticDataConnector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/AttributeResolver&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Attribútum feloldás menete ==&lt;br /&gt;
Az attribútum feloldás abból áll, hogy attribútum definícióhoz adat(bázis) konnektorokat rendelünk. Az adat konnektor feladata az attribútum értékének meghatározása, pl. külső adatforrásokból. Az attribútum definíció azt adja meg, hogy miként kell az értéket a Shibboleth által használt SAML [[Assertion | assertionbe]] tenni.&lt;br /&gt;
== Adatok kinyerése (DataConnector) ==&lt;br /&gt;
Minden adatforrás rendelkezik egy ''id'' mezővel, amelynek az összes adatforrásra nézve egyedinek kell lennie.&lt;br /&gt;
=== JNDIDirectoryDataConnector ===&lt;br /&gt;
Ennek segítségével állíthatjuk be a JNDI LDAP kapcsolat paramétereit. Ezen az interfészen keresztül tetszőleges LDAP v3 interfészt biztosító adatforrás lekérdezhető.&lt;br /&gt;
&lt;br /&gt;
Példa: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;JNDIDirectoryDataConnector id=&amp;quot;directory&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Search filter=&amp;quot;uid=%PRINCIPAL%&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Controls searchScope=&amp;quot;ONELEVEL_SCOPE&amp;quot; returningObjects=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Search&amp;gt;&lt;br /&gt;
    &amp;lt;Property name=&amp;quot;java.naming.factory.initial&amp;quot; value=&amp;quot;com.sun.jndi.ldap.LdapCtxFactory&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Property name=&amp;quot;java.naming.provider.url&amp;quot; &lt;br /&gt;
              value=&amp;quot;ldap://directory.iif.hu:636/ou=users,o=niifi,o=niif,c=hu&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Property name=&amp;quot;java.naming.security.protocol&amp;quot; value=&amp;quot;ssl&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Property name=&amp;quot;java.naming.security.principal&amp;quot; &lt;br /&gt;
              value=&amp;quot;uid=niif-idp,ou=shib,ou=applications,o=niifi,o=niif,c=hu&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Property name=&amp;quot;java.naming.security.credentials&amp;quot; value=&amp;quot;XXXXXXXX&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/JNDIDirectoryDataConnector&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; Példa beállítások magyarázata (részletes beállítási lehetőségekkel kapcsolatban lásd a [https://spaces.internet2.edu/display/SHIB/JNDIDataConnector Shibboleth Wiki vonatkozó részét]!)&lt;br /&gt;
* ''&amp;lt;code&amp;gt;Search@filter&amp;lt;/code&amp;gt;'': az az LDAP filter, amely alapján a REMOTE_USER értékéből megkereshető a felhasználó LDAP entry-je. Ha összetett szűrő szabályt kell mondani, akkor a '''&amp;amp;''' jelet '''&amp;amp;amp;'''-vel kell eszképelni.&lt;br /&gt;
* ''&amp;lt;code&amp;gt;Search/Controls@searchScope&amp;lt;/code&amp;gt;'': az LDAP lekérdezés scope-ja. Lehetséges értékek:&lt;br /&gt;
** ONELEVEL_SCOPE&lt;br /&gt;
** OBJECT_SCOPE (base)&lt;br /&gt;
** SUBTREE_SCOPE&lt;br /&gt;
* ''&amp;lt;code&amp;gt;java.naming.provider.url&amp;lt;/code&amp;gt; property'': LDAP URL, amely a search base DN-jét is tartalmazza&lt;br /&gt;
* ''&amp;lt;code&amp;gt;java.naming.provider.protocol&amp;lt;/code&amp;gt; property'': itt lehet megadni, hogy SSL-t használjon-e az LDAP kapcsolat kiépítésekor. Ha nem akarunk SSL-t használni, akkor ezt a property-t ne adjuk meg! Lásd még: [[LDAP kliens SSL]]&lt;br /&gt;
* ''&amp;lt;code&amp;gt;java.naming.security.principal&amp;lt;/code&amp;gt; property'': az a DN, amellyel a Shibboleth alkalmazás bind-ol az LDAP szerverhez.&lt;br /&gt;
* ''&amp;lt;code&amp;gt;java.naming.security.credentials&amp;lt;/code&amp;gt; property'': az előző DN-hez tartozó jelszó&lt;br /&gt;
&lt;br /&gt;
=== JDBCDataConnector ===&lt;br /&gt;
E konnektor segítségével tetszőleges JDBC-n keresztül elérhető adatforrásból kinyerhetünk adatokat.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;JDBCDataConnector id=&amp;quot;studentSystem&amp;quot;&lt;br /&gt;
                   dbURL=&amp;quot;jdbc:postgresql://test.example.edu/test?user=postgres&amp;amp;password=test&amp;quot;&lt;br /&gt;
                   dbDriver=&amp;quot;org.postgresql.Driver&amp;quot;&lt;br /&gt;
    &amp;lt;Query&amp;gt;select entitlement from foo where name = ?&amp;lt;/Query&amp;gt;&lt;br /&gt;
&amp;lt;/JDBCDataConnector&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;?&amp;quot; karakterrel hivatkozhatunk a REMOTE_USER változóban kapott principal azonosítóra.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;code&amp;gt;JDBCDataConnector&amp;lt;/code&amp;gt; részletes paraméterezhetőségéről lásd a [https://spaces.internet2.edu/display/SHIB/JDBCDataConnector Shibboleth wiki vonatkozó részét]!&lt;br /&gt;
&lt;br /&gt;
=== StaticDataConnector ===&lt;br /&gt;
Ennek segítségével rendelhetünk statikus adatokat a felhasználókhoz. Legtöbbször akkor használjuk, ha az IdP-nél történt azonosítás tényéből attribútumokat akarunk származtatni.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;StaticDataConnector id=&amp;quot;staticOrgDN&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Attribute name=&amp;quot;eduPersonOrgDN&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;Value&amp;gt;o=niifi,o=niif,c=hu&amp;lt;/Value&amp;gt;&lt;br /&gt;
   &amp;lt;/Attribute&amp;gt;&lt;br /&gt;
&amp;lt;/StaticDataConnector&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Egy &amp;lt;code&amp;gt;StaticDataConnector&amp;lt;/code&amp;gt; egyszerre több attribútumot is tud szolgáltatni, ill. egy attribútumnak több értéke is lehet. Bővebben lásd a [https://spaces.internet2.edu/display/SHIB/StaticDataConnector Shibboleth wiki vonatkozó részét]!&lt;br /&gt;
&lt;br /&gt;
== Attribútumok előkészítése (AttributeDefinition) ==&lt;br /&gt;
Az attribútum definíciók arra valók, hogy az adatforrásból származó értéket az átvitelt biztosító SAML szabványnak, illetve az attribútumot fogadó SP-nek megfelelő formátumba konvertálják. Ezért minden attribútum definíciónál meg lehet adni függőséget, amelyből az attribútum értéke származik. A függőségnek két fajtája van:&lt;br /&gt;
* '''DataConnectorDependency''': az attribútum értéke egy már definiált adatforrásból származik.&lt;br /&gt;
* '''AttributeDependency''': az attribútum értéke egy másik (feloldott) attribútum értékéből származik&lt;br /&gt;
Mindkét függőség megadásakor a ''requires'' XML attribútummal hivatkozhatunk a DataConnector vagy az AttributeDefinition ''id''-jére. Ebből következik az is, hogy minden attribútum definíciónak egyedi ''id'' mezője kell, hogy legyen.&lt;br /&gt;
=== SimpleAttributeDefinition ===&lt;br /&gt;
Ezzel a pluginnal egyszerű műveleteket végezhetünk az adatforrásokból származó értékeken (vagy akár átalakítás nélkül is továbbíthatjuk). Az alábbi attribútumokkal rendelkezik:&lt;br /&gt;
* ''id'': ezzel lehet rá függőségekben hivatkozni, ill. az attribútum forrásának megállapításához is felhasználható. Az [[Assertion]]-ben ennek az értéke szerepel attribútum névként.&lt;br /&gt;
* ''sourceName'': ezzel lehet explicit módon meghatározni a forrás nevét&lt;br /&gt;
* ''smartScope'': ha az érték nem scope-olt (azaz nem &amp;lt;code&amp;gt;valami@valahol&amp;lt;/code&amp;gt; formátumú), akkor az attribútum scope-ja a &amp;lt;code&amp;gt;smartScope&amp;lt;/code&amp;gt; lesz, ellenkező esetben a scope értéke a &amp;quot;@ utáni rész&amp;quot; lesz (pl.: &amp;lt;code&amp;gt;valahol&amp;lt;/code&amp;gt;).&lt;br /&gt;
:: &amp;lt;small&amp;gt;(Leegyszerűsítve) egy [[Assertion]]-ben egy attribútum így adható meg: attribútum név + scope + érték(ek)&amp;lt;/small&amp;gt;&lt;br /&gt;
* ''allowEmpty'': ez a boolean paraméter adja meg, hogy az üres érték elfogadható-e. Alapértelmezett értéke &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, azaz ha nincs érték, akkor az [[Assertion]]-be nem kerül bele az attribútum. Ha  &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, akkor érték nélkül kerül bele.&lt;br /&gt;
&lt;br /&gt;
A ''sourceName'' mezőt nem kötelező megadni, mert a forrás attribútum neve megadható az ''id'' paraméterben is. A forrás attribútum nevének meghatározása a következő sorrendben történik:&lt;br /&gt;
# Ha meg van adva a ''sourceName'', akkor az adat konnektortól ezt az attribútumot kapja meg&lt;br /&gt;
# Ha van olyan - az adat konnektor által nyújtott - attribútum, amely az ''id'' mezővel teljesen megegyezik, akkor annak az értékét használja&lt;br /&gt;
# Egyébként az adat konnektortól az ''id'' mezőben megadott paraméter utolsó &amp;quot;''':'''&amp;quot; vagy &amp;quot;'''/'''&amp;quot; jel utáni részének megfelelő attribútumot kérdezi le.&lt;br /&gt;
&lt;br /&gt;
'''Példa 1.''': a ''directory'' nevű adat konnektortól lekérdezi a &amp;quot;cn&amp;quot; attribútumot, majd ennek értékét az &amp;lt;code&amp;gt;urn:mace:dir:attribute-def:cn&amp;lt;/code&amp;gt; attribútumban küldi el a másik félnek.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:cn&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Példa 2.''': a ''directory'' nevű adat konnektortól lekérdezi a ''displayName'' attribútumot, majd ennek értékét az &amp;lt;code&amp;gt;urn:mace:dir:attribute-def:&amp;lt;b&amp;gt;cn&amp;lt;/b&amp;gt;&amp;lt;/code&amp;gt; (!) attribútumban küldi el a másik félnek.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:cn&amp;quot; sourceName=&amp;quot;displayName&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;DataConnectorDependency requires=&amp;quot;directory&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Példa 3.''': a (már korábban feloldott) &amp;lt;code&amp;gt;urn:mace:dir:attribute-def:uid&amp;lt;/code&amp;gt; attribútumot (amennyiben az nem scope-olt) kiegészíti az &amp;quot;niif.hu&amp;quot; scope-pal, és ezt adja át &amp;lt;code&amp;gt;urn:mace:dir:attribute-def:eduPersonPrincipalName&amp;lt;/code&amp;gt; néven. Ha viszont az uid értéke pl. &amp;lt;code&amp;gt;valaki@valahol&amp;lt;/code&amp;gt;, akkor az átadott érték a &amp;lt;code&amp;gt;valaki&amp;lt;/code&amp;gt; lesz, a scope pedig &amp;lt;code&amp;gt;valahol&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;SimpleAttributeDefinition id=&amp;quot;urn:mace:dir:attribute-def:eduPersonPrincipalName&amp;quot; smartScope=&amp;quot;niif.hu&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;AttributeDependency requires=&amp;quot;urn:mace:dir:attribute-def:uid&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/SimpleAttributeDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Részletes leírást lásd a [https://spaces.internet2.edu/display/SHIB/SimpleAttributeDefinition Shibboleth wiki vonatkozó részében]!&lt;br /&gt;
&lt;br /&gt;
=== CompositeAttributeDefinition ===&lt;br /&gt;
'''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/CompositeAttributeDefinition&lt;br /&gt;
&lt;br /&gt;
=== RegExpAttributeDefinition ===&lt;br /&gt;
'''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/RegExpAttributeDefinition&lt;br /&gt;
&lt;br /&gt;
=== ScriptletAttributeDefinition ===&lt;br /&gt;
'''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/ScriptletAttributeDefinition&lt;br /&gt;
&lt;br /&gt;
=== SAML2PersistentID ===&lt;br /&gt;
'''TODO''', lásd: https://spaces.internet2.edu/display/SHIB/SAML2PersistentIDAttributeDefinition&lt;br /&gt;
&lt;br /&gt;
== Tesztelés ==&lt;br /&gt;
A Shibboleth IdP-hez tartozik egy '''resolvertest''' névre hallgató program, amellyel ellenőrizhetjük az attribútumok feloldását. Használatához először be kell állítani a telepítésnek megfelelően az IDP_HOME és a JAVA_HOME változókat.&lt;br /&gt;
&lt;br /&gt;
Példa: &amp;lt;code&amp;gt;/usr/local/shibboleth-idp/bin/resolvertest --resolverxml=file:///etc/shibboleth-idp/resolver.ldap.xml --user=bajnokk&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Attribute xmlns=&amp;quot;urn:oasis:names:tc:SAML:1.0:assertion&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
           xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
           AttributeName=&amp;quot;urn:mace:dir:attribute-def:eduPersonOrgDN&amp;quot; &lt;br /&gt;
           AttributeNamespace=&amp;quot;urn:mace:shibboleth:1.0:attributeNamespace:uri&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeValue&amp;gt;o=niifi,o=niif,c=hu&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Attribute xmlns=&amp;quot;urn:oasis:names:tc:SAML:1.0:assertion&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
           xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
           AttributeName=&amp;quot;urn:mace:dir:attribute-def:uid&amp;quot; &lt;br /&gt;
           AttributeNamespace=&amp;quot;urn:mace:shibboleth:1.0:attributeNamespace:uri&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeValue&amp;gt;bajnokk&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Attribute xmlns=&amp;quot;urn:oasis:names:tc:SAML:1.0:assertion&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; &lt;br /&gt;
           xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; &lt;br /&gt;
           AttributeName=&amp;quot;urn:mace:dir:attribute-def:eduPersonPrincipalName&amp;quot; &lt;br /&gt;
           AttributeNamespace=&amp;quot;urn:mace:shibboleth:1.0:attributeNamespace:uri&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;AttributeValue Scope=&amp;quot;niif.hu&amp;quot;&amp;gt;bajnokk&amp;lt;/AttributeValue&amp;gt;&lt;br /&gt;
&amp;lt;/Attribute&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Forrás ==&lt;br /&gt;
* https://spaces.internet2.edu/display/SHIB/NewIdPAttribute&lt;br /&gt;
* https://spaces.internet2.edu/display/SHIB/IdPAttributeConfig&lt;br /&gt;
&lt;br /&gt;
[[Kategória: Shibboleth IdP]]&lt;br /&gt;
[[Kategória: Shibboleth IdP konfiguráció]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Metadata&amp;diff=1013</id>
		<title>Metadata</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Metadata&amp;diff=1013"/>
				<updated>2009-07-09T07:20:54Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: /* simpleSAMLphp */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ahhoz, hogy a [[Föderáció|föderációban]] résztvevő entitások biztonságosan tudjanak kommunikálni egymással, szükség van egy metaadat állományra. Ez a metaadat állomány szinte mindig humán felügyelettel jön létre, mivel a szervezetek közötti bizalmi kapcsolat technikai leképzésének ez az elsődleges eleme. (Másodlagos leképzésnek nevezhetjük az attribútum policy IdP és SP oldali megvalósítását.)&lt;br /&gt;
&lt;br /&gt;
== SAML 2.0 metaadatok ==&lt;br /&gt;
Pontos szabvány: http://docs.oasis-open.org/security/saml/v2.0/saml-metadata-2.0-os.pdf&lt;br /&gt;
&lt;br /&gt;
A metadata állomány az alábbi fontosabb információkat tartalmazza&lt;br /&gt;
* Érvényesség, aláírás&lt;br /&gt;
* [[Föderáció#Szerepek | Identity Providerek]]&lt;br /&gt;
* [[Attribute Authority | Attribute authorityk]]&lt;br /&gt;
* [[Föderáció#Szerepek | Service Providerek]]&lt;br /&gt;
* IdP-k és SP-k tanúsítványai&lt;br /&gt;
* IdP-khez és SP-khez kapcsolódó szervezeti és kontakt információk&lt;br /&gt;
=== Metadata érvényesége és hitelessége ===&lt;br /&gt;
=== IdP ===&lt;br /&gt;
=== AA ===&lt;br /&gt;
=== SP ===&lt;br /&gt;
=== Tanúsítványok ===&lt;br /&gt;
=== Kontakt információk ===&lt;br /&gt;
=== Példák ===&lt;br /&gt;
==== Egy IdP-hez tartozó metadata ====&lt;br /&gt;
A meglehetősen komplex eseteket leszámítva általában az Identity Provider és az [[Attribute Authority]] egyetlen entitásként kezelhető.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;EntityDescriptor entityID=&amp;quot;https://idp.niif.hu/shibboleth&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;IDPSSODescriptor protocolSupportEnumeration=&amp;quot;urn:oasis:names:tc:SAML:1.1:protocol urn:mace:shibboleth:1.0&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Extensions&amp;gt;&lt;br /&gt;
                        &amp;lt;shibmd:Scope&amp;gt;niif.hu&amp;lt;/shibmd:Scope&amp;gt;&lt;br /&gt;
                &amp;lt;/Extensions&amp;gt;&lt;br /&gt;
                &amp;lt;KeyDescriptor use=&amp;quot;signing&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
                        &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
                                &amp;lt;ds:X509Certificate&amp;gt;&lt;br /&gt;
MIIFAzCCA+ugAwIBAgICAl8wDQYJKoZIhvcNAQEFBQAwVTELMAkGA1UEBhMCSFUx&lt;br /&gt;
DTALBgNVBAoTBE5JSUYxIDAeBgNVBAsTF0NlcnRpZmljYXRlIEF1dGhvcml0aWVz&lt;br /&gt;
MRUwEwYDVQQDEwxOSUlGIFJvb3QgQ0EwHhcNMDcwMzMwMTA0OTQ5WhcNMDgwMzI5&lt;br /&gt;
MTA0OTQ5WjCB1zELMAkGA1UEBhMCSFUxEDAOBgNVBAoTB05JSUYgQ0ExEDAOBgNV&lt;br /&gt;
BAgTB0h1bmdhcnkxETAPBgNVBAcTCEJ1ZGFwZXN0MUIwQAYDVQQKEzlOYXRpb25h&lt;br /&gt;
bCBJbmZvcm1hdGlvbiBJbmZyYXN0cnVjdHVyZSBEZXZlbG9wbWVudCBJbnN0aXR1&lt;br /&gt;
dGUxFzAVBgNVBAsTDldlYnNlcnZlciBUZWFtMRQwEgYDVQQDEwtpZHAubmlpZi5o&lt;br /&gt;
dTEeMBwGCSqGSIb3DQEJARYPcG9sYWtvdmlAaWlmLmh1MIGfMA0GCSqGSIb3DQEB&lt;br /&gt;
AQUAA4GNADCBiQKBgQDFuOD6yq3NlMaQoR6qyRlET1WyGT+hllH+1qXIHHwag2gL&lt;br /&gt;
KYByQpBXPva3uSsswn3Rjmv2G/9ifX8sUadflM/MDoCLRoq9umJkcwmOHEp1fMfa&lt;br /&gt;
7Gx9isEeVNYO0taN9Lol5EQL6rdZMSmwAZ17DCTNs48tPdzm7ys5EOe+bHHA3wID&lt;br /&gt;
AQABo4IB3DCCAdgwEQYJYIZIAYb4QgEBBAQDAgZAMA4GA1UdDwEB/wQEAwIE8DAa&lt;br /&gt;
BgNVHREEEzARgQ9wb2xha292aUBpaWYuaHUwggFZBgNVHR8EggFQMIIBTDCBvKBb&lt;br /&gt;
oFmkVzBVMQswCQYDVQQGEwJodTENMAsGA1UEChMETklJRjEgMB4GA1UECxMXQ2Vy&lt;br /&gt;
dGlmaWNhdGUgQXV0aG9yaXRpZXMxFTATBgNVBAMTDE5JSUYgUm9vdCBDQYECAN6i&lt;br /&gt;
WaRXMFUxCzAJBgNVBAYTAmh1MQ0wCwYDVQQKEwROSUlGMSAwHgYDVQQLExdDZXJ0&lt;br /&gt;
aWZpY2F0ZSBBdXRob3JpdGllczEVMBMGA1UEAxMMTklJRiBSb290IENBMIGKoCmg&lt;br /&gt;
J4YlaHR0cDovL3d3dy5jYS5uaWlmLmh1L25paWYtY2EtY3JsLmNybIECAN6iWaRX&lt;br /&gt;
MFUxCzAJBgNVBAYTAmh1MQ0wCwYDVQQKEwROSUlGMSAwHgYDVQQLExdDZXJ0aWZp&lt;br /&gt;
Y2F0ZSBBdXRob3JpdGllczEVMBMGA1UEAxMMTklJRiBSb290IENBMB8GA1UdIwQY&lt;br /&gt;
MBaAFIxuIeJxr6Aqp7Dk/rx+o/0PoOOIMBkGA1UdIAQSMBAwDgYMKwYBBAHdCgEB&lt;br /&gt;
DAEAMA0GCSqGSIb3DQEBBQUAA4IBAQB262jS0aGJZrOg1Q6IVSodTnokgliojgWy&lt;br /&gt;
1FAojS6ML0w7T0eA1PnqX42eSfQFB2Nh71dBUmw6i++iHdQ1gyxOHIelSDb4JFOB&lt;br /&gt;
PoZ+3flwySXu42QgVjJZ46fEMsq2EM0PQV8p9pgBEjlG+6ifAEgJmKBnP+WCzQJ7&lt;br /&gt;
3rugtu+q8KKQ0oxP0bWLYGllJ6tKLa4gJ1P/oLe6uX+GWP+P3bZfMpOq9Tu2MU+r&lt;br /&gt;
l/gnG2rTSOBe7AEngRmeDfKKeFiSsg1cGxorxQJoEzBZksKUa0nlA9xtd30sUQFX&lt;br /&gt;
OI2/Xo2ihYFcpzu551S6+mutZNHqKgOT7uID/TCHr5R0Q1h7CPCS&lt;br /&gt;
                                &amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
                       &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
                    &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
                &amp;lt;/KeyDescriptor&amp;gt;&lt;br /&gt;
                &amp;lt;ArtifactResolutionService index=&amp;quot;1&amp;quot;&lt;br /&gt;
                        Binding=&amp;quot;urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding&amp;quot;&lt;br /&gt;
                        Location=&amp;quot;https://idp.niif.hu:8443/shibboleth-idp/Artifact&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;NameIDFormat&amp;gt;urn:mace:shibboleth:1.0:nameIdentifier&amp;lt;/NameIDFormat&amp;gt;&lt;br /&gt;
                &amp;lt;SingleSignOnService Binding=&amp;quot;urn:mace:shibboleth:1.0:profiles:AuthnRequest&amp;quot;&lt;br /&gt;
                                     Location=&amp;quot;https://idp.niif.hu/shibboleth-idp/SSO&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/IDPSSODescriptor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;AttributeAuthorityDescriptor protocolSupportEnumeration=&amp;quot;urn:oasis:names:tc:SAML:1.1:protocol&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;Extensions&amp;gt;&lt;br /&gt;
                        &amp;lt;!-- This is a Shibboleth extension to express attribute scope rules. --&amp;gt;&lt;br /&gt;
                        &amp;lt;shibmd:Scope&amp;gt;niif.hu&amp;lt;/shibmd:Scope&amp;gt;&lt;br /&gt;
                &amp;lt;/Extensions&amp;gt;&lt;br /&gt;
                &amp;lt;KeyDescriptor use=&amp;quot;signing&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
                        &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
                                &amp;lt;ds:X509Certificate&amp;gt;&lt;br /&gt;
MIIFAzCCA+ugAwIBAgICAl8wDQYJKoZIhvcNAQEFBQAwVTELMAkGA1UEBhMCSFUx&lt;br /&gt;
DTALBgNVBAoTBE5JSUYxIDAeBgNVBAsTF0NlcnRpZmljYXRlIEF1dGhvcml0aWVz&lt;br /&gt;
MRUwEwYDVQQDEwxOSUlGIFJvb3QgQ0EwHhcNMDcwMzMwMTA0OTQ5WhcNMDgwMzI5&lt;br /&gt;
MTA0OTQ5WjCB1zELMAkGA1UEBhMCSFUxEDAOBgNVBAoTB05JSUYgQ0ExEDAOBgNV&lt;br /&gt;
BAgTB0h1bmdhcnkxETAPBgNVBAcTCEJ1ZGFwZXN0MUIwQAYDVQQKEzlOYXRpb25h&lt;br /&gt;
bCBJbmZvcm1hdGlvbiBJbmZyYXN0cnVjdHVyZSBEZXZlbG9wbWVudCBJbnN0aXR1&lt;br /&gt;
dGUxFzAVBgNVBAsTDldlYnNlcnZlciBUZWFtMRQwEgYDVQQDEwtpZHAubmlpZi5o&lt;br /&gt;
dTEeMBwGCSqGSIb3DQEJARYPcG9sYWtvdmlAaWlmLmh1MIGfMA0GCSqGSIb3DQEB&lt;br /&gt;
AQUAA4GNADCBiQKBgQDFuOD6yq3NlMaQoR6qyRlET1WyGT+hllH+1qXIHHwag2gL&lt;br /&gt;
KYByQpBXPva3uSsswn3Rjmv2G/9ifX8sUadflM/MDoCLRoq9umJkcwmOHEp1fMfa&lt;br /&gt;
7Gx9isEeVNYO0taN9Lol5EQL6rdZMSmwAZ17DCTNs48tPdzm7ys5EOe+bHHA3wID&lt;br /&gt;
AQABo4IB3DCCAdgwEQYJYIZIAYb4QgEBBAQDAgZAMA4GA1UdDwEB/wQEAwIE8DAa&lt;br /&gt;
BgNVHREEEzARgQ9wb2xha292aUBpaWYuaHUwggFZBgNVHR8EggFQMIIBTDCBvKBb&lt;br /&gt;
oFmkVzBVMQswCQYDVQQGEwJodTENMAsGA1UEChMETklJRjEgMB4GA1UECxMXQ2Vy&lt;br /&gt;
dGlmaWNhdGUgQXV0aG9yaXRpZXMxFTATBgNVBAMTDE5JSUYgUm9vdCBDQYECAN6i&lt;br /&gt;
WaRXMFUxCzAJBgNVBAYTAmh1MQ0wCwYDVQQKEwROSUlGMSAwHgYDVQQLExdDZXJ0&lt;br /&gt;
aWZpY2F0ZSBBdXRob3JpdGllczEVMBMGA1UEAxMMTklJRiBSb290IENBMIGKoCmg&lt;br /&gt;
J4YlaHR0cDovL3d3dy5jYS5uaWlmLmh1L25paWYtY2EtY3JsLmNybIECAN6iWaRX&lt;br /&gt;
MFUxCzAJBgNVBAYTAmh1MQ0wCwYDVQQKEwROSUlGMSAwHgYDVQQLExdDZXJ0aWZp&lt;br /&gt;
Y2F0ZSBBdXRob3JpdGllczEVMBMGA1UEAxMMTklJRiBSb290IENBMB8GA1UdIwQY&lt;br /&gt;
MBaAFIxuIeJxr6Aqp7Dk/rx+o/0PoOOIMBkGA1UdIAQSMBAwDgYMKwYBBAHdCgEB&lt;br /&gt;
DAEAMA0GCSqGSIb3DQEBBQUAA4IBAQB262jS0aGJZrOg1Q6IVSodTnokgliojgWy&lt;br /&gt;
1FAojS6ML0w7T0eA1PnqX42eSfQFB2Nh71dBUmw6i++iHdQ1gyxOHIelSDb4JFOB&lt;br /&gt;
PoZ+3flwySXu42QgVjJZ46fEMsq2EM0PQV8p9pgBEjlG+6ifAEgJmKBnP+WCzQJ7&lt;br /&gt;
3rugtu+q8KKQ0oxP0bWLYGllJ6tKLa4gJ1P/oLe6uX+GWP+P3bZfMpOq9Tu2MU+r&lt;br /&gt;
l/gnG2rTSOBe7AEngRmeDfKKeFiSsg1cGxorxQJoEzBZksKUa0nlA9xtd30sUQFX&lt;br /&gt;
OI2/Xo2ihYFcpzu551S6+mutZNHqKgOT7uID/TCHr5R0Q1h7CPCS&lt;br /&gt;
                                &amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
                        &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
                    &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
                &amp;lt;/KeyDescriptor&amp;gt;&lt;br /&gt;
                &amp;lt;AttributeService Binding=&amp;quot;urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding&amp;quot;&lt;br /&gt;
                                  Location=&amp;quot;https://idp.niif.hu:8443/shibboleth-idp/AA&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;NameIDFormat&amp;gt;urn:mace:shibboleth:1.0:nameIdentifier&amp;lt;/NameIDFormat&amp;gt;&lt;br /&gt;
        &amp;lt;/AttributeAuthorityDescriptor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/EntityDescriptor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Egy SP-hez tartozó metadata ====&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;EntityDescriptor entityID=&amp;quot;https://rrd-ma.perfsonar.vh.hbone.hu/shibboleth&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;SPSSODescriptor protocolSupportEnumeration=&amp;quot;urn:oasis:names:tc:SAML:1.1:protocol&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;KeyDescriptor use=&amp;quot;signing&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;ds:KeyInfo&amp;gt;&lt;br /&gt;
                        &amp;lt;ds:X509Data&amp;gt;&lt;br /&gt;
                                &amp;lt;ds:X509Certificate&amp;gt;&lt;br /&gt;
MIIEmjCCA4KgAwIBAgICArwwDQYJKoZIhvcNAQEFBQAwVTELMAkGA1UEBhMCSFUx&lt;br /&gt;
DTALBgNVBAoTBE5JSUYxIDAeBgNVBAsTF0NlcnRpZmljYXRlIEF1dGhvcml0aWVz&lt;br /&gt;
MRUwEwYDVQQDEwxOSUlGIFJvb3QgQ0EwHhcNMDcxMTMwMTMwNzE4WhcNMDgxMTI5&lt;br /&gt;
MTMwNzE4WjBvMQswCQYDVQQGEwJIVTEQMA4GA1UEChMHTklJRiBDQTEOMAwGA1UE&lt;br /&gt;
CxMFSEJPTkUxFzAVBgNVBAsTDldlYnNlcnZlciBUZWFtMSUwIwYDVQQDExxycmQt&lt;br /&gt;
bWEucGVyZnNvbmFyLnZoLmhib25lLmh1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB&lt;br /&gt;
iQKBgQC2x6Hpjr4yB6EDkXUHNMlHz250kqWBXf/UI6TziV5rvMjvS8pdFnsZcIt1&lt;br /&gt;
coT03Fu4wzs6N8gtC5uW7f3JaBsG32sYZUorWcbecpgVy5ttcIqTM1RnxUsOktsM&lt;br /&gt;
RuBz7qYAQ1/B9VvBH7P7DeREgIGm7Skel/Q3Qhl4oG9PtFe1wQIDAQABo4IB3DCC&lt;br /&gt;
AdgwEQYJYIZIAYb4QgEBBAQDAgbAMA4GA1UdDwEB/wQEAwIE8DAaBgNVHREEEzAR&lt;br /&gt;
gQ9wb2xha292aUBpaWYuaHUwggFZBgNVHR8EggFQMIIBTDCBvKBboFmkVzBVMQsw&lt;br /&gt;
CQYDVQQGEwJodTENMAsGA1UEChMETklJRjEgMB4GA1UECxMXQ2VydGlmaWNhdGUg&lt;br /&gt;
QXV0aG9yaXRpZXMxFTATBgNVBAMTDE5JSUYgUm9vdCBDQYECAN6iWaRXMFUxCzAJ&lt;br /&gt;
BgNVBAYTAmh1MQ0wCwYDVQQKEwROSUlGMSAwHgYDVQQLExdDZXJ0aWZpY2F0ZSBB&lt;br /&gt;
dXRob3JpdGllczEVMBMGA1UEAxMMTklJRiBSb290IENBMIGKoCmgJ4YlaHR0cDov&lt;br /&gt;
L3d3dy5jYS5uaWlmLmh1L25paWYtY2EtY3JsLmNybIECAN6iWaRXMFUxCzAJBgNV&lt;br /&gt;
BAYTAmh1MQ0wCwYDVQQKEwROSUlGMSAwHgYDVQQLExdDZXJ0aWZpY2F0ZSBBdXRo&lt;br /&gt;
b3JpdGllczEVMBMGA1UEAxMMTklJRiBSb290IENBMB8GA1UdIwQYMBaAFIxuIeJx&lt;br /&gt;
r6Aqp7Dk/rx+o/0PoOOIMBkGA1UdIAQSMBAwDgYMKwYBBAHdCgEBCQEAMA0GCSqG&lt;br /&gt;
SIb3DQEBBQUAA4IBAQAVuG4+KUxQZcYCedQmW6Ih83gqMS7inxfBFeadc4Ts1egY&lt;br /&gt;
Wf6Y4CoEOrsdI7FmC7CCccarDaMC6PVJg1WlDV01LMGM2+6rcoMeMs/J5pCFTDhn&lt;br /&gt;
c6MPz6KedRcMvVJajY+BZvJPG9CNpyxdiUf/aDa28yRryVM0Jbm6BOFH+UrVHlVw&lt;br /&gt;
w2JxlmsHtk1fNmEU7gluzwo3FEZrx8nnLWkeTfMzz/iM+dudNm4sL99uGNEWGNFf&lt;br /&gt;
tLi+R35McE7CfyNNfOvlskZX++dSX/Re8CERTo3wZrHmFKIoOnJzo6v48d2tEbw0&lt;br /&gt;
a15Yl93MJCNlC5BUyvUMqKDLmHhTxmgO+HIaV7Kf&lt;br /&gt;
                                &amp;lt;/ds:X509Certificate&amp;gt;&lt;br /&gt;
                        &amp;lt;/ds:X509Data&amp;gt;&lt;br /&gt;
                    &amp;lt;/ds:KeyInfo&amp;gt;&lt;br /&gt;
                &amp;lt;/KeyDescriptor&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;NameIDFormat&amp;gt;urn:mace:shibboleth:1.0:nameIdentifier&amp;lt;/NameIDFormat&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                &amp;lt;AssertionConsumerService index=&amp;quot;1&amp;quot; isDefault=&amp;quot;true&amp;quot;&lt;br /&gt;
                        Binding=&amp;quot;urn:oasis:names:tc:SAML:1.0:profiles:artifact-01&amp;quot;&lt;br /&gt;
                        Location=&amp;quot;https://rrd-ma.perfsonar.vh.hbone.hu/Shibboleth.sso/SAML/Artifact&amp;quot;/&amp;gt;&lt;br /&gt;
                &amp;lt;AssertionConsumerService index=&amp;quot;2&amp;quot;&lt;br /&gt;
                        Binding=&amp;quot;urn:oasis:names:tc:SAML:1.0:profiles:browser-post&amp;quot;&lt;br /&gt;
                        Location=&amp;quot;https://rrd-ma.perfsonar.vh.hbone.hu/Shibboleth.sso/SAML/POST&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/SPSSODescriptor&amp;gt;&lt;br /&gt;
&amp;lt;/EntityDescriptor&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Shibboleth 1.3 ==&lt;br /&gt;
A Shibboleth (mind az SP, mind az IdP) a metaadatokat kizárólag a másik féllel kapcsolatban használja, tehát a saját konfigurációjával kapcsolatban figyelmen kívül hagyja.&lt;br /&gt;
&lt;br /&gt;
Az 1.3-as verzió kizárólag lokális állományokkal dolgozik (ez változni fog a 2.0-ban).&lt;br /&gt;
=== Scope ===&lt;br /&gt;
A Shibboleth 1.3 kiterjesztette a SAML2 metadata struktúrát egy saját, &amp;lt;code&amp;gt;Scope&amp;lt;/code&amp;gt; mezővel. Ez a &amp;quot;scope&amp;quot; igazából egy ''postfix'' tagot definiál, melynek segítségével bizonyos attribútumok értelmezési helye jól meghatározható. &lt;br /&gt;
&lt;br /&gt;
Erre jó példa az &amp;lt;code&amp;gt;eduPersonPrincipalName&amp;lt;/code&amp;gt; attribútum, mely a felhasználó egyedi azonosítóját adja meg. Ez az azonosító két részből áll: &lt;br /&gt;
* egy intézményen belüli egyedi azonosítóból (pl. &amp;lt;code&amp;gt;bajnokk&amp;lt;/code&amp;gt;)&lt;br /&gt;
* az intézmény azonosítójából, a scope-ból (pl. &amp;lt;code&amp;gt;niif.hu&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Ha a metadatában használjuk a &amp;lt;code&amp;gt;Scope&amp;lt;/code&amp;gt; mezőt, akkor az SP ellenőrizni tudja, hogy az IdP jogosult-e ilyen scope-pal rendelkező attribútumot kiadni.&lt;br /&gt;
&lt;br /&gt;
Szintén gyakran használt scope-os attribútum az &amp;lt;code&amp;gt;eduPersonScopedAffiliation&amp;lt;/code&amp;gt;.&lt;br /&gt;
=== Metadata eszközök ===&lt;br /&gt;
* [[Metadatatool]]&lt;br /&gt;
* [[Siterefresh]]&lt;br /&gt;
=== Több metadata állomány használata ===&lt;br /&gt;
Mind az IdP, mind az SP képes arra, hogy több metadata állományt használjon. Így például különvehetjük az SP-ket az IdP-ktől, ill. több föderációban lehet benne a provider.&lt;br /&gt;
&lt;br /&gt;
A metadata állományok tartalma összeadódik.&lt;br /&gt;
&lt;br /&gt;
{{ATTENTION|Ugyanaz az '''&amp;lt;code&amp;gt;entityId&amp;lt;/code&amp;gt;''' (más néven [[providerId]]) nem szerepelhet többször! Az '''&amp;lt;code&amp;gt;entityId&amp;lt;/code&amp;gt;'''-knek az összes használt metadata állományra nézve egyedinek kell lennie. }}&lt;br /&gt;
&lt;br /&gt;
=== Metadata állományok frissítése ===&lt;br /&gt;
A metadata állományok központi helyről való letöltésére a [[Siterefresh]] és a [[Metadatatool]] eszközök valók. &lt;br /&gt;
&lt;br /&gt;
Az átszerkesztett/új metadata állományt mind az IdP, mind az SP automatikusan beolvassa, újraindítás nem szükséges.&lt;br /&gt;
&lt;br /&gt;
== Nem SAML 2.0 metaadatokat használó alkalmazások ==&lt;br /&gt;
=== simpleSAMLphp ===&lt;br /&gt;
&lt;br /&gt;
Az újabb verziók már támogatják az XML formátumú metaadatokat, de az [[SimpleSAMLphp|SSP]] moduljai szeretik még mindig a flatfile formátumot használni. Van egy ''metarefresh'' nevű modul, ami képes webről leszedni a metaadatokat, ellenőrizni az aláírást, és flatfile formátumú metaadatokat generálni. Fontos momentum, hogy figyelembe veszi a ''&amp;lt;RequestedAttribute&amp;gt;'' elementet, ezáltal megoldható az IdP-k attribútum kiadási szabályzatának automatikus frissítése is.&lt;br /&gt;
&lt;br /&gt;
--[[Szerkesztő:Gyufi(AT)sztaki.hu|gyufi]] 2009. július 9., 07:20 (UTC)&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
=== Switch WAYF ===&lt;br /&gt;
{{TODO}}&lt;br /&gt;
&lt;br /&gt;
[[Kategória: AAI általános]]&lt;br /&gt;
[[Kategória: Csonkok]]&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=MTA_Sztaki_IdP&amp;diff=386</id>
		<title>MTA Sztaki IdP</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=MTA_Sztaki_IdP&amp;diff=386"/>
				<updated>2008-02-25T12:48:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FederationMember&lt;br /&gt;
|name=MTA SZTAKI&lt;br /&gt;
|techContact=Szabó Gyula, sys-admin@sztaki.hu&lt;br /&gt;
|numOfUsers=400&lt;br /&gt;
|numOfStudents=0&lt;br /&gt;
|numOfEmployees=400&lt;br /&gt;
|numOfPartners=0&lt;br /&gt;
|numOfOther=20&lt;br /&gt;
|affiliationUsage=IdP-nk csak munkatársakat azonosít, így minden assertion '''eduPersonAffiliaton''' attribútuma '''employee''' értékkel van kiállítva.&lt;br /&gt;
&lt;br /&gt;
|registrationStudent=Nem alkalmazható&lt;br /&gt;
|registrationEmployee=Új munkatárs intézetbe történő beléptetésekor a Személyügyi Osztály felelős munkatársa veszi fel a névtárba az elsődleges adatokat, megadva a belépő munkatárs nevét, szervezeti egységét, beosztását, a besorolás típusát (főállású/részmunkaidős, tudományos/nem tudományos munkatárs)) és az intézetbe való belépés idejét is. A belépő munkatársak mail címét, azonosítóját (uid) és elsődleges jelszavát a közvetlen munkahelyi vezető írásos témaszám igénylése alapján az alkalmazás adminisztrátor regisztrálja a névtárban. A munkatárs ezután azonosítható az IdP számára.&lt;br /&gt;
&lt;br /&gt;
|registrationPartners=A SZTAKI külön IdP-ben tartja nyilván a különböző projektekben résztvevő partnereket (''SZTAKI Partners' IdP''), ez az IdP nem része a [[HREF]] föderációnak. &lt;br /&gt;
|removeStudent=Nem alkalmazható&lt;br /&gt;
|removeEmployee=A munkatárs kilépésekor a Személyügyi Osztály felelős munkatársa regisztrálja a névtárban a kilépés tényét és időpontját. Ennek eredményeként a kilépett munkatárs már nem tud bejelentkezni a rendszerekbe, így a SZTAKI IdP sem azonosítja. Ezt követően a kilépők adatait áthelyezzük egy archívumba, ahová a kereséseket nem engedjük be.&lt;br /&gt;
|removePartner=HREF föderáció szempontjából érdektelen információ&lt;br /&gt;
|logRetention=Havonta &lt;br /&gt;
|backend=LDAP&lt;br /&gt;
|authType=Apache&lt;br /&gt;
|passwordPolicy=A felhasználóknak legalább 6 karakter hosszú jelszavakat kell használniuk. A jelszóváltoztató felület ellenőrzi, hogy az új jelszó megfelel-e ennek a követelménynek. &lt;br /&gt;
&lt;br /&gt;
A teszt felhasználók jelszavai minimálisan 8 karaktert (kis- és nagybetűket, számokat, opcionálisan egyéb karaktereket) kell, hogy tartalmazzanak.&lt;br /&gt;
|attrOrigin=Új munkatárs intézetbe történő beléptetésekor a Személyügyi Osztály felelős munkatársa veszi fel a névtárba az elsődleges adatokat, megadva a belépő munkatárs nevét, szervezeti egységét, beosztását és az intézetbe való belépés idejét is.&lt;br /&gt;
&lt;br /&gt;
A belépő munkatársak mail címét, azonosítóját (uid) és elsődleges jelszavát a közvetlen munkahelyi vezető írásos témaszám igénylése alapján az alkalmazás adminisztrátor regisztrálja a névtárban. &lt;br /&gt;
&lt;br /&gt;
A mail szolgáltatáshoz kapcsolódó egyéni beállítások önálló szabályozására kifejlesztettünk egy web-es felületet, az IFAR-t (Integrált Felhasználói Adminisztrációs Rendszer). Ennek segítségével a munkatársak önállóan tudják  változtatni jelszavaikat, kezelhetik leveleik átirányítását, ill. akár megadhatják a szabadság idején küldendő automatikus válasz szövegét is. Az önadminisztrációs felület ad lehetőséget az azonosított felhasználónak a szobaszáma, telefomszáma ill a mobil telefonszáma regisztrálására is.&lt;br /&gt;
|availability=Az Identity Provider funkciót egy nagy rendelkezésre állású klaszter biztosítja. A rendelkezésre állásnak nincs formálisan vállalt értéke, a havi rendelkezésre állási statisztikák szerint a megelőző 6 hónapban a SZTAKI IdP rendelkezésre állása 99,99% volt.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=MTA_Sztaki_IdP&amp;diff=385</id>
		<title>MTA Sztaki IdP</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=MTA_Sztaki_IdP&amp;diff=385"/>
				<updated>2008-02-21T12:51:54Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FederationMember&lt;br /&gt;
|name=MTA SZTAKI&lt;br /&gt;
|techContact=Szabó Gyula, sys-admin@sztaki.hu&lt;br /&gt;
|numOfUsers=400&lt;br /&gt;
|numOfStudents=0&lt;br /&gt;
|numOfEmployees=400&lt;br /&gt;
|numOfPartners=0&lt;br /&gt;
|numOfOther=20&lt;br /&gt;
|affiliationUsage=&lt;br /&gt;
&lt;br /&gt;
|registrationStudent=Nem alkalmazható&lt;br /&gt;
|registrationEmployee=Új munkatárs intézetbe történő beléptetésekor a Személyügyi Osztály felelős munkatársa veszi fel a névtárba az elsődleges adatokat, megadva a belépő munkatárs nevét, szervezeti egységét, beosztását, a besorolás típusát (főállású/részmunkaidős, tudományos/nem tudományos munkatárs)) és az intézetbe való belépés idejét is. A belépő munkatársak mail címét, azonosítóját (uid) és elsődleges jelszavát a közvetlen munkahelyi vezető írásos témaszám igénylése alapján az alkalmazás adminisztrátor regisztrálja a névtárban. A munkatárs ezután azonosítható az IdP számára.&lt;br /&gt;
&lt;br /&gt;
|registrationPartners=A SZTAKI külön IdP-ben tartja nyilván a különböző projektekben résztvevő partnereket (''SZTAKI Partners' IdP''), ez az IdP nem része a [[HREF]] föderációnak. &lt;br /&gt;
|removeStudent=Nem alkalmazható&lt;br /&gt;
|removeEmployee=A munkatárs kilépésekor a Személyügyi Osztály felelős munkatársa regisztrálja a névtárban a kilépés tényét és időpontját. Ennek eredményeként a kilépett munkatárs már nem tud bejelentkezni a rendszerekbe, így a SZTAKI IdP sem azonosítja. Ezt követően a kilépők adatait áthelyezzük egy archívumba, ahová a kereséseket nem engedjük be.&lt;br /&gt;
|removePartner=HREF föderáció szempontjából érdektelen információ&lt;br /&gt;
|logRetention=Havonta &lt;br /&gt;
|backend=LDAP&lt;br /&gt;
|authType=Apache&lt;br /&gt;
|passwordPolicy=A felhasználóknak legalább 6 karakter hosszú jelszavakat kell használniuk. A jelszóváltoztató felület ellenőrzi, hogy az új jelszó megfelel-e ennek a követelménynek. &lt;br /&gt;
&lt;br /&gt;
A teszt felhasználók jelszavai minimálisan 8 karaktert (kis- és nagybetűket, számokat, opcionálisan egyéb karaktereket) kell, hogy tartalmazzanak.&lt;br /&gt;
|attrOrigin=Új munkatárs intézetbe történő beléptetésekor a Személyügyi Osztály felelős munkatársa veszi fel a névtárba az elsődleges adatokat, megadva a belépő munkatárs nevét, szervezeti egységét, beosztását és az intézetbe való belépés idejét is.&lt;br /&gt;
&lt;br /&gt;
A belépő munkatársak mail címét, azonosítóját (uid) és elsődleges jelszavát a közvetlen munkahelyi vezető írásos témaszám igénylése alapján az alkalmazás adminisztrátor regisztrálja a névtárban. &lt;br /&gt;
&lt;br /&gt;
A mail szolgáltatáshoz kapcsolódó egyéni beállítások önálló szabályozására kifejlesztettünk egy web-es felületet, az IFAR-t (Integrált Felhasználói Adminisztrációs Rendszer). Ennek segítségével a munkatársak önállóan tudják  változtatni jelszavaikat, kezelhetik leveleik átirányítását, ill. akár megadhatják a szabadság idején küldendő automatikus válasz szövegét is. Az önadminisztrációs felület ad lehetőséget az azonosított felhasználónak a szobaszáma, telefomszáma ill a mobil telefonszáma regisztrálására is.&lt;br /&gt;
|availability=Az Identity Provider funkciót egy nagy rendelkezésre állású klaszter biztosítja. A rendelkezésre állásnak nincs formálisan vállalt értéke, a havi rendelkezésre állási statisztikák szerint a megelőző 6 hónapban a SZTAKI IdP rendelkezésre állása 99,99% volt.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sablonvita:FederationMember&amp;diff=382</id>
		<title>Sablonvita:FederationMember</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sablonvita:FederationMember&amp;diff=382"/>
				<updated>2008-02-12T19:35:42Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Szerintünk mi hiányzik:&lt;br /&gt;
&lt;br /&gt;
'''Technikai kapcsolattartó:''' név, email cím, aki az IdP működéséért felel&lt;br /&gt;
&lt;br /&gt;
'''Rendelkezésreállás:''' (kiépítés és vállalt rendelkezésreállás)&lt;br /&gt;
&lt;br /&gt;
'''Adattartalomért felelős kapcsolattartók adattípusok szerint:''' név, email cím, aki az adatok tartalmáért felel (HR, rendszergazdák, személy)&lt;br /&gt;
&lt;br /&gt;
Ezt az utolsót nem tudjuk, hogyan kellene megoldani, egy kivonatot és egy URL-t a sablonba? A lényeg, hogy ha valaki kíváncsi arra, hogy az SP-nek átadott adat, - pl. telefonszám - hibás, akkor azért az adattartalomért ki a felelős. --[[User:Gyufi@sztaki.hu|Gyufi@sztaki.hu]] 2008. február 12., 14:22 (CET)&lt;br /&gt;
: Azt hiszem, túl bonyolult lenne az egyes adattartalmak felelőseinek elérhetőségeit kilistázni. Többet ér, ha az egyes attribútumok forrása, ill. a módosításra jogosultak fel vannak tüntetve. --[[User:Bajnokk@niif.hu|Bajnokk@niif.hu]] 2008. február 12., 16:34 (CET)&lt;br /&gt;
&lt;br /&gt;
'''logo''', csak hogy pofás legyen a sablon. Van minden intézménynek logója, ezzel talán nem lehet baj.&lt;br /&gt;
&lt;br /&gt;
--[[User:Gyufi@sztaki.hu|gyufi]] 2008. február 12., 20:35 (CET)&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sablonvita:FederationMember&amp;diff=381</id>
		<title>Sablonvita:FederationMember</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sablonvita:FederationMember&amp;diff=381"/>
				<updated>2008-02-12T19:35:25Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Szerintünk mi hiányzik:&lt;br /&gt;
&lt;br /&gt;
'''Technikai kapcsolattartó:''' név, email cím, aki az IdP működéséért felel&lt;br /&gt;
&lt;br /&gt;
'''Rendelkezésreállás:''' (kiépítés és vállalt rendelkezésreállás)&lt;br /&gt;
&lt;br /&gt;
'''Adattartalomért felelős kapcsolattartók adattípusok szerint:''' név, email cím, aki az adatok tartalmáért felel (HR, rendszergazdák, személy)&lt;br /&gt;
&lt;br /&gt;
Ezt az utolsót nem tudjuk, hogyan kellene megoldani, egy kivonatot és egy URL-t a sablonba? A lényeg, hogy ha valaki kíváncsi arra, hogy az SP-nek átadott adat, - pl. telefonszám - hibás, akkor azért az adattartalomért ki a felelős. --[[User:Gyufi@sztaki.hu|Gyufi@sztaki.hu]] 2008. február 12., 14:22 (CET)&lt;br /&gt;
: Azt hiszem, túl bonyolult lenne az egyes adattartalmak felelőseinek elérhetőségeit kilistázni. Többet ér, ha az egyes attribútumok forrása, ill. a módosításra jogosultak fel vannak tüntetve. --[[User:Bajnokk@niif.hu|Bajnokk@niif.hu]] 2008. február 12., 16:34 (CET)&lt;br /&gt;
&lt;br /&gt;
'''logo'', csak hogy pofás legyen a sablon. Van minden intézménynek logója, ezzel talán nem lehet baj.&lt;br /&gt;
&lt;br /&gt;
--[[User:Gyufi@sztaki.hu|gyufi]] 2008. február 12., 20:35 (CET)&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	<entry>
		<id>https://wiki.niif.hu/index.php?title=Sablonvita:FederationMember&amp;diff=366</id>
		<title>Sablonvita:FederationMember</title>
		<link rel="alternate" type="text/html" href="https://wiki.niif.hu/index.php?title=Sablonvita:FederationMember&amp;diff=366"/>
				<updated>2008-02-12T13:22:12Z</updated>
		
		<summary type="html">&lt;p&gt;Gyufi(AT)sztaki.hu: Új oldal, tartalma: „Szerintünk mi hiányzik:  '''Technikai kapcsolattartó:''' név, email cím, aki az IdP működéséért felel  '''Rendelkezésreállás:''' (kiépítés és vállalt ren...”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Szerintünk mi hiányzik:&lt;br /&gt;
&lt;br /&gt;
'''Technikai kapcsolattartó:''' név, email cím, aki az IdP működéséért felel&lt;br /&gt;
&lt;br /&gt;
'''Rendelkezésreállás:''' (kiépítés és vállalt rendelkezésreállás)&lt;br /&gt;
&lt;br /&gt;
'''Adattartalomért felelős kapcsolattartók adattípusok szerint:''' név, email cím, aki az adatok tartalmáért felel (HR, rendszergazdák, személy)&lt;br /&gt;
&lt;br /&gt;
Ezt az utolsót nem tudjuk, hogyan kellene megoldani, egy kivonatot és egy URL-t a sablonba? A lényeg, hogy ha valaki kíváncsi arra, hogy az SP-nek átadott adat, - pl. telefonszám - hibás, akkor azért az adattartalomért ki a felelős.&lt;br /&gt;
&lt;br /&gt;
--[[User:Gyufi@sztaki.hu|Gyufi@sztaki.hu]] 2008. február 12., 14:22 (CET)&lt;/div&gt;</summary>
		<author><name>Gyufi(AT)sztaki.hu</name></author>	</entry>

	</feed>