<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://old-wiki.siliconhill.cz/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>http://old-wiki.siliconhill.cz/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tomassrna</id>
		<title>old-wiki.siliconhill.cz - Příspěvky uživatele [cs]</title>
		<link rel="self" type="application/atom+xml" href="http://old-wiki.siliconhill.cz/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tomassrna"/>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Speci%C3%A1ln%C3%AD:P%C5%99%C3%ADsp%C4%9Bvky/Tomassrna"/>
		<updated>2026-05-25T12:28:35Z</updated>
		<subtitle>Příspěvky uživatele</subtitle>
		<generator>MediaWiki 1.19.0</generator>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Strahovsk%C3%BD_startova%C4%8D</id>
		<title>Strahovský startovač</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Strahovsk%C3%BD_startova%C4%8D"/>
				<updated>2015-10-12T22:44:12Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Strahovský startovač - podpořte projekt '''Zimní olympijské hry 2018 - Silicon Hill''' zápisem do následující tabulky a především jakýmkoliv darem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Strahovský startovač (SS) - ZOH SH 2018&lt;br /&gt;
! p.č. !! Kdo !! Pokoj !! Co &lt;br /&gt;
|- &lt;br /&gt;
| 1 || Strahováček || X/XXX || Mediální podpora a všemožné voloviny &lt;br /&gt;
|- &lt;br /&gt;
| 2 || Fosfor || 19J || Telepatická podpora - kdykoliv bude třeba, budu na ZOH myslet&lt;br /&gt;
|- &lt;br /&gt;
| 3 || Policie ČR || Y/YYY || Přímý přenos v Týdeníku PČR&lt;br /&gt;
|- &lt;br /&gt;
| 4 || ? || ? || ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier</id>
		<title>Diskuse:Fotoatelier</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier"/>
				<updated>2015-07-01T15:38:54Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Datum, čas od - do, jméno příjmení&lt;br /&gt;
  &lt;br /&gt;
Ateliér znovu v provozu!&lt;br /&gt;
&lt;br /&gt;
 týden 6.7. - 12.7.&lt;br /&gt;
&lt;br /&gt;
6.7. 14:00 - 17:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 29.6. - 5.7.&lt;br /&gt;
&lt;br /&gt;
1.7. 18:00 - 18:30 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
 týden 22.6. - 28.6.&lt;br /&gt;
&lt;br /&gt;
24.6. 09:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
25.6. 14:00 - 19:00 Michal B.&lt;br /&gt;
&lt;br /&gt;
 týden 15.6. - 21.6.&lt;br /&gt;
&lt;br /&gt;
16.6. 19:00 - 22:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
20.6. 09:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 1.6. - 7.6.&lt;br /&gt;
&lt;br /&gt;
6.6. 9:30 - 13:00 Ales Jira&lt;br /&gt;
&lt;br /&gt;
5.6. 18:00 - 22:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 18.5. - 25.5.&lt;br /&gt;
&lt;br /&gt;
24.5. 10:00 - 13:00 Ales Jira&lt;br /&gt;
&lt;br /&gt;
21.5. 19:00 -21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
20.5. 10:00 - 15:00 Michal B.&lt;br /&gt;
&lt;br /&gt;
 týden 11.5. - 17.5. &lt;br /&gt;
&lt;br /&gt;
13.5. 14:00 - 22:00 Jonas Mejtsky&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 4.5. - 10.5. &lt;br /&gt;
&lt;br /&gt;
10.5. 11:00 - 17:00 Jonas Mejtsky&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 13.4. - 19.4. &lt;br /&gt;
&lt;br /&gt;
19.4. 10:00 - 15:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
14.4. 09:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 5.4. - 12.4. &lt;br /&gt;
&lt;br /&gt;
9.4. 17:00 - 20:00 Jonas Mejtsky&lt;br /&gt;
&lt;br /&gt;
 týden 30.3. - 5.4..&lt;br /&gt;
3.4. 14:30 - 16:00 Pavel Šimák&lt;br /&gt;
&lt;br /&gt;
1.4. 20:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
1.4. 13:00 - 16:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
 týden 23.3. - 29.3.&lt;br /&gt;
25.3. 17:00 - 19:00 Pavel Šimák&lt;br /&gt;
&lt;br /&gt;
24.3. 18:00 - 22:00 Kuba Spatny  &lt;br /&gt;
&lt;br /&gt;
28.3. 09:00 - 15:00 Jonas Mejtsky&lt;br /&gt;
&lt;br /&gt;
28.3. 16:00 - 19:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
28.3. 19:00 - 22:00 Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
29.3. 10:00 - 20:00 Jonas Mejtsky&lt;br /&gt;
&lt;br /&gt;
 týden 16.3. - 22.3.&lt;br /&gt;
&lt;br /&gt;
16.3. 17:00 - 22:00 Kuba Spatny &lt;br /&gt;
&lt;br /&gt;
17. 3. 17:00 - 18:30 Michal B.&lt;br /&gt;
&lt;br /&gt;
 týden 9.3. - 15.3.&lt;br /&gt;
&lt;br /&gt;
9.3. 18:30 - 21:30 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
13.3. 15:00 - 18:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
13.3. 18:00 - 21:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
14.3. 17:00 - 18:30 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
15.3. 20:00 - 22:00 Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
 týden 2.3. - 8.3.&lt;br /&gt;
&lt;br /&gt;
8.3. 18:00-21:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 23.2. - 1.3.&lt;br /&gt;
23.2. 17:00 - 19:00 Tomáš Srna &lt;br /&gt;
&lt;br /&gt;
28.2. 20:00 - 22:00 Michal Byna&lt;br /&gt;
&lt;br /&gt;
 týden 16.2. - 22.2. &lt;br /&gt;
20.2. 10:30 - 13:30 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
22.2. 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
22.2. 15:45 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 9.2. - 15.2.&lt;br /&gt;
&lt;br /&gt;
10.2. 10:30 - 14:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
13.2. 10:00 - 13:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
14.2. 13:55 - 16:25 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 2.2. - 8.2.&lt;br /&gt;
&lt;br /&gt;
7.2. 15:00 - 18:30 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 26.1. - 1.2.&lt;br /&gt;
&lt;br /&gt;
27.1. 12:00 - 15:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
30.1. 10:30 - 13:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
30.1. 15:00 - 18:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
31.1. 14:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
31.1. 18:00 - 20:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 19.1. - 25.1.&lt;br /&gt;
&lt;br /&gt;
21.1. 15:00 - 19:00 Petr Kavulok &lt;br /&gt;
&lt;br /&gt;
24.1. 09:30 - 13:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
25.1. 11:25 - 13:50 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 12.1. - 18.1.&lt;br /&gt;
&lt;br /&gt;
13.1. 18:30 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
14.1. 16:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
14.1. 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
15.1. 13:30 - 16:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
15.1. 17:00 - 20:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
18.1. 14:00 - 17:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 5.1. - 11.1.&lt;br /&gt;
6.1. 18:00 - 22:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
7.1. 9:30 - 13:00 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 29.12. - 4.1.&lt;br /&gt;
&lt;br /&gt;
 týden 22.12. - 28.12.&lt;br /&gt;
&lt;br /&gt;
 týden 15.12. - 21.12.&lt;br /&gt;
&lt;br /&gt;
15.12 20:00 - 24:00 Pavol Vittek, údržba&lt;br /&gt;
&lt;br /&gt;
16.12. 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
19.12. 11:00 - 14:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 8.12. - 14.12.&lt;br /&gt;
&lt;br /&gt;
9.12. 15:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
10.12. 19:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
11.12. 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.12. 09:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
12.12. 13:00 - 15:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
 týden 1.12. - 7.12.&lt;br /&gt;
&lt;br /&gt;
1.12. 16:30 - 19:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
1.12. 19:00 - 21:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2.12. 17:00 - 19:30 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
4.12. 18:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
5.12. 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
5.12. 14:00 - 14:50 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
7.12. 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 24.11. - 30.11.&lt;br /&gt;
&lt;br /&gt;
26.11. 19:00 - 21:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
27.11. 11:00 - 12:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
27.11. 14.40 - 15.15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
28.11. 15:00 - 17:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
29.11. 20:00 - 23:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
30.11. 12:00 - 15:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
30.11. 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 17.11 - 23.11&lt;br /&gt;
&lt;br /&gt;
21.11. 22:00 - 23:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
21.11. 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.11. 9:00 - 11:30 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 10.11 - 16.11&lt;br /&gt;
&lt;br /&gt;
10.11 21:00 - 22:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
13.11 21:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
16.11. 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 3.11 - 9.11&lt;br /&gt;
&lt;br /&gt;
3.11 10:00 - 12:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.11 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.11 13:00 - 14:30 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
8.11 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 27.10 - 2.11&lt;br /&gt;
&lt;br /&gt;
27.10 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.10 11:00 - 15:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
28.10 15:00 - 19:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
28.10 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
30.10 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
31.10 18:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Od 31.10 do 2.11 bude vo fotoateliéri len malý softbox + deštník a 2 blesky, ktoré je možné použiť v kombinácii so starými odpalovačmi&lt;br /&gt;
&lt;br /&gt;
 týden 20.10 - 26.10&lt;br /&gt;
&lt;br /&gt;
21.10 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10 20:00 - 23:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
24.10 9:00 - 13:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
25.10 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 13.10 - 19.10&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Dodržujte prosím provozní řád fotoateliéru. Za nedodržanie dostanete BAN.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Jedná sa napr. o zametanie, úklid, vynesenie odpadkov, zapísanie sa na vrátnici - aj fotografované osoby ako návštevu atd...&lt;br /&gt;
 Vittek&lt;br /&gt;
&lt;br /&gt;
13.10 08:00 - 10:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
13.10 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
13.10 19:00 - 24:00 Pavol Vittek - DOD&lt;br /&gt;
&lt;br /&gt;
18.10. 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 6.10. - 12.10.&lt;br /&gt;
&lt;br /&gt;
6.10.2014 18:00 - 19:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
8.10.2014 17:00 - 24:00 Pavol Vittek - Akce prvák&lt;br /&gt;
&lt;br /&gt;
9.10.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
12.10.2014 16:00 - 19:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 29.9. - 5.10.&lt;br /&gt;
&lt;br /&gt;
1.10.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
3.10.2014 11:00 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
3.10.2014 16:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 22.9. - 28.9.&lt;br /&gt;
&lt;br /&gt;
23.9.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
24.9.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
25.9.2014 9:00 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 15.9. - 21.9.&lt;br /&gt;
&lt;br /&gt;
21.9.2014 9:00 - 12:30 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 8.9. - 14.9.&lt;br /&gt;
&lt;br /&gt;
8.9.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 1.9. - 7.9.&lt;br /&gt;
&lt;br /&gt;
1.9.2014 17:30 - 19:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
4.9.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
5.9.2014 14:15 - 16:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
7.9.2014 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 25.8. - 31.8.&lt;br /&gt;
&lt;br /&gt;
26.8.2014 19:00 - 20:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
27.8.2014 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
30.8.2014 18:00 - 19:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 18.8. - 24.8.&lt;br /&gt;
&lt;br /&gt;
19.8.2014 20:30 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
21.8.2014 18:00 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 11.8. - 17.8.&lt;br /&gt;
&lt;br /&gt;
11.8.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
13.8.2014 09:15 - 10:15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
13.8.2014 17:25 - 17:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 4.8. - 10.8.&lt;br /&gt;
&lt;br /&gt;
4.8.2014 18:00 - 20:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
5.8.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
6.8.2014 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
7.8.2014 08:20 - 12:00 Jan Cermak&lt;br /&gt;
&lt;br /&gt;
9.8.2014 14:00 - 15:00 Klara Skodova&lt;br /&gt;
&lt;br /&gt;
9.8.2014 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.8.2014 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 28.7. - 3.8.&lt;br /&gt;
&lt;br /&gt;
30.7.2014 8:00 - 11:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
30.7.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
1.8.2014 9:00 - 14:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 21.7. - 27.7.&lt;br /&gt;
&lt;br /&gt;
26.7.2014 13:00 - 18:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 14.7. - 20.7.&lt;br /&gt;
&lt;br /&gt;
16.7.2014 13:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.7.2014 16:00 - 19:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
17.7.2014 12:30 - 17:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 7.7. - 13.7.&lt;br /&gt;
&lt;br /&gt;
 týden 30.6. - 6.7.&lt;br /&gt;
30.6. 2014 14:00 - 18:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.6. + 1.7. Michal Býna - půjčím si jen malou odrazku, ateliér bude volný&lt;br /&gt;
&lt;br /&gt;
 týden 23.6. - 29.6.&lt;br /&gt;
26.6.2014 15:30 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 16.6. - 22.6.&lt;br /&gt;
&lt;br /&gt;
16.6.2014 19:00 - 20:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
17.6.2014 9:00 - 12:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
17.6.2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.6.2014 17:00 - 21:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
20.6.2014 9:30 - 10:30 + 13:30 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
21.6.2014 16:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.6. - 15.6.&lt;br /&gt;
&lt;br /&gt;
9.6.2014 11:00 - 13:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
12.6.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.6. - 8.6.&lt;br /&gt;
&lt;br /&gt;
4.6.2014 18:25 - 19:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 26.5 - 1.6.&lt;br /&gt;
&lt;br /&gt;
27.5.2014 20:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
28.5.2014 17:00 - 19:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
29.5.2014 10:15 - 12:30 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
29.5.2014 16:00 - 19:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.5.2014 10:00 - 11:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
31.5.2014 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
31.5.2014 22:00 - 24:05 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.5 - 25.5.&lt;br /&gt;
&lt;br /&gt;
22. 5. 2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 12.5 - 18.5&lt;br /&gt;
&lt;br /&gt;
12.5.2014 11:15 - 13:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
14.5.2014 14:00 - 17:00 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
15.5.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
16.5.2014 20:00 - 23:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 5.5 - 11.5&lt;br /&gt;
&lt;br /&gt;
5.5.2014, 21:15 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
6.5.2014, 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
7.5.2014, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
10.5.2014, 9:00 - 12:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 28.4 - 4.5&lt;br /&gt;
28.4.2014, 17:30 - 21:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
29.4.2014, 19:00 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 9:00 - 15:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 18:00 - 20:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
 týden 21.4 - 27.4&lt;br /&gt;
22.4.2014, 13:00 - 17:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
23.4.2014, 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
27.4.2014, 13:00 - 20:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 14.4 - 20.4&lt;br /&gt;
14.4.2014 - 19:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
17.4.2014 - 18:30 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 14:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 9:00 - 12:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 12:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 7.4 - 13.4&lt;br /&gt;
&lt;br /&gt;
7.4.2014 - 13:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
7.4.2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
8.4.2014, 08:30-11:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
9.4.2014, 17:30-22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 17:00 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 22:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
11.4.2014, 9:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 31.3 - 6.4&lt;br /&gt;
&lt;br /&gt;
31. 3. 2014, 18:00 - 21:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
1.4. 2014, 17:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 11:30 - 15:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 17:15 -  21:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 8:00 - 12:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 13:00 - 17:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 18:30 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 24.3 - 30.3&lt;br /&gt;
&lt;br /&gt;
24. 3. 2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
26. 3. 2014, 20:00 - 21:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
27. 3. 2014, 18:30 - 23:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
28. 3. 2014, 18:00 - 20:30 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
 týden 17.3 - 23.3&lt;br /&gt;
&lt;br /&gt;
22. 3. 2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 10.3 - 16.3&lt;br /&gt;
&lt;br /&gt;
12.3.2014, 9:45 - 13:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
13.3.2014, 15:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
15.3.2014, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
16.3.2014, 16:00 - 18:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 3.3 - 9.3&lt;br /&gt;
4.3.2014, 17:00 - 20:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 16:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 18:00 - 22:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
6.3.2014, 10:00 - 12:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.3.2014, 13:00 - 18:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
8.3.2014, 9:00 - 13:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 24.2 - 2.3&lt;br /&gt;
&lt;br /&gt;
26.2.2014, 18:00 - 21:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
27.2.2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
28.2.2014, 17:00 - 21:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
1.3.2014, 14:00 - 19:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
 týden 17.2 - 23.2&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 10:00-15:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 18:30-20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
20. 2. 2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21. 2. 2014, 15:00 - 18:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
22. 2. 2014, 09:00 - Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 10.2 - 16.2&lt;br /&gt;
&lt;br /&gt;
11. 2. 2014, 18:00- 22:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 9:30 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 18:00 - 22:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 09:00 - 12:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 13:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
14.2.2014, 17:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
15. 2.2014, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.2.2014, 11:00 - 14:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 3.2 - 9.2.&lt;br /&gt;
&lt;br /&gt;
3.2.2014, 13:00 - 17:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
4.2.2014, 16:00 - 20:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.2.2014, 15:00 - 18:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.2.2014, 18:00 - 23:00, Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 27.1 - 2.2&lt;br /&gt;
1.2.2014, 9:30 - 11:45 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
2.2.2014, 12:00 - 17:00 Pavel Krásenský&lt;br /&gt;
&lt;br /&gt;
 týden 20.1 - 26.1&lt;br /&gt;
21.1.2014, 16:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
22.1.2014, 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 12:00 - 16:45 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 17:00 - 20:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
24.1.2014, 13:45 - 18:45 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
25.1.2014, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 13.1 - 19.1&lt;br /&gt;
&lt;br /&gt;
16.1.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.1.2014, 15:00 - 19:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 6.1 - 12.1&lt;br /&gt;
&lt;br /&gt;
7.1.2014, 18:00 - 21:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.1.2014, 21:30 - 23:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 19:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
11.1.2014, 17:00 - 20:00 Matus Koperniech - zrusene, choroba&lt;br /&gt;
&lt;br /&gt;
 týden 30.12 - 5.1&lt;br /&gt;
&lt;br /&gt;
5.1.2014, 15:00 - 18:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 23.12 - 29.12&lt;br /&gt;
&lt;br /&gt;
 týden 16.12 - 22.12&lt;br /&gt;
16.12.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.12.2013, 15:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.12 - 15.12&lt;br /&gt;
10.12.2013, 16:00 - 18:30 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 15:30 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
12.12.2013, 19:00 - 22:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
14.12.2013, 11:00 - 14:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
15.12.2013, 15:00 - 17:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 2.12 - 8.12&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 11:00 - 14:20 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 14:30 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 18:30 - 20:30 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 18:00 - 21:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 08:30 - 12:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 16:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 09:00 - 13:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 15:00 - 20:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 20:30 - 21:15 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 25.11 - 1.12         &lt;br /&gt;
&lt;br /&gt;
26.11.2013, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
01.12.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 18.11 - 24.11                          &lt;br /&gt;
&lt;br /&gt;
18.11.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.11.2013, 18:00 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
19.11.2013, 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 11:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 19:00 - 22:00 Chip&lt;br /&gt;
&lt;br /&gt;
22.11.2013, 09:00 - 12:00 Martin Červenka + Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
23.11.2013, 15:00 - 18:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 11:00 - 13:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 13:00 - 18:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 11.11 - 17.11&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 16:30 - 18:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
14.11.2013, 09:30 - 13:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
15.11.2013, 19:00 - 22:00 Miroslav Šos&lt;br /&gt;
&lt;br /&gt;
16.11.2013, 13:00 - 16:00 Miroslav Šos&lt;br /&gt;
 &lt;br /&gt;
16.11.2013, 18:00 - 21:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 4.11 - 10.11&lt;br /&gt;
&lt;br /&gt;
4.11.2013, 18:00 - 22:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 07:00 - 10:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 20:00 - 23:00 Pavol Vittek montovanie kamery&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 15:30 - 18:30 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 11:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 15:00 - 21:00 Karel Vojkovský&lt;br /&gt;
&lt;br /&gt;
 týden 28.10 - 3.11&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 10.00 - 15.00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 15:00 - 19:00 Martin Červenka RUŠÍM (onemocnělá modelka)&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 20:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 9:00 - 13:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 21.10 - 27.10&lt;br /&gt;
&lt;br /&gt;
21.10.2013, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10.2013, 18:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 08:00 - 11:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 13:00 - 16:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 17:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 11:30 - 14:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 14.10 - 20.10&lt;br /&gt;
&lt;br /&gt;
14.10.2013, 19:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.10.2013, 17:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 12:00 - 13:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 13:00 - 18:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.10.2013, 15:30 - 17:30 Matus Kopeniech&lt;br /&gt;
&lt;br /&gt;
19.10.2013, 15:00 - 20:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
 týden 7.10 - 13.10&lt;br /&gt;
&lt;br /&gt;
7.10.2013, 14:30 - 15:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.10.2013, 13:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.10.2013, 14:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 30.9 - 6.10&lt;br /&gt;
&lt;br /&gt;
1.10.2013, 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 13:00 - 17:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 17:00 - 19:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 23.9 - 29.9&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 17:15 - 21:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 14:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
27.9.2013, 12:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.9.2013, 10:00 - 15:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 16.9 - 22.9&lt;br /&gt;
&lt;br /&gt;
20. 9. 2013, 14:00 - 17:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
19. 9. 2013, 15:00 - 20:00 Peter Antolík&lt;br /&gt;
&lt;br /&gt;
18. 9. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.9 - 15.9&lt;br /&gt;
&lt;br /&gt;
13.9.2013, 10:00 - 11:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
9.9.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
6.9.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.9 - 8.9&lt;br /&gt;
&lt;br /&gt;
5. 9. 2013, 13:00 - 18:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 26.8 - 1.9&lt;br /&gt;
29.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.8 - 25.8&lt;br /&gt;
22.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
21.8.2013, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
20.8.2013, 18:30 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
 týden 12.8 - 18.8&lt;br /&gt;
17.8.2013, 15:00 - 17:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
12.8. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 5.8 - 11.8&lt;br /&gt;
6.8.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
10.8.2013, 15:00 - 20:00 Marek Votroubek&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier</id>
		<title>Diskuse:Fotoatelier</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier"/>
				<updated>2015-06-15T09:09:19Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Datum, čas od - do, jméno příjmení&lt;br /&gt;
  &lt;br /&gt;
Ateliér znovu v provozu!&lt;br /&gt;
&lt;br /&gt;
 týden 15.6. - 21.6.&lt;br /&gt;
&lt;br /&gt;
16.6. 19:00 - 22:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
 týden 1.6. - 7.6.&lt;br /&gt;
&lt;br /&gt;
6.6. 9:30 - 13:00 Ales Jira&lt;br /&gt;
&lt;br /&gt;
5.6. 18:00 - 22:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 18.5. - 25.5.&lt;br /&gt;
&lt;br /&gt;
24.5. 10:00 - 13:00 Ales Jira&lt;br /&gt;
&lt;br /&gt;
21.5. 19:00 -21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
20.5. 10:00 - 15:00 Michal B.&lt;br /&gt;
&lt;br /&gt;
 týden 11.5. - 17.5. &lt;br /&gt;
&lt;br /&gt;
13.5. 14:00 - 22:00 Jonas Mejtsky&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 4.5. - 10.5. &lt;br /&gt;
&lt;br /&gt;
10.5. 11:00 - 17:00 Jonas Mejtsky&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 13.4. - 19.4. &lt;br /&gt;
&lt;br /&gt;
19.4. 10:00 - 15:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
14.4. 09:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 5.4. - 12.4. &lt;br /&gt;
&lt;br /&gt;
9.4. 17:00 - 20:00 Jonas Mejtsky&lt;br /&gt;
&lt;br /&gt;
 týden 30.3. - 5.4..&lt;br /&gt;
3.4. 14:30 - 16:00 Pavel Šimák&lt;br /&gt;
&lt;br /&gt;
1.4. 20:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
1.4. 13:00 - 16:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
 týden 23.3. - 29.3.&lt;br /&gt;
25.3. 17:00 - 19:00 Pavel Šimák&lt;br /&gt;
&lt;br /&gt;
24.3. 18:00 - 22:00 Kuba Spatny  &lt;br /&gt;
&lt;br /&gt;
28.3. 09:00 - 15:00 Jonas Mejtsky&lt;br /&gt;
&lt;br /&gt;
28.3. 16:00 - 19:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
28.3. 19:00 - 22:00 Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
29.3. 10:00 - 20:00 Jonas Mejtsky&lt;br /&gt;
&lt;br /&gt;
 týden 16.3. - 22.3.&lt;br /&gt;
&lt;br /&gt;
16.3. 17:00 - 22:00 Kuba Spatny &lt;br /&gt;
&lt;br /&gt;
17. 3. 17:00 - 18:30 Michal B.&lt;br /&gt;
&lt;br /&gt;
 týden 9.3. - 15.3.&lt;br /&gt;
&lt;br /&gt;
9.3. 18:30 - 21:30 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
13.3. 15:00 - 18:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
13.3. 18:00 - 21:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
14.3. 17:00 - 18:30 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
15.3. 20:00 - 22:00 Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
 týden 2.3. - 8.3.&lt;br /&gt;
&lt;br /&gt;
8.3. 18:00-21:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 23.2. - 1.3.&lt;br /&gt;
23.2. 17:00 - 19:00 Tomáš Srna &lt;br /&gt;
&lt;br /&gt;
28.2. 20:00 - 22:00 Michal Byna&lt;br /&gt;
&lt;br /&gt;
 týden 16.2. - 22.2. &lt;br /&gt;
20.2. 10:30 - 13:30 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
22.2. 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
22.2. 15:45 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 9.2. - 15.2.&lt;br /&gt;
&lt;br /&gt;
10.2. 10:30 - 14:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
13.2. 10:00 - 13:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
14.2. 13:55 - 16:25 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 2.2. - 8.2.&lt;br /&gt;
&lt;br /&gt;
7.2. 15:00 - 18:30 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 26.1. - 1.2.&lt;br /&gt;
&lt;br /&gt;
27.1. 12:00 - 15:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
30.1. 10:30 - 13:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
30.1. 15:00 - 18:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
31.1. 14:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
31.1. 18:00 - 20:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 19.1. - 25.1.&lt;br /&gt;
&lt;br /&gt;
21.1. 15:00 - 19:00 Petr Kavulok &lt;br /&gt;
&lt;br /&gt;
24.1. 09:30 - 13:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
25.1. 11:25 - 13:50 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 12.1. - 18.1.&lt;br /&gt;
&lt;br /&gt;
13.1. 18:30 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
14.1. 16:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
14.1. 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
15.1. 13:30 - 16:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
15.1. 17:00 - 20:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
18.1. 14:00 - 17:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 5.1. - 11.1.&lt;br /&gt;
6.1. 18:00 - 22:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
7.1. 9:30 - 13:00 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 29.12. - 4.1.&lt;br /&gt;
&lt;br /&gt;
 týden 22.12. - 28.12.&lt;br /&gt;
&lt;br /&gt;
 týden 15.12. - 21.12.&lt;br /&gt;
&lt;br /&gt;
15.12 20:00 - 24:00 Pavol Vittek, údržba&lt;br /&gt;
&lt;br /&gt;
16.12. 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
19.12. 11:00 - 14:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 8.12. - 14.12.&lt;br /&gt;
&lt;br /&gt;
9.12. 15:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
10.12. 19:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
11.12. 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.12. 09:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
12.12. 13:00 - 15:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
 týden 1.12. - 7.12.&lt;br /&gt;
&lt;br /&gt;
1.12. 16:30 - 19:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
1.12. 19:00 - 21:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2.12. 17:00 - 19:30 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
4.12. 18:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
5.12. 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
5.12. 14:00 - 14:50 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
7.12. 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 24.11. - 30.11.&lt;br /&gt;
&lt;br /&gt;
26.11. 19:00 - 21:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
27.11. 11:00 - 12:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
27.11. 14.40 - 15.15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
28.11. 15:00 - 17:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
29.11. 20:00 - 23:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
30.11. 12:00 - 15:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
30.11. 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 17.11 - 23.11&lt;br /&gt;
&lt;br /&gt;
21.11. 22:00 - 23:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
21.11. 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.11. 9:00 - 11:30 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 10.11 - 16.11&lt;br /&gt;
&lt;br /&gt;
10.11 21:00 - 22:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
13.11 21:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
16.11. 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 3.11 - 9.11&lt;br /&gt;
&lt;br /&gt;
3.11 10:00 - 12:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.11 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.11 13:00 - 14:30 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
8.11 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 27.10 - 2.11&lt;br /&gt;
&lt;br /&gt;
27.10 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.10 11:00 - 15:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
28.10 15:00 - 19:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
28.10 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
30.10 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
31.10 18:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Od 31.10 do 2.11 bude vo fotoateliéri len malý softbox + deštník a 2 blesky, ktoré je možné použiť v kombinácii so starými odpalovačmi&lt;br /&gt;
&lt;br /&gt;
 týden 20.10 - 26.10&lt;br /&gt;
&lt;br /&gt;
21.10 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10 20:00 - 23:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
24.10 9:00 - 13:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
25.10 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 13.10 - 19.10&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Dodržujte prosím provozní řád fotoateliéru. Za nedodržanie dostanete BAN.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Jedná sa napr. o zametanie, úklid, vynesenie odpadkov, zapísanie sa na vrátnici - aj fotografované osoby ako návštevu atd...&lt;br /&gt;
 Vittek&lt;br /&gt;
&lt;br /&gt;
13.10 08:00 - 10:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
13.10 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
13.10 19:00 - 24:00 Pavol Vittek - DOD&lt;br /&gt;
&lt;br /&gt;
18.10. 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 6.10. - 12.10.&lt;br /&gt;
&lt;br /&gt;
6.10.2014 18:00 - 19:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
8.10.2014 17:00 - 24:00 Pavol Vittek - Akce prvák&lt;br /&gt;
&lt;br /&gt;
9.10.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
12.10.2014 16:00 - 19:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 29.9. - 5.10.&lt;br /&gt;
&lt;br /&gt;
1.10.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
3.10.2014 11:00 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
3.10.2014 16:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 22.9. - 28.9.&lt;br /&gt;
&lt;br /&gt;
23.9.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
24.9.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
25.9.2014 9:00 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 15.9. - 21.9.&lt;br /&gt;
&lt;br /&gt;
21.9.2014 9:00 - 12:30 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 8.9. - 14.9.&lt;br /&gt;
&lt;br /&gt;
8.9.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 1.9. - 7.9.&lt;br /&gt;
&lt;br /&gt;
1.9.2014 17:30 - 19:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
4.9.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
5.9.2014 14:15 - 16:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
7.9.2014 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 25.8. - 31.8.&lt;br /&gt;
&lt;br /&gt;
26.8.2014 19:00 - 20:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
27.8.2014 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
30.8.2014 18:00 - 19:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 18.8. - 24.8.&lt;br /&gt;
&lt;br /&gt;
19.8.2014 20:30 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
21.8.2014 18:00 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 11.8. - 17.8.&lt;br /&gt;
&lt;br /&gt;
11.8.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
13.8.2014 09:15 - 10:15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
13.8.2014 17:25 - 17:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 4.8. - 10.8.&lt;br /&gt;
&lt;br /&gt;
4.8.2014 18:00 - 20:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
5.8.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
6.8.2014 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
7.8.2014 08:20 - 12:00 Jan Cermak&lt;br /&gt;
&lt;br /&gt;
9.8.2014 14:00 - 15:00 Klara Skodova&lt;br /&gt;
&lt;br /&gt;
9.8.2014 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.8.2014 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 28.7. - 3.8.&lt;br /&gt;
&lt;br /&gt;
30.7.2014 8:00 - 11:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
30.7.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
1.8.2014 9:00 - 14:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 21.7. - 27.7.&lt;br /&gt;
&lt;br /&gt;
26.7.2014 13:00 - 18:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 14.7. - 20.7.&lt;br /&gt;
&lt;br /&gt;
16.7.2014 13:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.7.2014 16:00 - 19:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
17.7.2014 12:30 - 17:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 7.7. - 13.7.&lt;br /&gt;
&lt;br /&gt;
 týden 30.6. - 6.7.&lt;br /&gt;
30.6. 2014 14:00 - 18:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.6. + 1.7. Michal Býna - půjčím si jen malou odrazku, ateliér bude volný&lt;br /&gt;
&lt;br /&gt;
 týden 23.6. - 29.6.&lt;br /&gt;
26.6.2014 15:30 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 16.6. - 22.6.&lt;br /&gt;
&lt;br /&gt;
16.6.2014 19:00 - 20:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
17.6.2014 9:00 - 12:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
17.6.2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.6.2014 17:00 - 21:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
20.6.2014 9:30 - 10:30 + 13:30 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
21.6.2014 16:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.6. - 15.6.&lt;br /&gt;
&lt;br /&gt;
9.6.2014 11:00 - 13:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
12.6.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.6. - 8.6.&lt;br /&gt;
&lt;br /&gt;
4.6.2014 18:25 - 19:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 26.5 - 1.6.&lt;br /&gt;
&lt;br /&gt;
27.5.2014 20:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
28.5.2014 17:00 - 19:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
29.5.2014 10:15 - 12:30 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
29.5.2014 16:00 - 19:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.5.2014 10:00 - 11:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
31.5.2014 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
31.5.2014 22:00 - 24:05 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.5 - 25.5.&lt;br /&gt;
&lt;br /&gt;
22. 5. 2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 12.5 - 18.5&lt;br /&gt;
&lt;br /&gt;
12.5.2014 11:15 - 13:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
14.5.2014 14:00 - 17:00 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
15.5.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
16.5.2014 20:00 - 23:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 5.5 - 11.5&lt;br /&gt;
&lt;br /&gt;
5.5.2014, 21:15 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
6.5.2014, 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
7.5.2014, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
10.5.2014, 9:00 - 12:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 28.4 - 4.5&lt;br /&gt;
28.4.2014, 17:30 - 21:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
29.4.2014, 19:00 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 9:00 - 15:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 18:00 - 20:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
 týden 21.4 - 27.4&lt;br /&gt;
22.4.2014, 13:00 - 17:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
23.4.2014, 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
27.4.2014, 13:00 - 20:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 14.4 - 20.4&lt;br /&gt;
14.4.2014 - 19:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
17.4.2014 - 18:30 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 14:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 9:00 - 12:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 12:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 7.4 - 13.4&lt;br /&gt;
&lt;br /&gt;
7.4.2014 - 13:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
7.4.2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
8.4.2014, 08:30-11:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
9.4.2014, 17:30-22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 17:00 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 22:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
11.4.2014, 9:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 31.3 - 6.4&lt;br /&gt;
&lt;br /&gt;
31. 3. 2014, 18:00 - 21:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
1.4. 2014, 17:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 11:30 - 15:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 17:15 -  21:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 8:00 - 12:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 13:00 - 17:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 18:30 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 24.3 - 30.3&lt;br /&gt;
&lt;br /&gt;
24. 3. 2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
26. 3. 2014, 20:00 - 21:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
27. 3. 2014, 18:30 - 23:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
28. 3. 2014, 18:00 - 20:30 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
 týden 17.3 - 23.3&lt;br /&gt;
&lt;br /&gt;
22. 3. 2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 10.3 - 16.3&lt;br /&gt;
&lt;br /&gt;
12.3.2014, 9:45 - 13:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
13.3.2014, 15:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
15.3.2014, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
16.3.2014, 16:00 - 18:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 3.3 - 9.3&lt;br /&gt;
4.3.2014, 17:00 - 20:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 16:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 18:00 - 22:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
6.3.2014, 10:00 - 12:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.3.2014, 13:00 - 18:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
8.3.2014, 9:00 - 13:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 24.2 - 2.3&lt;br /&gt;
&lt;br /&gt;
26.2.2014, 18:00 - 21:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
27.2.2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
28.2.2014, 17:00 - 21:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
1.3.2014, 14:00 - 19:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
 týden 17.2 - 23.2&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 10:00-15:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 18:30-20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
20. 2. 2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21. 2. 2014, 15:00 - 18:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
22. 2. 2014, 09:00 - Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 10.2 - 16.2&lt;br /&gt;
&lt;br /&gt;
11. 2. 2014, 18:00- 22:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 9:30 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 18:00 - 22:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 09:00 - 12:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 13:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
14.2.2014, 17:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
15. 2.2014, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.2.2014, 11:00 - 14:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 3.2 - 9.2.&lt;br /&gt;
&lt;br /&gt;
3.2.2014, 13:00 - 17:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
4.2.2014, 16:00 - 20:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.2.2014, 15:00 - 18:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.2.2014, 18:00 - 23:00, Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 27.1 - 2.2&lt;br /&gt;
1.2.2014, 9:30 - 11:45 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
2.2.2014, 12:00 - 17:00 Pavel Krásenský&lt;br /&gt;
&lt;br /&gt;
 týden 20.1 - 26.1&lt;br /&gt;
21.1.2014, 16:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
22.1.2014, 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 12:00 - 16:45 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 17:00 - 20:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
24.1.2014, 13:45 - 18:45 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
25.1.2014, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 13.1 - 19.1&lt;br /&gt;
&lt;br /&gt;
16.1.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.1.2014, 15:00 - 19:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 6.1 - 12.1&lt;br /&gt;
&lt;br /&gt;
7.1.2014, 18:00 - 21:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.1.2014, 21:30 - 23:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 19:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
11.1.2014, 17:00 - 20:00 Matus Koperniech - zrusene, choroba&lt;br /&gt;
&lt;br /&gt;
 týden 30.12 - 5.1&lt;br /&gt;
&lt;br /&gt;
5.1.2014, 15:00 - 18:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 23.12 - 29.12&lt;br /&gt;
&lt;br /&gt;
 týden 16.12 - 22.12&lt;br /&gt;
16.12.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.12.2013, 15:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.12 - 15.12&lt;br /&gt;
10.12.2013, 16:00 - 18:30 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 15:30 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
12.12.2013, 19:00 - 22:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
14.12.2013, 11:00 - 14:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
15.12.2013, 15:00 - 17:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 2.12 - 8.12&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 11:00 - 14:20 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 14:30 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 18:30 - 20:30 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 18:00 - 21:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 08:30 - 12:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 16:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 09:00 - 13:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 15:00 - 20:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 20:30 - 21:15 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 25.11 - 1.12         &lt;br /&gt;
&lt;br /&gt;
26.11.2013, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
01.12.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 18.11 - 24.11                          &lt;br /&gt;
&lt;br /&gt;
18.11.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.11.2013, 18:00 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
19.11.2013, 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 11:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 19:00 - 22:00 Chip&lt;br /&gt;
&lt;br /&gt;
22.11.2013, 09:00 - 12:00 Martin Červenka + Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
23.11.2013, 15:00 - 18:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 11:00 - 13:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 13:00 - 18:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 11.11 - 17.11&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 16:30 - 18:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
14.11.2013, 09:30 - 13:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
15.11.2013, 19:00 - 22:00 Miroslav Šos&lt;br /&gt;
&lt;br /&gt;
16.11.2013, 13:00 - 16:00 Miroslav Šos&lt;br /&gt;
 &lt;br /&gt;
16.11.2013, 18:00 - 21:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 4.11 - 10.11&lt;br /&gt;
&lt;br /&gt;
4.11.2013, 18:00 - 22:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 07:00 - 10:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 20:00 - 23:00 Pavol Vittek montovanie kamery&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 15:30 - 18:30 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 11:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 15:00 - 21:00 Karel Vojkovský&lt;br /&gt;
&lt;br /&gt;
 týden 28.10 - 3.11&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 10.00 - 15.00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 15:00 - 19:00 Martin Červenka RUŠÍM (onemocnělá modelka)&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 20:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 9:00 - 13:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 21.10 - 27.10&lt;br /&gt;
&lt;br /&gt;
21.10.2013, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10.2013, 18:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 08:00 - 11:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 13:00 - 16:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 17:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 11:30 - 14:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 14.10 - 20.10&lt;br /&gt;
&lt;br /&gt;
14.10.2013, 19:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.10.2013, 17:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 12:00 - 13:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 13:00 - 18:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.10.2013, 15:30 - 17:30 Matus Kopeniech&lt;br /&gt;
&lt;br /&gt;
19.10.2013, 15:00 - 20:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
 týden 7.10 - 13.10&lt;br /&gt;
&lt;br /&gt;
7.10.2013, 14:30 - 15:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.10.2013, 13:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.10.2013, 14:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 30.9 - 6.10&lt;br /&gt;
&lt;br /&gt;
1.10.2013, 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 13:00 - 17:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 17:00 - 19:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 23.9 - 29.9&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 17:15 - 21:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 14:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
27.9.2013, 12:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.9.2013, 10:00 - 15:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 16.9 - 22.9&lt;br /&gt;
&lt;br /&gt;
20. 9. 2013, 14:00 - 17:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
19. 9. 2013, 15:00 - 20:00 Peter Antolík&lt;br /&gt;
&lt;br /&gt;
18. 9. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.9 - 15.9&lt;br /&gt;
&lt;br /&gt;
13.9.2013, 10:00 - 11:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
9.9.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
6.9.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.9 - 8.9&lt;br /&gt;
&lt;br /&gt;
5. 9. 2013, 13:00 - 18:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 26.8 - 1.9&lt;br /&gt;
29.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.8 - 25.8&lt;br /&gt;
22.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
21.8.2013, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
20.8.2013, 18:30 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
 týden 12.8 - 18.8&lt;br /&gt;
17.8.2013, 15:00 - 17:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
12.8. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 5.8 - 11.8&lt;br /&gt;
6.8.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
10.8.2013, 15:00 - 20:00 Marek Votroubek&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Tom%C3%A1%C5%A1_Srna</id>
		<title>Tomáš Srna</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Tom%C3%A1%C5%A1_Srna"/>
				<updated>2015-05-21T15:26:59Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://srna.sk Tomáš Srna]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Tom%C3%A1%C5%A1_Srna</id>
		<title>Tomáš Srna</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Tom%C3%A1%C5%A1_Srna"/>
				<updated>2015-05-21T15:25:58Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [http://srna.sk]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Tom%C3%A1%C5%A1_Srna</id>
		<title>Tomáš Srna</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Tom%C3%A1%C5%A1_Srna"/>
				<updated>2015-05-21T15:02:57Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:tomas.jpg|thumb|Tomáš Srna]]&lt;br /&gt;
&lt;br /&gt;
== Kontakty ==&lt;br /&gt;
* Web: http://srna.sk&lt;br /&gt;
* FB: http://www.facebook.com/tomas.srna&lt;br /&gt;
* Email: tomas@srna.sk (+ Jabber, MSN, PayPal)&lt;br /&gt;
* SH Email: t.srna@sh.cvut.cz&lt;br /&gt;
* Skype: tomas.srna&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier</id>
		<title>Diskuse:Fotoatelier</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier"/>
				<updated>2015-03-14T15:30:56Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Datum, čas od - do, jméno příjmení&lt;br /&gt;
 týden 16.3. - 22.3.&lt;br /&gt;
&lt;br /&gt;
16.3. 17:00 - 22:00 Kuba Spatny &lt;br /&gt;
&lt;br /&gt;
 týden 9.3. - 15.3.&lt;br /&gt;
&lt;br /&gt;
9.3. 18:30 - 21:30 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
13.3. 15:00 - 18:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
13.3. 18:00 - 21:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
14.3. 17:00 - 18:30 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
15.3. 21:00 - 22:00 Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
 týden 2.3. - 8.3.&lt;br /&gt;
&lt;br /&gt;
8.3. 18:00-21:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 23.2. - 1.3.&lt;br /&gt;
23.2. 17:00 - 19:00 Tomáš Srna &lt;br /&gt;
&lt;br /&gt;
28.2. 20:00 - 22:00 Michal Byna&lt;br /&gt;
&lt;br /&gt;
 týden 16.2. - 22.2. &lt;br /&gt;
20.2. 10:30 - 13:30 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
22.2. 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
22.2. 15:45 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 9.2. - 15.2.&lt;br /&gt;
&lt;br /&gt;
10.2. 10:30 - 14:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
13.2. 10:00 - 13:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
14.2. 13:55 - 16:25 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 2.2. - 8.2.&lt;br /&gt;
&lt;br /&gt;
7.2. 15:00 - 18:30 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 26.1. - 1.2.&lt;br /&gt;
&lt;br /&gt;
27.1. 12:00 - 15:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
30.1. 10:30 - 13:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
30.1. 15:00 - 18:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
31.1. 14:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
31.1. 18:00 - 20:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 19.1. - 25.1.&lt;br /&gt;
&lt;br /&gt;
21.1. 15:00 - 19:00 Petr Kavulok &lt;br /&gt;
&lt;br /&gt;
24.1. 09:30 - 13:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
25.1. 11:25 - 13:50 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 12.1. - 18.1.&lt;br /&gt;
&lt;br /&gt;
13.1. 18:30 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
14.1. 16:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
14.1. 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
15.1. 13:30 - 16:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
15.1. 17:00 - 20:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
18.1. 14:00 - 17:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 5.1. - 11.1.&lt;br /&gt;
6.1. 18:00 - 22:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
7.1. 9:30 - 13:00 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 29.12. - 4.1.&lt;br /&gt;
&lt;br /&gt;
 týden 22.12. - 28.12.&lt;br /&gt;
&lt;br /&gt;
 týden 15.12. - 21.12.&lt;br /&gt;
&lt;br /&gt;
15.12 20:00 - 24:00 Pavol Vittek, údržba&lt;br /&gt;
&lt;br /&gt;
16.12. 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
19.12. 11:00 - 14:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 8.12. - 14.12.&lt;br /&gt;
&lt;br /&gt;
9.12. 15:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
10.12. 19:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
11.12. 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.12. 09:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
12.12. 13:00 - 15:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
 týden 1.12. - 7.12.&lt;br /&gt;
&lt;br /&gt;
1.12. 16:30 - 19:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
1.12. 19:00 - 21:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2.12. 17:00 - 19:30 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
4.12. 18:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
5.12. 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
5.12. 14:00 - 14:50 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
7.12. 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 24.11. - 30.11.&lt;br /&gt;
&lt;br /&gt;
26.11. 19:00 - 21:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
27.11. 11:00 - 12:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
27.11. 14.40 - 15.15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
28.11. 15:00 - 17:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
29.11. 20:00 - 23:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
30.11. 12:00 - 15:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
30.11. 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 17.11 - 23.11&lt;br /&gt;
&lt;br /&gt;
21.11. 22:00 - 23:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
21.11. 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.11. 9:00 - 11:30 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 10.11 - 16.11&lt;br /&gt;
&lt;br /&gt;
10.11 21:00 - 22:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
13.11 21:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
16.11. 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 3.11 - 9.11&lt;br /&gt;
&lt;br /&gt;
3.11 10:00 - 12:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.11 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.11 13:00 - 14:30 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
8.11 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 27.10 - 2.11&lt;br /&gt;
&lt;br /&gt;
27.10 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.10 11:00 - 15:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
28.10 15:00 - 19:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
28.10 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
30.10 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
31.10 18:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Od 31.10 do 2.11 bude vo fotoateliéri len malý softbox + deštník a 2 blesky, ktoré je možné použiť v kombinácii so starými odpalovačmi&lt;br /&gt;
&lt;br /&gt;
 týden 20.10 - 26.10&lt;br /&gt;
&lt;br /&gt;
21.10 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10 20:00 - 23:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
24.10 9:00 - 13:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
25.10 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 13.10 - 19.10&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Dodržujte prosím provozní řád fotoateliéru. Za nedodržanie dostanete BAN.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Jedná sa napr. o zametanie, úklid, vynesenie odpadkov, zapísanie sa na vrátnici - aj fotografované osoby ako návštevu atd...&lt;br /&gt;
 Vittek&lt;br /&gt;
&lt;br /&gt;
13.10 08:00 - 10:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
13.10 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
13.10 19:00 - 24:00 Pavol Vittek - DOD&lt;br /&gt;
&lt;br /&gt;
18.10. 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 6.10. - 12.10.&lt;br /&gt;
&lt;br /&gt;
6.10.2014 18:00 - 19:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
8.10.2014 17:00 - 24:00 Pavol Vittek - Akce prvák&lt;br /&gt;
&lt;br /&gt;
9.10.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
12.10.2014 16:00 - 19:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 29.9. - 5.10.&lt;br /&gt;
&lt;br /&gt;
1.10.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
3.10.2014 11:00 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
3.10.2014 16:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 22.9. - 28.9.&lt;br /&gt;
&lt;br /&gt;
23.9.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
24.9.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
25.9.2014 9:00 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 15.9. - 21.9.&lt;br /&gt;
&lt;br /&gt;
21.9.2014 9:00 - 12:30 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 8.9. - 14.9.&lt;br /&gt;
&lt;br /&gt;
8.9.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 1.9. - 7.9.&lt;br /&gt;
&lt;br /&gt;
1.9.2014 17:30 - 19:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
4.9.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
5.9.2014 14:15 - 16:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
7.9.2014 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 25.8. - 31.8.&lt;br /&gt;
&lt;br /&gt;
26.8.2014 19:00 - 20:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
27.8.2014 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
30.8.2014 18:00 - 19:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 18.8. - 24.8.&lt;br /&gt;
&lt;br /&gt;
19.8.2014 20:30 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
21.8.2014 18:00 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 11.8. - 17.8.&lt;br /&gt;
&lt;br /&gt;
11.8.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
13.8.2014 09:15 - 10:15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
13.8.2014 17:25 - 17:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 4.8. - 10.8.&lt;br /&gt;
&lt;br /&gt;
4.8.2014 18:00 - 20:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
5.8.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
6.8.2014 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
7.8.2014 08:20 - 12:00 Jan Cermak&lt;br /&gt;
&lt;br /&gt;
9.8.2014 14:00 - 15:00 Klara Skodova&lt;br /&gt;
&lt;br /&gt;
9.8.2014 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.8.2014 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 28.7. - 3.8.&lt;br /&gt;
&lt;br /&gt;
30.7.2014 8:00 - 11:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
30.7.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
1.8.2014 9:00 - 14:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 21.7. - 27.7.&lt;br /&gt;
&lt;br /&gt;
26.7.2014 13:00 - 18:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 14.7. - 20.7.&lt;br /&gt;
&lt;br /&gt;
16.7.2014 13:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.7.2014 16:00 - 19:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
17.7.2014 12:30 - 17:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 7.7. - 13.7.&lt;br /&gt;
&lt;br /&gt;
 týden 30.6. - 6.7.&lt;br /&gt;
30.6. 2014 14:00 - 18:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.6. + 1.7. Michal Býna - půjčím si jen malou odrazku, ateliér bude volný&lt;br /&gt;
&lt;br /&gt;
 týden 23.6. - 29.6.&lt;br /&gt;
26.6.2014 15:30 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 16.6. - 22.6.&lt;br /&gt;
&lt;br /&gt;
16.6.2014 19:00 - 20:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
17.6.2014 9:00 - 12:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
17.6.2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.6.2014 17:00 - 21:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
20.6.2014 9:30 - 10:30 + 13:30 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
21.6.2014 16:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.6. - 15.6.&lt;br /&gt;
&lt;br /&gt;
9.6.2014 11:00 - 13:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
12.6.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.6. - 8.6.&lt;br /&gt;
&lt;br /&gt;
4.6.2014 18:25 - 19:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 26.5 - 1.6.&lt;br /&gt;
&lt;br /&gt;
27.5.2014 20:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
28.5.2014 17:00 - 19:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
29.5.2014 10:15 - 12:30 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
29.5.2014 16:00 - 19:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.5.2014 10:00 - 11:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
31.5.2014 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
31.5.2014 22:00 - 24:05 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.5 - 25.5.&lt;br /&gt;
&lt;br /&gt;
22. 5. 2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 12.5 - 18.5&lt;br /&gt;
&lt;br /&gt;
12.5.2014 11:15 - 13:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
14.5.2014 14:00 - 17:00 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
15.5.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
16.5.2014 20:00 - 23:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 5.5 - 11.5&lt;br /&gt;
&lt;br /&gt;
5.5.2014, 21:15 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
6.5.2014, 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
7.5.2014, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
10.5.2014, 9:00 - 12:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 28.4 - 4.5&lt;br /&gt;
28.4.2014, 17:30 - 21:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
29.4.2014, 19:00 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 9:00 - 15:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 18:00 - 20:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
 týden 21.4 - 27.4&lt;br /&gt;
22.4.2014, 13:00 - 17:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
23.4.2014, 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
27.4.2014, 13:00 - 20:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 14.4 - 20.4&lt;br /&gt;
14.4.2014 - 19:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
17.4.2014 - 18:30 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 14:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 9:00 - 12:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 12:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 7.4 - 13.4&lt;br /&gt;
&lt;br /&gt;
7.4.2014 - 13:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
7.4.2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
8.4.2014, 08:30-11:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
9.4.2014, 17:30-22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 17:00 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 22:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
11.4.2014, 9:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 31.3 - 6.4&lt;br /&gt;
&lt;br /&gt;
31. 3. 2014, 18:00 - 21:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
1.4. 2014, 17:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 11:30 - 15:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 17:15 -  21:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 8:00 - 12:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 13:00 - 17:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 18:30 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 24.3 - 30.3&lt;br /&gt;
&lt;br /&gt;
24. 3. 2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
26. 3. 2014, 20:00 - 21:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
27. 3. 2014, 18:30 - 23:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
28. 3. 2014, 18:00 - 20:30 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
 týden 17.3 - 23.3&lt;br /&gt;
&lt;br /&gt;
22. 3. 2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 10.3 - 16.3&lt;br /&gt;
&lt;br /&gt;
12.3.2014, 9:45 - 13:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
13.3.2014, 15:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
15.3.2014, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
16.3.2014, 16:00 - 18:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 3.3 - 9.3&lt;br /&gt;
4.3.2014, 17:00 - 20:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 16:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 18:00 - 22:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
6.3.2014, 10:00 - 12:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.3.2014, 13:00 - 18:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
8.3.2014, 9:00 - 13:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 24.2 - 2.3&lt;br /&gt;
&lt;br /&gt;
26.2.2014, 18:00 - 21:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
27.2.2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
28.2.2014, 17:00 - 21:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
1.3.2014, 14:00 - 19:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
 týden 17.2 - 23.2&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 10:00-15:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 18:30-20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
20. 2. 2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21. 2. 2014, 15:00 - 18:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
22. 2. 2014, 09:00 - Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 10.2 - 16.2&lt;br /&gt;
&lt;br /&gt;
11. 2. 2014, 18:00- 22:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 9:30 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 18:00 - 22:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 09:00 - 12:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 13:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
14.2.2014, 17:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
15. 2.2014, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.2.2014, 11:00 - 14:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 3.2 - 9.2.&lt;br /&gt;
&lt;br /&gt;
3.2.2014, 13:00 - 17:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
4.2.2014, 16:00 - 20:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.2.2014, 15:00 - 18:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.2.2014, 18:00 - 23:00, Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 27.1 - 2.2&lt;br /&gt;
1.2.2014, 9:30 - 11:45 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
2.2.2014, 12:00 - 17:00 Pavel Krásenský&lt;br /&gt;
&lt;br /&gt;
 týden 20.1 - 26.1&lt;br /&gt;
21.1.2014, 16:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
22.1.2014, 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 12:00 - 16:45 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 17:00 - 20:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
24.1.2014, 13:45 - 18:45 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
25.1.2014, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 13.1 - 19.1&lt;br /&gt;
&lt;br /&gt;
16.1.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.1.2014, 15:00 - 19:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 6.1 - 12.1&lt;br /&gt;
&lt;br /&gt;
7.1.2014, 18:00 - 21:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.1.2014, 21:30 - 23:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 19:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
11.1.2014, 17:00 - 20:00 Matus Koperniech - zrusene, choroba&lt;br /&gt;
&lt;br /&gt;
 týden 30.12 - 5.1&lt;br /&gt;
&lt;br /&gt;
5.1.2014, 15:00 - 18:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 23.12 - 29.12&lt;br /&gt;
&lt;br /&gt;
 týden 16.12 - 22.12&lt;br /&gt;
16.12.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.12.2013, 15:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.12 - 15.12&lt;br /&gt;
10.12.2013, 16:00 - 18:30 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 15:30 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
12.12.2013, 19:00 - 22:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
14.12.2013, 11:00 - 14:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
15.12.2013, 15:00 - 17:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 2.12 - 8.12&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 11:00 - 14:20 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 14:30 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 18:30 - 20:30 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 18:00 - 21:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 08:30 - 12:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 16:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 09:00 - 13:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 15:00 - 20:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 20:30 - 21:15 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 25.11 - 1.12         &lt;br /&gt;
&lt;br /&gt;
26.11.2013, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
01.12.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 18.11 - 24.11                          &lt;br /&gt;
&lt;br /&gt;
18.11.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.11.2013, 18:00 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
19.11.2013, 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 11:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 19:00 - 22:00 Chip&lt;br /&gt;
&lt;br /&gt;
22.11.2013, 09:00 - 12:00 Martin Červenka + Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
23.11.2013, 15:00 - 18:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 11:00 - 13:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 13:00 - 18:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 11.11 - 17.11&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 16:30 - 18:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
14.11.2013, 09:30 - 13:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
15.11.2013, 19:00 - 22:00 Miroslav Šos&lt;br /&gt;
&lt;br /&gt;
16.11.2013, 13:00 - 16:00 Miroslav Šos&lt;br /&gt;
 &lt;br /&gt;
16.11.2013, 18:00 - 21:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 4.11 - 10.11&lt;br /&gt;
&lt;br /&gt;
4.11.2013, 18:00 - 22:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 07:00 - 10:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 20:00 - 23:00 Pavol Vittek montovanie kamery&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 15:30 - 18:30 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 11:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 15:00 - 21:00 Karel Vojkovský&lt;br /&gt;
&lt;br /&gt;
 týden 28.10 - 3.11&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 10.00 - 15.00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 15:00 - 19:00 Martin Červenka RUŠÍM (onemocnělá modelka)&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 20:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 9:00 - 13:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 21.10 - 27.10&lt;br /&gt;
&lt;br /&gt;
21.10.2013, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10.2013, 18:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 08:00 - 11:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 13:00 - 16:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 17:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 11:30 - 14:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 14.10 - 20.10&lt;br /&gt;
&lt;br /&gt;
14.10.2013, 19:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.10.2013, 17:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 12:00 - 13:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 13:00 - 18:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.10.2013, 15:30 - 17:30 Matus Kopeniech&lt;br /&gt;
&lt;br /&gt;
19.10.2013, 15:00 - 20:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
 týden 7.10 - 13.10&lt;br /&gt;
&lt;br /&gt;
7.10.2013, 14:30 - 15:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.10.2013, 13:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.10.2013, 14:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 30.9 - 6.10&lt;br /&gt;
&lt;br /&gt;
1.10.2013, 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 13:00 - 17:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 17:00 - 19:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 23.9 - 29.9&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 17:15 - 21:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 14:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
27.9.2013, 12:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.9.2013, 10:00 - 15:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 16.9 - 22.9&lt;br /&gt;
&lt;br /&gt;
20. 9. 2013, 14:00 - 17:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
19. 9. 2013, 15:00 - 20:00 Peter Antolík&lt;br /&gt;
&lt;br /&gt;
18. 9. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.9 - 15.9&lt;br /&gt;
&lt;br /&gt;
13.9.2013, 10:00 - 11:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
9.9.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
6.9.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.9 - 8.9&lt;br /&gt;
&lt;br /&gt;
5. 9. 2013, 13:00 - 18:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 26.8 - 1.9&lt;br /&gt;
29.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.8 - 25.8&lt;br /&gt;
22.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
21.8.2013, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
20.8.2013, 18:30 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
 týden 12.8 - 18.8&lt;br /&gt;
17.8.2013, 15:00 - 17:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
12.8. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 5.8 - 11.8&lt;br /&gt;
6.8.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
10.8.2013, 15:00 - 20:00 Marek Votroubek&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier</id>
		<title>Diskuse:Fotoatelier</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier"/>
				<updated>2015-03-09T17:46:13Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Datum, čas od - do, jméno příjmení&lt;br /&gt;
 týden 9.3. - 15.3.&lt;br /&gt;
&lt;br /&gt;
9.3. 18:30 - 21:30 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
13.3. 15:00 - 18:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
13.3. 18:00 - 21:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 2.3. - 8.3.&lt;br /&gt;
&lt;br /&gt;
8.3. 18:00-21:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 23.2. - 1.3.&lt;br /&gt;
23.2. 17:00 - 19:00 Tomáš Srna &lt;br /&gt;
&lt;br /&gt;
28.2. 20:00 - 22:00 Michal Byna&lt;br /&gt;
&lt;br /&gt;
 týden 16.2. - 22.2. &lt;br /&gt;
20.2. 10:30 - 13:30 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
22.2. 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
22.2. 15:45 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 9.2. - 15.2.&lt;br /&gt;
&lt;br /&gt;
10.2. 10:30 - 14:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
13.2. 10:00 - 13:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
14.2. 13:55 - 16:25 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 2.2. - 8.2.&lt;br /&gt;
&lt;br /&gt;
7.2. 15:00 - 18:30 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 26.1. - 1.2.&lt;br /&gt;
&lt;br /&gt;
27.1. 12:00 - 15:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
30.1. 10:30 - 13:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
30.1. 15:00 - 18:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
31.1. 14:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
31.1. 18:00 - 20:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 19.1. - 25.1.&lt;br /&gt;
&lt;br /&gt;
21.1. 15:00 - 19:00 Petr Kavulok &lt;br /&gt;
&lt;br /&gt;
24.1. 09:30 - 13:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
25.1. 11:25 - 13:50 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 12.1. - 18.1.&lt;br /&gt;
&lt;br /&gt;
13.1. 18:30 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
14.1. 16:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
14.1. 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
15.1. 13:30 - 16:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
15.1. 17:00 - 20:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
18.1. 14:00 - 17:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 5.1. - 11.1.&lt;br /&gt;
6.1. 18:00 - 22:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
7.1. 9:30 - 13:00 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 29.12. - 4.1.&lt;br /&gt;
&lt;br /&gt;
 týden 22.12. - 28.12.&lt;br /&gt;
&lt;br /&gt;
 týden 15.12. - 21.12.&lt;br /&gt;
&lt;br /&gt;
15.12 20:00 - 24:00 Pavol Vittek, údržba&lt;br /&gt;
&lt;br /&gt;
16.12. 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
19.12. 11:00 - 14:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 8.12. - 14.12.&lt;br /&gt;
&lt;br /&gt;
9.12. 15:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
10.12. 19:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
11.12. 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.12. 09:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
12.12. 13:00 - 15:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
 týden 1.12. - 7.12.&lt;br /&gt;
&lt;br /&gt;
1.12. 16:30 - 19:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
1.12. 19:00 - 21:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2.12. 17:00 - 19:30 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
4.12. 18:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
5.12. 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
5.12. 14:00 - 14:50 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
7.12. 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 24.11. - 30.11.&lt;br /&gt;
&lt;br /&gt;
26.11. 19:00 - 21:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
27.11. 11:00 - 12:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
27.11. 14.40 - 15.15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
28.11. 15:00 - 17:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
29.11. 20:00 - 23:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
30.11. 12:00 - 15:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
30.11. 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 17.11 - 23.11&lt;br /&gt;
&lt;br /&gt;
21.11. 22:00 - 23:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
21.11. 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.11. 9:00 - 11:30 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 10.11 - 16.11&lt;br /&gt;
&lt;br /&gt;
10.11 21:00 - 22:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
13.11 21:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
16.11. 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 3.11 - 9.11&lt;br /&gt;
&lt;br /&gt;
3.11 10:00 - 12:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.11 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.11 13:00 - 14:30 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
8.11 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 27.10 - 2.11&lt;br /&gt;
&lt;br /&gt;
27.10 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.10 11:00 - 15:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
28.10 15:00 - 19:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
28.10 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
30.10 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
31.10 18:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Od 31.10 do 2.11 bude vo fotoateliéri len malý softbox + deštník a 2 blesky, ktoré je možné použiť v kombinácii so starými odpalovačmi&lt;br /&gt;
&lt;br /&gt;
 týden 20.10 - 26.10&lt;br /&gt;
&lt;br /&gt;
21.10 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10 20:00 - 23:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
24.10 9:00 - 13:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
25.10 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 13.10 - 19.10&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Dodržujte prosím provozní řád fotoateliéru. Za nedodržanie dostanete BAN.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Jedná sa napr. o zametanie, úklid, vynesenie odpadkov, zapísanie sa na vrátnici - aj fotografované osoby ako návštevu atd...&lt;br /&gt;
 Vittek&lt;br /&gt;
&lt;br /&gt;
13.10 08:00 - 10:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
13.10 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
13.10 19:00 - 24:00 Pavol Vittek - DOD&lt;br /&gt;
&lt;br /&gt;
18.10. 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 6.10. - 12.10.&lt;br /&gt;
&lt;br /&gt;
6.10.2014 18:00 - 19:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
8.10.2014 17:00 - 24:00 Pavol Vittek - Akce prvák&lt;br /&gt;
&lt;br /&gt;
9.10.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
12.10.2014 16:00 - 19:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 29.9. - 5.10.&lt;br /&gt;
&lt;br /&gt;
1.10.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
3.10.2014 11:00 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
3.10.2014 16:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 22.9. - 28.9.&lt;br /&gt;
&lt;br /&gt;
23.9.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
24.9.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
25.9.2014 9:00 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 15.9. - 21.9.&lt;br /&gt;
&lt;br /&gt;
21.9.2014 9:00 - 12:30 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 8.9. - 14.9.&lt;br /&gt;
&lt;br /&gt;
8.9.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 1.9. - 7.9.&lt;br /&gt;
&lt;br /&gt;
1.9.2014 17:30 - 19:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
4.9.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
5.9.2014 14:15 - 16:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
7.9.2014 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 25.8. - 31.8.&lt;br /&gt;
&lt;br /&gt;
26.8.2014 19:00 - 20:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
27.8.2014 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
30.8.2014 18:00 - 19:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 18.8. - 24.8.&lt;br /&gt;
&lt;br /&gt;
19.8.2014 20:30 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
21.8.2014 18:00 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 11.8. - 17.8.&lt;br /&gt;
&lt;br /&gt;
11.8.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
13.8.2014 09:15 - 10:15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
13.8.2014 17:25 - 17:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 4.8. - 10.8.&lt;br /&gt;
&lt;br /&gt;
4.8.2014 18:00 - 20:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
5.8.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
6.8.2014 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
7.8.2014 08:20 - 12:00 Jan Cermak&lt;br /&gt;
&lt;br /&gt;
9.8.2014 14:00 - 15:00 Klara Skodova&lt;br /&gt;
&lt;br /&gt;
9.8.2014 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.8.2014 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 28.7. - 3.8.&lt;br /&gt;
&lt;br /&gt;
30.7.2014 8:00 - 11:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
30.7.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
1.8.2014 9:00 - 14:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 21.7. - 27.7.&lt;br /&gt;
&lt;br /&gt;
26.7.2014 13:00 - 18:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 14.7. - 20.7.&lt;br /&gt;
&lt;br /&gt;
16.7.2014 13:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.7.2014 16:00 - 19:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
17.7.2014 12:30 - 17:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 7.7. - 13.7.&lt;br /&gt;
&lt;br /&gt;
 týden 30.6. - 6.7.&lt;br /&gt;
30.6. 2014 14:00 - 18:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.6. + 1.7. Michal Býna - půjčím si jen malou odrazku, ateliér bude volný&lt;br /&gt;
&lt;br /&gt;
 týden 23.6. - 29.6.&lt;br /&gt;
26.6.2014 15:30 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 16.6. - 22.6.&lt;br /&gt;
&lt;br /&gt;
16.6.2014 19:00 - 20:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
17.6.2014 9:00 - 12:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
17.6.2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.6.2014 17:00 - 21:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
20.6.2014 9:30 - 10:30 + 13:30 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
21.6.2014 16:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.6. - 15.6.&lt;br /&gt;
&lt;br /&gt;
9.6.2014 11:00 - 13:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
12.6.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.6. - 8.6.&lt;br /&gt;
&lt;br /&gt;
4.6.2014 18:25 - 19:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 26.5 - 1.6.&lt;br /&gt;
&lt;br /&gt;
27.5.2014 20:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
28.5.2014 17:00 - 19:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
29.5.2014 10:15 - 12:30 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
29.5.2014 16:00 - 19:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.5.2014 10:00 - 11:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
31.5.2014 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
31.5.2014 22:00 - 24:05 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.5 - 25.5.&lt;br /&gt;
&lt;br /&gt;
22. 5. 2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 12.5 - 18.5&lt;br /&gt;
&lt;br /&gt;
12.5.2014 11:15 - 13:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
14.5.2014 14:00 - 17:00 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
15.5.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
16.5.2014 20:00 - 23:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 5.5 - 11.5&lt;br /&gt;
&lt;br /&gt;
5.5.2014, 21:15 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
6.5.2014, 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
7.5.2014, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
10.5.2014, 9:00 - 12:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 28.4 - 4.5&lt;br /&gt;
28.4.2014, 17:30 - 21:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
29.4.2014, 19:00 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 9:00 - 15:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 18:00 - 20:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
 týden 21.4 - 27.4&lt;br /&gt;
22.4.2014, 13:00 - 17:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
23.4.2014, 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
27.4.2014, 13:00 - 20:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 14.4 - 20.4&lt;br /&gt;
14.4.2014 - 19:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
17.4.2014 - 18:30 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 14:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 9:00 - 12:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 12:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 7.4 - 13.4&lt;br /&gt;
&lt;br /&gt;
7.4.2014 - 13:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
7.4.2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
8.4.2014, 08:30-11:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
9.4.2014, 17:30-22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 17:00 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 22:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
11.4.2014, 9:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 31.3 - 6.4&lt;br /&gt;
&lt;br /&gt;
31. 3. 2014, 18:00 - 21:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
1.4. 2014, 17:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 11:30 - 15:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 17:15 -  21:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 8:00 - 12:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 13:00 - 17:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 18:30 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 24.3 - 30.3&lt;br /&gt;
&lt;br /&gt;
24. 3. 2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
26. 3. 2014, 20:00 - 21:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
27. 3. 2014, 18:30 - 23:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
28. 3. 2014, 18:00 - 20:30 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
 týden 17.3 - 23.3&lt;br /&gt;
&lt;br /&gt;
22. 3. 2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 10.3 - 16.3&lt;br /&gt;
&lt;br /&gt;
12.3.2014, 9:45 - 13:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
13.3.2014, 15:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
15.3.2014, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
16.3.2014, 16:00 - 18:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 3.3 - 9.3&lt;br /&gt;
4.3.2014, 17:00 - 20:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 16:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 18:00 - 22:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
6.3.2014, 10:00 - 12:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.3.2014, 13:00 - 18:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
8.3.2014, 9:00 - 13:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 24.2 - 2.3&lt;br /&gt;
&lt;br /&gt;
26.2.2014, 18:00 - 21:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
27.2.2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
28.2.2014, 17:00 - 21:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
1.3.2014, 14:00 - 19:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
 týden 17.2 - 23.2&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 10:00-15:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 18:30-20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
20. 2. 2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21. 2. 2014, 15:00 - 18:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
22. 2. 2014, 09:00 - Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 10.2 - 16.2&lt;br /&gt;
&lt;br /&gt;
11. 2. 2014, 18:00- 22:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 9:30 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 18:00 - 22:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 09:00 - 12:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 13:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
14.2.2014, 17:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
15. 2.2014, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.2.2014, 11:00 - 14:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 3.2 - 9.2.&lt;br /&gt;
&lt;br /&gt;
3.2.2014, 13:00 - 17:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
4.2.2014, 16:00 - 20:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.2.2014, 15:00 - 18:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.2.2014, 18:00 - 23:00, Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 27.1 - 2.2&lt;br /&gt;
1.2.2014, 9:30 - 11:45 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
2.2.2014, 12:00 - 17:00 Pavel Krásenský&lt;br /&gt;
&lt;br /&gt;
 týden 20.1 - 26.1&lt;br /&gt;
21.1.2014, 16:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
22.1.2014, 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 12:00 - 16:45 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 17:00 - 20:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
24.1.2014, 13:45 - 18:45 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
25.1.2014, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 13.1 - 19.1&lt;br /&gt;
&lt;br /&gt;
16.1.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.1.2014, 15:00 - 19:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 6.1 - 12.1&lt;br /&gt;
&lt;br /&gt;
7.1.2014, 18:00 - 21:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.1.2014, 21:30 - 23:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 19:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
11.1.2014, 17:00 - 20:00 Matus Koperniech - zrusene, choroba&lt;br /&gt;
&lt;br /&gt;
 týden 30.12 - 5.1&lt;br /&gt;
&lt;br /&gt;
5.1.2014, 15:00 - 18:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 23.12 - 29.12&lt;br /&gt;
&lt;br /&gt;
 týden 16.12 - 22.12&lt;br /&gt;
16.12.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.12.2013, 15:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.12 - 15.12&lt;br /&gt;
10.12.2013, 16:00 - 18:30 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 15:30 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
12.12.2013, 19:00 - 22:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
14.12.2013, 11:00 - 14:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
15.12.2013, 15:00 - 17:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 2.12 - 8.12&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 11:00 - 14:20 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 14:30 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 18:30 - 20:30 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 18:00 - 21:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 08:30 - 12:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 16:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 09:00 - 13:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 15:00 - 20:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 20:30 - 21:15 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 25.11 - 1.12         &lt;br /&gt;
&lt;br /&gt;
26.11.2013, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
01.12.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 18.11 - 24.11                          &lt;br /&gt;
&lt;br /&gt;
18.11.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.11.2013, 18:00 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
19.11.2013, 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 11:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 19:00 - 22:00 Chip&lt;br /&gt;
&lt;br /&gt;
22.11.2013, 09:00 - 12:00 Martin Červenka + Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
23.11.2013, 15:00 - 18:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 11:00 - 13:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 13:00 - 18:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 11.11 - 17.11&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 16:30 - 18:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
14.11.2013, 09:30 - 13:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
15.11.2013, 19:00 - 22:00 Miroslav Šos&lt;br /&gt;
&lt;br /&gt;
16.11.2013, 13:00 - 16:00 Miroslav Šos&lt;br /&gt;
 &lt;br /&gt;
16.11.2013, 18:00 - 21:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 4.11 - 10.11&lt;br /&gt;
&lt;br /&gt;
4.11.2013, 18:00 - 22:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 07:00 - 10:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 20:00 - 23:00 Pavol Vittek montovanie kamery&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 15:30 - 18:30 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 11:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 15:00 - 21:00 Karel Vojkovský&lt;br /&gt;
&lt;br /&gt;
 týden 28.10 - 3.11&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 10.00 - 15.00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 15:00 - 19:00 Martin Červenka RUŠÍM (onemocnělá modelka)&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 20:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 9:00 - 13:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 21.10 - 27.10&lt;br /&gt;
&lt;br /&gt;
21.10.2013, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10.2013, 18:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 08:00 - 11:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 13:00 - 16:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 17:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 11:30 - 14:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 14.10 - 20.10&lt;br /&gt;
&lt;br /&gt;
14.10.2013, 19:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.10.2013, 17:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 12:00 - 13:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 13:00 - 18:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.10.2013, 15:30 - 17:30 Matus Kopeniech&lt;br /&gt;
&lt;br /&gt;
19.10.2013, 15:00 - 20:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
 týden 7.10 - 13.10&lt;br /&gt;
&lt;br /&gt;
7.10.2013, 14:30 - 15:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.10.2013, 13:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.10.2013, 14:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 30.9 - 6.10&lt;br /&gt;
&lt;br /&gt;
1.10.2013, 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 13:00 - 17:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 17:00 - 19:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 23.9 - 29.9&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 17:15 - 21:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 14:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
27.9.2013, 12:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.9.2013, 10:00 - 15:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 16.9 - 22.9&lt;br /&gt;
&lt;br /&gt;
20. 9. 2013, 14:00 - 17:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
19. 9. 2013, 15:00 - 20:00 Peter Antolík&lt;br /&gt;
&lt;br /&gt;
18. 9. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.9 - 15.9&lt;br /&gt;
&lt;br /&gt;
13.9.2013, 10:00 - 11:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
9.9.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
6.9.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.9 - 8.9&lt;br /&gt;
&lt;br /&gt;
5. 9. 2013, 13:00 - 18:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 26.8 - 1.9&lt;br /&gt;
29.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.8 - 25.8&lt;br /&gt;
22.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
21.8.2013, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
20.8.2013, 18:30 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
 týden 12.8 - 18.8&lt;br /&gt;
17.8.2013, 15:00 - 17:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
12.8. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 5.8 - 11.8&lt;br /&gt;
6.8.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
10.8.2013, 15:00 - 20:00 Marek Votroubek&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier</id>
		<title>Diskuse:Fotoatelier</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier"/>
				<updated>2015-02-22T18:17:09Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Datum, čas od - do, jméno příjmení&lt;br /&gt;
 týden 23.2. - 1.3.&lt;br /&gt;
23.2. 17:00 - 19:00 Tomáš Srna &lt;br /&gt;
&lt;br /&gt;
 týden 16.2. - 22.2. &lt;br /&gt;
20.2. 10:30 - 13:30 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
22.2. 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
22.2. 15:45 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 9.2. - 15.2.&lt;br /&gt;
&lt;br /&gt;
10.2. 10:30 - 14:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
13.2. 10:00 - 13:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
14.2. 13:55 - 16:25 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 2.2. - 8.2.&lt;br /&gt;
&lt;br /&gt;
7.2. 15:00 - 18:30 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 26.1. - 1.2.&lt;br /&gt;
&lt;br /&gt;
27.1. 12:00 - 15:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
30.1. 10:30 - 13:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
30.1. 15:00 - 18:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
31.1. 14:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
31.1. 18:00 - 20:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 19.1. - 25.1.&lt;br /&gt;
&lt;br /&gt;
21.1. 15:00 - 19:00 Petr Kavulok &lt;br /&gt;
&lt;br /&gt;
24.1. 09:30 - 13:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
25.1. 11:25 - 13:50 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 12.1. - 18.1.&lt;br /&gt;
&lt;br /&gt;
13.1. 18:30 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
14.1. 16:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
14.1. 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
15.1. 13:30 - 16:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
15.1. 17:00 - 20:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
18.1. 14:00 - 17:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
 týden 5.1. - 11.1.&lt;br /&gt;
6.1. 18:00 - 22:00 Pavel Řehák&lt;br /&gt;
&lt;br /&gt;
7.1. 9:30 - 13:00 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 29.12. - 4.1.&lt;br /&gt;
&lt;br /&gt;
 týden 22.12. - 28.12.&lt;br /&gt;
&lt;br /&gt;
 týden 15.12. - 21.12.&lt;br /&gt;
&lt;br /&gt;
15.12 20:00 - 24:00 Pavol Vittek, údržba&lt;br /&gt;
&lt;br /&gt;
16.12. 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
19.12. 11:00 - 14:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 8.12. - 14.12.&lt;br /&gt;
&lt;br /&gt;
9.12. 15:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
10.12. 19:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
11.12. 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.12. 09:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
12.12. 13:00 - 15:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
 týden 1.12. - 7.12.&lt;br /&gt;
&lt;br /&gt;
1.12. 16:30 - 19:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
1.12. 19:00 - 21:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2.12. 17:00 - 19:30 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
4.12. 18:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
5.12. 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
5.12. 14:00 - 14:50 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
7.12. 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 24.11. - 30.11.&lt;br /&gt;
&lt;br /&gt;
26.11. 19:00 - 21:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
27.11. 11:00 - 12:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
27.11. 14.40 - 15.15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
28.11. 15:00 - 17:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
29.11. 20:00 - 23:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
30.11. 12:00 - 15:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
30.11. 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 17.11 - 23.11&lt;br /&gt;
&lt;br /&gt;
21.11. 22:00 - 23:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
21.11. 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.11. 9:00 - 11:30 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 10.11 - 16.11&lt;br /&gt;
&lt;br /&gt;
10.11 21:00 - 22:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
13.11 21:00 - 23:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
16.11. 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 3.11 - 9.11&lt;br /&gt;
&lt;br /&gt;
3.11 10:00 - 12:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.11 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.11 13:00 - 14:30 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
8.11 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 27.10 - 2.11&lt;br /&gt;
&lt;br /&gt;
27.10 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.10 11:00 - 15:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
28.10 15:00 - 19:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
28.10 19:00 - 23:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
30.10 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
31.10 18:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Od 31.10 do 2.11 bude vo fotoateliéri len malý softbox + deštník a 2 blesky, ktoré je možné použiť v kombinácii so starými odpalovačmi&lt;br /&gt;
&lt;br /&gt;
 týden 20.10 - 26.10&lt;br /&gt;
&lt;br /&gt;
21.10 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10 20:00 - 23:00 Petr Kavulok&lt;br /&gt;
&lt;br /&gt;
24.10 9:00 - 13:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
25.10 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 13.10 - 19.10&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Dodržujte prosím provozní řád fotoateliéru. Za nedodržanie dostanete BAN.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Jedná sa napr. o zametanie, úklid, vynesenie odpadkov, zapísanie sa na vrátnici - aj fotografované osoby ako návštevu atd...&lt;br /&gt;
 Vittek&lt;br /&gt;
&lt;br /&gt;
13.10 08:00 - 10:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
13.10 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
13.10 19:00 - 24:00 Pavol Vittek - DOD&lt;br /&gt;
&lt;br /&gt;
18.10. 9:00 - 12:00 Lukáš Bařinka&lt;br /&gt;
&lt;br /&gt;
 týden 6.10. - 12.10.&lt;br /&gt;
&lt;br /&gt;
6.10.2014 18:00 - 19:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
8.10.2014 17:00 - 24:00 Pavol Vittek - Akce prvák&lt;br /&gt;
&lt;br /&gt;
9.10.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
12.10.2014 16:00 - 19:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 29.9. - 5.10.&lt;br /&gt;
&lt;br /&gt;
1.10.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
3.10.2014 11:00 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
3.10.2014 16:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 22.9. - 28.9.&lt;br /&gt;
&lt;br /&gt;
23.9.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
24.9.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
25.9.2014 9:00 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 15.9. - 21.9.&lt;br /&gt;
&lt;br /&gt;
21.9.2014 9:00 - 12:30 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 8.9. - 14.9.&lt;br /&gt;
&lt;br /&gt;
8.9.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 1.9. - 7.9.&lt;br /&gt;
&lt;br /&gt;
1.9.2014 17:30 - 19:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
4.9.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
5.9.2014 14:15 - 16:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
7.9.2014 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 25.8. - 31.8.&lt;br /&gt;
&lt;br /&gt;
26.8.2014 19:00 - 20:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
27.8.2014 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
30.8.2014 18:00 - 19:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 18.8. - 24.8.&lt;br /&gt;
&lt;br /&gt;
19.8.2014 20:30 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
21.8.2014 18:00 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 11.8. - 17.8.&lt;br /&gt;
&lt;br /&gt;
11.8.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
13.8.2014 09:15 - 10:15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
13.8.2014 17:25 - 17:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 4.8. - 10.8.&lt;br /&gt;
&lt;br /&gt;
4.8.2014 18:00 - 20:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
5.8.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
6.8.2014 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
7.8.2014 08:20 - 12:00 Jan Cermak&lt;br /&gt;
&lt;br /&gt;
9.8.2014 14:00 - 15:00 Klara Skodova&lt;br /&gt;
&lt;br /&gt;
9.8.2014 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.8.2014 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 28.7. - 3.8.&lt;br /&gt;
&lt;br /&gt;
30.7.2014 8:00 - 11:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
30.7.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
1.8.2014 9:00 - 14:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 21.7. - 27.7.&lt;br /&gt;
&lt;br /&gt;
26.7.2014 13:00 - 18:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 14.7. - 20.7.&lt;br /&gt;
&lt;br /&gt;
16.7.2014 13:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.7.2014 16:00 - 19:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
17.7.2014 12:30 - 17:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 7.7. - 13.7.&lt;br /&gt;
&lt;br /&gt;
 týden 30.6. - 6.7.&lt;br /&gt;
30.6. 2014 14:00 - 18:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.6. + 1.7. Michal Býna - půjčím si jen malou odrazku, ateliér bude volný&lt;br /&gt;
&lt;br /&gt;
 týden 23.6. - 29.6.&lt;br /&gt;
26.6.2014 15:30 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 16.6. - 22.6.&lt;br /&gt;
&lt;br /&gt;
16.6.2014 19:00 - 20:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
17.6.2014 9:00 - 12:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
17.6.2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.6.2014 17:00 - 21:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
20.6.2014 9:30 - 10:30 + 13:30 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
21.6.2014 16:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.6. - 15.6.&lt;br /&gt;
&lt;br /&gt;
9.6.2014 11:00 - 13:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
12.6.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.6. - 8.6.&lt;br /&gt;
&lt;br /&gt;
4.6.2014 18:25 - 19:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 26.5 - 1.6.&lt;br /&gt;
&lt;br /&gt;
27.5.2014 20:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
28.5.2014 17:00 - 19:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
29.5.2014 10:15 - 12:30 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
29.5.2014 16:00 - 19:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.5.2014 10:00 - 11:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
31.5.2014 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
31.5.2014 22:00 - 24:05 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.5 - 25.5.&lt;br /&gt;
&lt;br /&gt;
22. 5. 2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 12.5 - 18.5&lt;br /&gt;
&lt;br /&gt;
12.5.2014 11:15 - 13:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
14.5.2014 14:00 - 17:00 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
15.5.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
16.5.2014 20:00 - 23:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 5.5 - 11.5&lt;br /&gt;
&lt;br /&gt;
5.5.2014, 21:15 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
6.5.2014, 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
7.5.2014, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
10.5.2014, 9:00 - 12:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 28.4 - 4.5&lt;br /&gt;
28.4.2014, 17:30 - 21:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
29.4.2014, 19:00 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 9:00 - 15:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 18:00 - 20:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
 týden 21.4 - 27.4&lt;br /&gt;
22.4.2014, 13:00 - 17:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
23.4.2014, 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
27.4.2014, 13:00 - 20:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 14.4 - 20.4&lt;br /&gt;
14.4.2014 - 19:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
17.4.2014 - 18:30 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 14:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 9:00 - 12:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 12:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 7.4 - 13.4&lt;br /&gt;
&lt;br /&gt;
7.4.2014 - 13:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
7.4.2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
8.4.2014, 08:30-11:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
9.4.2014, 17:30-22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 17:00 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 22:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
11.4.2014, 9:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 31.3 - 6.4&lt;br /&gt;
&lt;br /&gt;
31. 3. 2014, 18:00 - 21:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
1.4. 2014, 17:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 11:30 - 15:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 17:15 -  21:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 8:00 - 12:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 13:00 - 17:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 18:30 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 24.3 - 30.3&lt;br /&gt;
&lt;br /&gt;
24. 3. 2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
26. 3. 2014, 20:00 - 21:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
27. 3. 2014, 18:30 - 23:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
28. 3. 2014, 18:00 - 20:30 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
 týden 17.3 - 23.3&lt;br /&gt;
&lt;br /&gt;
22. 3. 2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 10.3 - 16.3&lt;br /&gt;
&lt;br /&gt;
12.3.2014, 9:45 - 13:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
13.3.2014, 15:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
15.3.2014, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
16.3.2014, 16:00 - 18:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 3.3 - 9.3&lt;br /&gt;
4.3.2014, 17:00 - 20:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 16:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 18:00 - 22:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
6.3.2014, 10:00 - 12:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.3.2014, 13:00 - 18:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
8.3.2014, 9:00 - 13:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 24.2 - 2.3&lt;br /&gt;
&lt;br /&gt;
26.2.2014, 18:00 - 21:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
27.2.2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
28.2.2014, 17:00 - 21:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
1.3.2014, 14:00 - 19:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
 týden 17.2 - 23.2&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 10:00-15:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 18:30-20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
20. 2. 2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21. 2. 2014, 15:00 - 18:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
22. 2. 2014, 09:00 - Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 10.2 - 16.2&lt;br /&gt;
&lt;br /&gt;
11. 2. 2014, 18:00- 22:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 9:30 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 18:00 - 22:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 09:00 - 12:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 13:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
14.2.2014, 17:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
15. 2.2014, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.2.2014, 11:00 - 14:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 3.2 - 9.2.&lt;br /&gt;
&lt;br /&gt;
3.2.2014, 13:00 - 17:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
4.2.2014, 16:00 - 20:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.2.2014, 15:00 - 18:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.2.2014, 18:00 - 23:00, Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 27.1 - 2.2&lt;br /&gt;
1.2.2014, 9:30 - 11:45 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
2.2.2014, 12:00 - 17:00 Pavel Krásenský&lt;br /&gt;
&lt;br /&gt;
 týden 20.1 - 26.1&lt;br /&gt;
21.1.2014, 16:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
22.1.2014, 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 12:00 - 16:45 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 17:00 - 20:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
24.1.2014, 13:45 - 18:45 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
25.1.2014, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 13.1 - 19.1&lt;br /&gt;
&lt;br /&gt;
16.1.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.1.2014, 15:00 - 19:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 6.1 - 12.1&lt;br /&gt;
&lt;br /&gt;
7.1.2014, 18:00 - 21:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.1.2014, 21:30 - 23:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 19:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
11.1.2014, 17:00 - 20:00 Matus Koperniech - zrusene, choroba&lt;br /&gt;
&lt;br /&gt;
 týden 30.12 - 5.1&lt;br /&gt;
&lt;br /&gt;
5.1.2014, 15:00 - 18:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 23.12 - 29.12&lt;br /&gt;
&lt;br /&gt;
 týden 16.12 - 22.12&lt;br /&gt;
16.12.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.12.2013, 15:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.12 - 15.12&lt;br /&gt;
10.12.2013, 16:00 - 18:30 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 15:30 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
12.12.2013, 19:00 - 22:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
14.12.2013, 11:00 - 14:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
15.12.2013, 15:00 - 17:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 2.12 - 8.12&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 11:00 - 14:20 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 14:30 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 18:30 - 20:30 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 18:00 - 21:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 08:30 - 12:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 16:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 09:00 - 13:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 15:00 - 20:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 20:30 - 21:15 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 25.11 - 1.12         &lt;br /&gt;
&lt;br /&gt;
26.11.2013, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
01.12.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 18.11 - 24.11                          &lt;br /&gt;
&lt;br /&gt;
18.11.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.11.2013, 18:00 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
19.11.2013, 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 11:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 19:00 - 22:00 Chip&lt;br /&gt;
&lt;br /&gt;
22.11.2013, 09:00 - 12:00 Martin Červenka + Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
23.11.2013, 15:00 - 18:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 11:00 - 13:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 13:00 - 18:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 11.11 - 17.11&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 16:30 - 18:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
14.11.2013, 09:30 - 13:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
15.11.2013, 19:00 - 22:00 Miroslav Šos&lt;br /&gt;
&lt;br /&gt;
16.11.2013, 13:00 - 16:00 Miroslav Šos&lt;br /&gt;
 &lt;br /&gt;
16.11.2013, 18:00 - 21:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 4.11 - 10.11&lt;br /&gt;
&lt;br /&gt;
4.11.2013, 18:00 - 22:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 07:00 - 10:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 20:00 - 23:00 Pavol Vittek montovanie kamery&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 15:30 - 18:30 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 11:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 15:00 - 21:00 Karel Vojkovský&lt;br /&gt;
&lt;br /&gt;
 týden 28.10 - 3.11&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 10.00 - 15.00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 15:00 - 19:00 Martin Červenka RUŠÍM (onemocnělá modelka)&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 20:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 9:00 - 13:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 21.10 - 27.10&lt;br /&gt;
&lt;br /&gt;
21.10.2013, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10.2013, 18:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 08:00 - 11:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 13:00 - 16:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 17:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 11:30 - 14:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 14.10 - 20.10&lt;br /&gt;
&lt;br /&gt;
14.10.2013, 19:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.10.2013, 17:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 12:00 - 13:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 13:00 - 18:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.10.2013, 15:30 - 17:30 Matus Kopeniech&lt;br /&gt;
&lt;br /&gt;
19.10.2013, 15:00 - 20:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
 týden 7.10 - 13.10&lt;br /&gt;
&lt;br /&gt;
7.10.2013, 14:30 - 15:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.10.2013, 13:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.10.2013, 14:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 30.9 - 6.10&lt;br /&gt;
&lt;br /&gt;
1.10.2013, 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 13:00 - 17:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 17:00 - 19:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 23.9 - 29.9&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 17:15 - 21:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 14:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
27.9.2013, 12:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.9.2013, 10:00 - 15:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 16.9 - 22.9&lt;br /&gt;
&lt;br /&gt;
20. 9. 2013, 14:00 - 17:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
19. 9. 2013, 15:00 - 20:00 Peter Antolík&lt;br /&gt;
&lt;br /&gt;
18. 9. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.9 - 15.9&lt;br /&gt;
&lt;br /&gt;
13.9.2013, 10:00 - 11:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
9.9.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
6.9.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.9 - 8.9&lt;br /&gt;
&lt;br /&gt;
5. 9. 2013, 13:00 - 18:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 26.8 - 1.9&lt;br /&gt;
29.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.8 - 25.8&lt;br /&gt;
22.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
21.8.2013, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
20.8.2013, 18:30 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
 týden 12.8 - 18.8&lt;br /&gt;
17.8.2013, 15:00 - 17:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
12.8. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 5.8 - 11.8&lt;br /&gt;
6.8.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
10.8.2013, 15:00 - 20:00 Marek Votroubek&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Obsazeni_SC</id>
		<title>Obsazeni SC</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Obsazeni_SC"/>
				<updated>2014-10-23T06:26:03Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
=== Obsazenost učeben ===&lt;br /&gt;
&lt;br /&gt;
Obsazenost učeben se nachází na Confluence.&lt;br /&gt;
[https://confluence.sh.cvut.cz/pages/viewpage.action?pageId=393220 Vzdělávání – Confluence SH]&lt;br /&gt;
&lt;br /&gt;
===Přednáškový sál===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1 cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;amp;nbsp;&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; width =&amp;quot;120&amp;quot; |16&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; width =&amp;quot;120&amp;quot; |17&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; width =&amp;quot;120&amp;quot; |18&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; width =&amp;quot;120&amp;quot; |19&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; width =&amp;quot;120&amp;quot; |20&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; width =&amp;quot;120&amp;quot; |21&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot; width =&amp;quot;120&amp;quot; |22&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| 00&lt;br /&gt;
| 15&lt;br /&gt;
| 30&lt;br /&gt;
| 45&lt;br /&gt;
| 00&lt;br /&gt;
| 15&lt;br /&gt;
| 30&lt;br /&gt;
| 45&lt;br /&gt;
| 00&lt;br /&gt;
| 15&lt;br /&gt;
| 30&lt;br /&gt;
| 45&lt;br /&gt;
| 00&lt;br /&gt;
| 15&lt;br /&gt;
| 30&lt;br /&gt;
| 45&lt;br /&gt;
| 00&lt;br /&gt;
| 15&lt;br /&gt;
| 30&lt;br /&gt;
| 45&lt;br /&gt;
| 00&lt;br /&gt;
| 15&lt;br /&gt;
| 30&lt;br /&gt;
| 45&lt;br /&gt;
| 00&lt;br /&gt;
| 15&lt;br /&gt;
| 30&lt;br /&gt;
| 45&lt;br /&gt;
|-&lt;br /&gt;
!pondělí&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| Spafi&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| Taneční&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
!úterý&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|colspan=&amp;quot;6&amp;quot;| Breakdance&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| Taneční&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
!středa&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| Spafi&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| Taneční&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
!čtvrtek&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| Breakdance&lt;br /&gt;
|colspan=&amp;quot;6&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| Taneční&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
!pátek&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|colspan=&amp;quot;12&amp;quot;| SPAFi - filmová škola&lt;br /&gt;
|colspan=&amp;quot;8&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
!sobota&lt;br /&gt;
|colspan=&amp;quot;30&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
!neděle&lt;br /&gt;
|colspan=&amp;quot;30&amp;quot;| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;color: #ee0000; font-size: 1.2em;&amp;quot;&amp;gt;Prosím uživatele sálu, aby po sobě nenechávali nepořádek a aspoň ten největší bordel uklidili - koště určitě najdete ;) Díky.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aktualizováno 12. října 2014 17:15&lt;br /&gt;
&lt;br /&gt;
===Mimořádné akce===&lt;br /&gt;
&lt;br /&gt;
Přidávání mimořádných akcí se řídí následujícími pravidly:&lt;br /&gt;
* mimořádné akce by neměli zasahovat do rozvrhu výše uvedených učeben&lt;br /&gt;
* zajistit si souhlas předsedy nebo místopředsedy klubu SH s akcí&lt;br /&gt;
* uvědomit správce školícího centra (ten jediný aktualizuje seznam mimořádných akcí) a domluvit se na přístupu do budovy&lt;br /&gt;
&lt;br /&gt;
Přehled schválených akcí:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1 cellspacing=&amp;quot;0&amp;quot; width=900&lt;br /&gt;
|-&lt;br /&gt;
!Datum akce&lt;br /&gt;
!Místnost&lt;br /&gt;
!Popis/Zodpovědná osoba&lt;br /&gt;
!Čas&lt;br /&gt;
!Datum vložení&lt;br /&gt;
|-&lt;br /&gt;
|23.- 25.10.2015&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Game Jam Prague (Jaroslav Meloun)&lt;br /&gt;
|Celé den&lt;br /&gt;
|21.10.2014&lt;br /&gt;
|-&lt;br /&gt;
|5.10.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|SPAFi&lt;br /&gt;
|Celý den&lt;br /&gt;
|30.9.2014&lt;br /&gt;
|-&lt;br /&gt;
|13.-14.9.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|0MQ školení&lt;br /&gt;
|Celé dny&lt;br /&gt;
|30.7.2014&lt;br /&gt;
|-&lt;br /&gt;
|27.8.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|IAESTE&lt;br /&gt;
|16:00 - 20:00&lt;br /&gt;
|14.7.2014&lt;br /&gt;
|-&lt;br /&gt;
|26.8.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|IAESTE&lt;br /&gt;
|16:00 - 21:00&lt;br /&gt;
|14.7.2014&lt;br /&gt;
|-&lt;br /&gt;
|21.8.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|IAESTE&lt;br /&gt;
|16:00 - 21:00&lt;br /&gt;
|14.7.2014&lt;br /&gt;
|-&lt;br /&gt;
|19.8.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|IAESTE - Google Glass&lt;br /&gt;
|17:00 - 23:00&lt;br /&gt;
|14.7.2014&lt;br /&gt;
|-&lt;br /&gt;
|9.8.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|BEST&lt;br /&gt;
|17:00 - 23:00&lt;br /&gt;
|4.8.2014&lt;br /&gt;
|-&lt;br /&gt;
|5.8.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|IAESTE - Modern Ways of Testing Unix OS&lt;br /&gt;
|17:00 - 23:00&lt;br /&gt;
|15.7.2014&lt;br /&gt;
|-&lt;br /&gt;
|31.7.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|BEST&lt;br /&gt;
|17:00 - 23:00&lt;br /&gt;
|14.5.2014&lt;br /&gt;
|-&lt;br /&gt;
|18.7.-27.7.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|BEST&lt;br /&gt;
|Celé dny&lt;br /&gt;
|14.5.2014&lt;br /&gt;
|-&lt;br /&gt;
|17.7.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|IAESTE&lt;br /&gt;
|17:00 - 23:00&lt;br /&gt;
|7.7.2014&lt;br /&gt;
|-&lt;br /&gt;
|28.-29.6.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Stolní hra (R. Pernicová)&lt;br /&gt;
|Celý den&lt;br /&gt;
|14.5.2014&lt;br /&gt;
|-&lt;br /&gt;
|14.6.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Breakdance&lt;br /&gt;
|Celý den&lt;br /&gt;
|21.3.2014&lt;br /&gt;
|-&lt;br /&gt;
|7.5.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Silicon Hill (Jakub Brož)&lt;br /&gt;
|15:00 - 22:00&lt;br /&gt;
|29.4.2014&lt;br /&gt;
|-&lt;br /&gt;
|24.4.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Spafi&lt;br /&gt;
|Celý den&lt;br /&gt;
|4.4.2014&lt;br /&gt;
|-&lt;br /&gt;
|8.4.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Konference pro aktivní lidi klubu&lt;br /&gt;
|18:00 - 24:00&lt;br /&gt;
|21.2.2014&lt;br /&gt;
|-&lt;br /&gt;
|25.3.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|FAQ večer: Světová náboženství&lt;br /&gt;
|18:00 - 23:00&lt;br /&gt;
|5.3.2014&lt;br /&gt;
|-&lt;br /&gt;
|12.3.2014&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|FAQ večer: Evoluce&lt;br /&gt;
|18:00 - 23:00&lt;br /&gt;
|5.3.2013&lt;br /&gt;
|-&lt;br /&gt;
|1 - 2.3.2014&lt;br /&gt;
|Celé šc&lt;br /&gt;
|Installfest&lt;br /&gt;
|celé dny&lt;br /&gt;
|18.12.2013&lt;br /&gt;
|-&lt;br /&gt;
|24 - 26.1.2014&lt;br /&gt;
|Celé šc&lt;br /&gt;
|Game Jam Prague 2013 (J. Meloun)&lt;br /&gt;
|celé dny&lt;br /&gt;
|18.12.2013&lt;br /&gt;
|-&lt;br /&gt;
|11.12.2013&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Blokové hry&lt;br /&gt;
|od 18:00&lt;br /&gt;
|2.12.2013&lt;br /&gt;
|-&lt;br /&gt;
|10.12.2013&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Strahovská liga ve stolním tennise&lt;br /&gt;
|od 19:30&lt;br /&gt;
|2.12.2013&lt;br /&gt;
|-&lt;br /&gt;
|26.11.2013&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Blokové hry&lt;br /&gt;
|od 19:30&lt;br /&gt;
|20.11.2013&lt;br /&gt;
|-&lt;br /&gt;
|14.11.2013&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|CUSF (Martin Prusa)&lt;br /&gt;
|od 15:00&lt;br /&gt;
|9.11.2013&lt;br /&gt;
|-&lt;br /&gt;
|29.10.2013&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Akce druhák&lt;br /&gt;
|Celý den&lt;br /&gt;
|1.10.2013&lt;br /&gt;
|-&lt;br /&gt;
|25.10.2013&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Erasmus Student Club (Ivan Kobelev)&lt;br /&gt;
|20:00 - 23:00&lt;br /&gt;
|1.9.2013&lt;br /&gt;
|-&lt;br /&gt;
|23.10.2013&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Akce druhák&lt;br /&gt;
|Večer&lt;br /&gt;
|16.10.2013&lt;br /&gt;
|-&lt;br /&gt;
|7.10.2013&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Přednáška Karierného centra&lt;br /&gt;
|15:00 - 19:00&lt;br /&gt;
|20.9.2013&lt;br /&gt;
|-&lt;br /&gt;
|14.-27.7.2013&lt;br /&gt;
|Přednáškový sál&lt;br /&gt;
|Pražské filmové prázdniny (SPAFi)&lt;br /&gt;
|cele dny&lt;br /&gt;
|8.6.2013&lt;br /&gt;
|-&lt;br /&gt;
|28.-30.6.2013&lt;br /&gt;
|Celé ŠC&lt;br /&gt;
|LAN party&lt;br /&gt;
|cele dny&lt;br /&gt;
|10.6.2013&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier</id>
		<title>Diskuse:Fotoatelier</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier"/>
				<updated>2014-10-09T06:55:34Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Datum, čas od - do, jméno příjmení&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 týden 20.10 - 26.10&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 týden 13.10 - 19.10&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Dodržujte prosím provozní řád fotoateliéru. Za nedodržanie dostanete BAN.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Jedná sa napr. o zametanie, úklid, vynesenie odpadkov, zapísanie sa na vrátnici - aj fotografované osoby ako návštevu atd...&lt;br /&gt;
 Vittek&lt;br /&gt;
&lt;br /&gt;
13.10 16:00 - 18:30 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
13.10 19:00 - 24:00 Pavol Vittek - DOD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 6.10. - 12.10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6.10.2014 18:00 - 19:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
8.10.2014 17:00 - 24:00 Pavol Vittek - Akce prvák&lt;br /&gt;
&lt;br /&gt;
9.10.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
10.10.2014 11:00 - 14:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 29.9. - 5.10.&lt;br /&gt;
&lt;br /&gt;
1.10.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
3.10.2014 11:00 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
3.10.2014 16:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 22.9. - 28.9.&lt;br /&gt;
&lt;br /&gt;
23.9.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
24.9.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
25.9.2014 9:00 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 15.9. - 21.9.&lt;br /&gt;
&lt;br /&gt;
21.9.2014 9:00 - 12:30 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 8.9. - 14.9.&lt;br /&gt;
&lt;br /&gt;
8.9.2014 18:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 1.9. - 7.9.&lt;br /&gt;
&lt;br /&gt;
1.9.2014 17:30 - 19:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
4.9.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
5.9.2014 14:15 - 16:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
7.9.2014 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 25.8. - 31.8.&lt;br /&gt;
&lt;br /&gt;
26.8.2014 19:00 - 20:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
27.8.2014 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
30.8.2014 18:00 - 19:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 18.8. - 24.8.&lt;br /&gt;
&lt;br /&gt;
19.8.2014 20:30 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
21.8.2014 18:00 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 11.8. - 17.8.&lt;br /&gt;
&lt;br /&gt;
11.8.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
13.8.2014 09:15 - 10:15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
13.8.2014 17:25 - 17:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 4.8. - 10.8.&lt;br /&gt;
&lt;br /&gt;
4.8.2014 18:00 - 20:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
5.8.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
6.8.2014 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
7.8.2014 08:20 - 12:00 Jan Cermak&lt;br /&gt;
&lt;br /&gt;
9.8.2014 14:00 - 15:00 Klara Skodova&lt;br /&gt;
&lt;br /&gt;
9.8.2014 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.8.2014 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 28.7. - 3.8.&lt;br /&gt;
&lt;br /&gt;
30.7.2014 8:00 - 11:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
30.7.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
1.8.2014 9:00 - 14:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 21.7. - 27.7.&lt;br /&gt;
&lt;br /&gt;
26.7.2014 13:00 - 18:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 14.7. - 20.7.&lt;br /&gt;
&lt;br /&gt;
16.7.2014 13:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.7.2014 16:00 - 19:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
17.7.2014 12:30 - 17:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 7.7. - 13.7.&lt;br /&gt;
&lt;br /&gt;
 týden 30.6. - 6.7.&lt;br /&gt;
30.6. 2014 14:00 - 18:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.6. + 1.7. Michal Býna - půjčím si jen malou odrazku, ateliér bude volný&lt;br /&gt;
&lt;br /&gt;
 týden 23.6. - 29.6.&lt;br /&gt;
26.6.2014 15:30 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 16.6. - 22.6.&lt;br /&gt;
&lt;br /&gt;
16.6.2014 19:00 - 20:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
17.6.2014 9:00 - 12:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
17.6.2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.6.2014 17:00 - 21:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
20.6.2014 9:30 - 10:30 + 13:30 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
21.6.2014 16:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.6. - 15.6.&lt;br /&gt;
&lt;br /&gt;
9.6.2014 11:00 - 13:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
12.6.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.6. - 8.6.&lt;br /&gt;
&lt;br /&gt;
4.6.2014 18:25 - 19:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 26.5 - 1.6.&lt;br /&gt;
&lt;br /&gt;
27.5.2014 20:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
28.5.2014 17:00 - 19:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
29.5.2014 10:15 - 12:30 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
29.5.2014 16:00 - 19:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.5.2014 10:00 - 11:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
31.5.2014 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
31.5.2014 22:00 - 24:05 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.5 - 25.5.&lt;br /&gt;
&lt;br /&gt;
22. 5. 2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 12.5 - 18.5&lt;br /&gt;
&lt;br /&gt;
12.5.2014 11:15 - 13:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
14.5.2014 14:00 - 17:00 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
15.5.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
16.5.2014 20:00 - 23:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 5.5 - 11.5&lt;br /&gt;
&lt;br /&gt;
5.5.2014, 21:15 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
6.5.2014, 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
7.5.2014, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
10.5.2014, 9:00 - 12:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 28.4 - 4.5&lt;br /&gt;
28.4.2014, 17:30 - 21:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
29.4.2014, 19:00 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 9:00 - 15:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 18:00 - 20:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
 týden 21.4 - 27.4&lt;br /&gt;
22.4.2014, 13:00 - 17:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
23.4.2014, 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
27.4.2014, 13:00 - 20:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 14.4 - 20.4&lt;br /&gt;
14.4.2014 - 19:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
17.4.2014 - 18:30 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 14:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 9:00 - 12:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 12:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 7.4 - 13.4&lt;br /&gt;
&lt;br /&gt;
7.4.2014 - 13:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
7.4.2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
8.4.2014, 08:30-11:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
9.4.2014, 17:30-22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 17:00 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 22:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
11.4.2014, 9:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 31.3 - 6.4&lt;br /&gt;
&lt;br /&gt;
31. 3. 2014, 18:00 - 21:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
1.4. 2014, 17:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 11:30 - 15:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 17:15 -  21:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 8:00 - 12:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 13:00 - 17:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 18:30 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 24.3 - 30.3&lt;br /&gt;
&lt;br /&gt;
24. 3. 2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
26. 3. 2014, 20:00 - 21:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
27. 3. 2014, 18:30 - 23:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
28. 3. 2014, 18:00 - 20:30 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
 týden 17.3 - 23.3&lt;br /&gt;
&lt;br /&gt;
22. 3. 2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 10.3 - 16.3&lt;br /&gt;
&lt;br /&gt;
12.3.2014, 9:45 - 13:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
13.3.2014, 15:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
15.3.2014, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
16.3.2014, 16:00 - 18:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 3.3 - 9.3&lt;br /&gt;
4.3.2014, 17:00 - 20:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 16:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 18:00 - 22:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
6.3.2014, 10:00 - 12:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.3.2014, 13:00 - 18:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
8.3.2014, 9:00 - 13:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 24.2 - 2.3&lt;br /&gt;
&lt;br /&gt;
26.2.2014, 18:00 - 21:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
27.2.2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
28.2.2014, 17:00 - 21:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
1.3.2014, 14:00 - 19:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
 týden 17.2 - 23.2&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 10:00-15:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 18:30-20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
20. 2. 2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21. 2. 2014, 15:00 - 18:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
22. 2. 2014, 09:00 - Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 10.2 - 16.2&lt;br /&gt;
&lt;br /&gt;
11. 2. 2014, 18:00- 22:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 9:30 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 18:00 - 22:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 09:00 - 12:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 13:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
14.2.2014, 17:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
15. 2.2014, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.2.2014, 11:00 - 14:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 3.2 - 9.2.&lt;br /&gt;
&lt;br /&gt;
3.2.2014, 13:00 - 17:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
4.2.2014, 16:00 - 20:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.2.2014, 15:00 - 18:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.2.2014, 18:00 - 23:00, Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 27.1 - 2.2&lt;br /&gt;
1.2.2014, 9:30 - 11:45 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
2.2.2014, 12:00 - 17:00 Pavel Krásenský&lt;br /&gt;
&lt;br /&gt;
 týden 20.1 - 26.1&lt;br /&gt;
21.1.2014, 16:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
22.1.2014, 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 12:00 - 16:45 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 17:00 - 20:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
24.1.2014, 13:45 - 18:45 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
25.1.2014, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 13.1 - 19.1&lt;br /&gt;
&lt;br /&gt;
16.1.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.1.2014, 15:00 - 19:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 6.1 - 12.1&lt;br /&gt;
&lt;br /&gt;
7.1.2014, 18:00 - 21:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.1.2014, 21:30 - 23:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 19:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
11.1.2014, 17:00 - 20:00 Matus Koperniech - zrusene, choroba&lt;br /&gt;
&lt;br /&gt;
 týden 30.12 - 5.1&lt;br /&gt;
&lt;br /&gt;
5.1.2014, 15:00 - 18:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 23.12 - 29.12&lt;br /&gt;
&lt;br /&gt;
 týden 16.12 - 22.12&lt;br /&gt;
16.12.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.12.2013, 15:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.12 - 15.12&lt;br /&gt;
10.12.2013, 16:00 - 18:30 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 15:30 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
12.12.2013, 19:00 - 22:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
14.12.2013, 11:00 - 14:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
15.12.2013, 15:00 - 17:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 2.12 - 8.12&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 11:00 - 14:20 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 14:30 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 18:30 - 20:30 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 18:00 - 21:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 08:30 - 12:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 16:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 09:00 - 13:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 15:00 - 20:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 20:30 - 21:15 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 25.11 - 1.12         &lt;br /&gt;
&lt;br /&gt;
26.11.2013, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
01.12.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 18.11 - 24.11                          &lt;br /&gt;
&lt;br /&gt;
18.11.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.11.2013, 18:00 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
19.11.2013, 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 11:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 19:00 - 22:00 Chip&lt;br /&gt;
&lt;br /&gt;
22.11.2013, 09:00 - 12:00 Martin Červenka + Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
23.11.2013, 15:00 - 18:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 11:00 - 13:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 13:00 - 18:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 11.11 - 17.11&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 16:30 - 18:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
14.11.2013, 09:30 - 13:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
15.11.2013, 19:00 - 22:00 Miroslav Šos&lt;br /&gt;
&lt;br /&gt;
16.11.2013, 13:00 - 16:00 Miroslav Šos&lt;br /&gt;
 &lt;br /&gt;
16.11.2013, 18:00 - 21:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 4.11 - 10.11&lt;br /&gt;
&lt;br /&gt;
4.11.2013, 18:00 - 22:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 07:00 - 10:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 20:00 - 23:00 Pavol Vittek montovanie kamery&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 15:30 - 18:30 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 11:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 15:00 - 21:00 Karel Vojkovský&lt;br /&gt;
&lt;br /&gt;
 týden 28.10 - 3.11&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 10.00 - 15.00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 15:00 - 19:00 Martin Červenka RUŠÍM (onemocnělá modelka)&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 20:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 9:00 - 13:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 21.10 - 27.10&lt;br /&gt;
&lt;br /&gt;
21.10.2013, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10.2013, 18:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 08:00 - 11:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 13:00 - 16:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 17:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 11:30 - 14:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 14.10 - 20.10&lt;br /&gt;
&lt;br /&gt;
14.10.2013, 19:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.10.2013, 17:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 12:00 - 13:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 13:00 - 18:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.10.2013, 15:30 - 17:30 Matus Kopeniech&lt;br /&gt;
&lt;br /&gt;
19.10.2013, 15:00 - 20:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
 týden 7.10 - 13.10&lt;br /&gt;
&lt;br /&gt;
7.10.2013, 14:30 - 15:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.10.2013, 13:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.10.2013, 14:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 30.9 - 6.10&lt;br /&gt;
&lt;br /&gt;
1.10.2013, 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 13:00 - 17:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 17:00 - 19:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 23.9 - 29.9&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 17:15 - 21:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 14:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
27.9.2013, 12:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.9.2013, 10:00 - 15:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 16.9 - 22.9&lt;br /&gt;
&lt;br /&gt;
20. 9. 2013, 14:00 - 17:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
19. 9. 2013, 15:00 - 20:00 Peter Antolík&lt;br /&gt;
&lt;br /&gt;
18. 9. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.9 - 15.9&lt;br /&gt;
&lt;br /&gt;
13.9.2013, 10:00 - 11:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
9.9.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
6.9.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.9 - 8.9&lt;br /&gt;
&lt;br /&gt;
5. 9. 2013, 13:00 - 18:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 26.8 - 1.9&lt;br /&gt;
29.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.8 - 25.8&lt;br /&gt;
22.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
21.8.2013, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
20.8.2013, 18:30 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
 týden 12.8 - 18.8&lt;br /&gt;
17.8.2013, 15:00 - 17:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
12.8. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 5.8 - 11.8&lt;br /&gt;
6.8.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
10.8.2013, 15:00 - 20:00 Marek Votroubek&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/KLUB:kalendare</id>
		<title>KLUB:kalendare</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/KLUB:kalendare"/>
				<updated>2014-09-11T13:20:05Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* SH events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{neaktualni}}&lt;br /&gt;
&lt;br /&gt;
= SH kalendare =&lt;br /&gt;
&lt;br /&gt;
=== SH events === &lt;br /&gt;
Udalosti zajimave pro kazdeho clena&lt;br /&gt;
&lt;br /&gt;
https://zimbra.sh.cvut.cz/service/user/admin@zimbra.sh.cvut.cz/SH%20events.html&lt;br /&gt;
&lt;br /&gt;
[[Soubor:appstore.png]] [https://itunes.apple.com/cz/app/silicon-hill/id914062054?mt=8&amp;amp;uo=4 Silicon Hill aplikace pro iOS - kontakty, události, MHD]&lt;br /&gt;
&lt;br /&gt;
=== rezervace na [[KLUB:Sluzby:Grilovací centrum|Grilovací centrum]] === &lt;br /&gt;
&lt;br /&gt;
[https://mbox.sh.cvut.cz/home/silicongrill@mbox.sh.cvut.cz/SiliconGrill.html https://mbox.sh.cvut.cz/home/silicongrill@mbox.sh.cvut.cz/SiliconGrill.html]&lt;br /&gt;
&lt;br /&gt;
=== SH vedeni === &lt;br /&gt;
Schuze, schuzky, zasedani vedeni klubu a vetsi schuzky jednotlivych sekci&lt;br /&gt;
&lt;br /&gt;
https://zimbra.sh.cvut.cz/service/user/admin@zimbra.sh.cvut.cz/vedeni.html&lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
&lt;br /&gt;
=== Co je to ta zimbra? ===&lt;br /&gt;
&lt;br /&gt;
wiki stranka - under construction: [[Zimbra|Zimbra]]&lt;br /&gt;
&lt;br /&gt;
=== Jak vytvorit event v klubovne? ===&lt;br /&gt;
&lt;br /&gt;
[[Soubor:Zimbra-kalendar.jpg]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/VEDENI:Servis:TelefonySH</id>
		<title>VEDENI:Servis:TelefonySH</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/VEDENI:Servis:TelefonySH"/>
				<updated>2014-09-11T13:19:25Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Aktuální seznam přidělených klubových telefonů */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Aktuální seznam přidělených klubových telefonů =&lt;br /&gt;
&lt;br /&gt;
[[Soubor:Google_Play.png|150px]] [https://play.google.com/store/apps/details?id=cz.brozikcz.sh Silicon Hill aplikace pro Android - synchronizace kontaktů a událostí]&lt;br /&gt;
&lt;br /&gt;
[[Soubor:appstore.png]] [https://itunes.apple.com/cz/app/silicon-hill/id914062054?mt=8&amp;amp;uo=4 Silicon Hill aplikace pro iOS - kontakty, události, MHD]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PhonesSH&amp;gt;&amp;lt;/PhonesSH&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Pravidla předání a vrácení telefonu =&lt;br /&gt;
== Předání telefonu (SIM karty) ==&lt;br /&gt;
* 1. Poslat na kancelar@siliconhill.cz osobní údaje (Jméno Příjmení, datum narození, adresa trvalého bydliště). Pozn.: pouze při přebírání.&lt;br /&gt;
* 2. Počkat na schválení předsedou klubu a podepsat předávací protokol. Pozn.: Pouze při přebírání.&lt;br /&gt;
* 3. Zajít do Kanceláře klubu a podepsat připravený formulář a převzít/vrátit telefon (SIM kartu).&lt;br /&gt;
&lt;br /&gt;
== Vrácení telefonu (SIM karty) ==&lt;br /&gt;
to do&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Soubor:Appstore.png</id>
		<title>Soubor:Appstore.png</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Soubor:Appstore.png"/>
				<updated>2014-09-11T13:17:36Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: Apple App Store&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apple App Store&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier</id>
		<title>Diskuse:Fotoatelier</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier"/>
				<updated>2014-08-30T16:50:54Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;OZNAM:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Vo fotoateliéri je znovu namontovaná kamera.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Zaberá len priestor dverí. Kamera nenahráva zvuk a ani sa s ňou nedá otáčať na dialku.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Podpisom provozného řádu ste súhlasili s jej prítomnosťou.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Už máme nové blesky 2x Fomei Digitalis Pro 600 RF (návod: http://eshop.fomei.com/Files/N%C3%A1vod_Digitalis_PRO_CZ.pdf)&lt;br /&gt;
 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Datum, čas od - do, jméno příjmení&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 22.9. - 28.9.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 15.9. - 21.9.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 8.9. - 14.9.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 1.9. - 7.9.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Dodržujte prosím provozní řád fotoateliéru. Za nedodržanie dostanete BAN.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Jedná sa napr. o zametanie, úklid, vynesenie odpadkov, zapísanie sa na vrátnici - aj fotografované osoby ako návštevu atd...&lt;br /&gt;
 Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 25.8. - 31.8.&lt;br /&gt;
&lt;br /&gt;
26.8.2014 19:00 - 20:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
27.8.2014 20:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
30.8.2014 18:00 - 19:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 18.8. - 24.8.&lt;br /&gt;
&lt;br /&gt;
19.8.2014 20:30 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
21.8.2014 18:00 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 11.8. - 17.8.&lt;br /&gt;
&lt;br /&gt;
11.8.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
13.8.2014 09:15 - 10:15 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
13.8.2014 17:25 - 17:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 4.8. - 10.8.&lt;br /&gt;
&lt;br /&gt;
4.8.2014 18:00 - 20:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
5.8.2014 19:00 - 22:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
6.8.2014 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
7.8.2014 08:20 - 12:00 Jan Cermak&lt;br /&gt;
&lt;br /&gt;
9.8.2014 14:00 - 15:00 Klara Skodova&lt;br /&gt;
&lt;br /&gt;
9.8.2014 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.8.2014 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 28.7. - 3.8.&lt;br /&gt;
&lt;br /&gt;
30.7.2014 8:00 - 11:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
30.7.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
1.8.2014 9:00 - 14:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 21.7. - 27.7.&lt;br /&gt;
&lt;br /&gt;
26.7.2014 13:00 - 18:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 14.7. - 20.7.&lt;br /&gt;
&lt;br /&gt;
16.7.2014 13:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.7.2014 16:00 - 19:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
17.7.2014 12:30 - 17:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 7.7. - 13.7.&lt;br /&gt;
&lt;br /&gt;
 týden 30.6. - 6.7.&lt;br /&gt;
30.6. 2014 14:00 - 18:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.6. + 1.7. Michal Býna - půjčím si jen malou odrazku, ateliér bude volný&lt;br /&gt;
&lt;br /&gt;
 týden 23.6. - 29.6.&lt;br /&gt;
26.6.2014 15:30 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 16.6. - 22.6.&lt;br /&gt;
&lt;br /&gt;
16.6.2014 19:00 - 20:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
17.6.2014 9:00 - 12:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
17.6.2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.6.2014 17:00 - 21:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
20.6.2014 9:30 - 10:30 + 13:30 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
21.6.2014 16:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.6. - 15.6.&lt;br /&gt;
&lt;br /&gt;
9.6.2014 11:00 - 13:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
12.6.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.6. - 8.6.&lt;br /&gt;
&lt;br /&gt;
4.6.2014 18:25 - 19:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 26.5 - 1.6.&lt;br /&gt;
&lt;br /&gt;
27.5.2014 20:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
28.5.2014 17:00 - 19:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
29.5.2014 10:15 - 12:30 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
29.5.2014 16:00 - 19:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.5.2014 10:00 - 11:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
31.5.2014 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
31.5.2014 22:00 - 24:05 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.5 - 25.5.&lt;br /&gt;
&lt;br /&gt;
22. 5. 2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 12.5 - 18.5&lt;br /&gt;
&lt;br /&gt;
12.5.2014 11:15 - 13:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
14.5.2014 14:00 - 17:00 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
15.5.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
16.5.2014 20:00 - 23:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 5.5 - 11.5&lt;br /&gt;
&lt;br /&gt;
5.5.2014, 21:15 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
6.5.2014, 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
7.5.2014, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
10.5.2014, 9:00 - 12:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 28.4 - 4.5&lt;br /&gt;
28.4.2014, 17:30 - 21:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
29.4.2014, 19:00 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 9:00 - 15:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 18:00 - 20:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
 týden 21.4 - 27.4&lt;br /&gt;
22.4.2014, 13:00 - 17:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
23.4.2014, 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
27.4.2014, 13:00 - 20:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 14.4 - 20.4&lt;br /&gt;
14.4.2014 - 19:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
17.4.2014 - 18:30 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 14:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 9:00 - 12:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 12:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 7.4 - 13.4&lt;br /&gt;
&lt;br /&gt;
7.4.2014 - 13:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
7.4.2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
8.4.2014, 08:30-11:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
9.4.2014, 17:30-22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 17:00 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 22:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
11.4.2014, 9:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 31.3 - 6.4&lt;br /&gt;
&lt;br /&gt;
31. 3. 2014, 18:00 - 21:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
1.4. 2014, 17:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 11:30 - 15:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 17:15 -  21:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 8:00 - 12:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 13:00 - 17:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 18:30 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 24.3 - 30.3&lt;br /&gt;
&lt;br /&gt;
24. 3. 2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
26. 3. 2014, 20:00 - 21:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
27. 3. 2014, 18:30 - 23:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
28. 3. 2014, 18:00 - 20:30 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
 týden 17.3 - 23.3&lt;br /&gt;
&lt;br /&gt;
22. 3. 2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 10.3 - 16.3&lt;br /&gt;
&lt;br /&gt;
12.3.2014, 9:45 - 13:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
13.3.2014, 15:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
15.3.2014, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
16.3.2014, 16:00 - 18:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 3.3 - 9.3&lt;br /&gt;
4.3.2014, 17:00 - 20:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 16:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 18:00 - 22:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
6.3.2014, 10:00 - 12:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.3.2014, 13:00 - 18:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
8.3.2014, 9:00 - 13:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 24.2 - 2.3&lt;br /&gt;
&lt;br /&gt;
26.2.2014, 18:00 - 21:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
27.2.2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
28.2.2014, 17:00 - 21:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
1.3.2014, 14:00 - 19:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
 týden 17.2 - 23.2&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 10:00-15:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 18:30-20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
20. 2. 2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21. 2. 2014, 15:00 - 18:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
22. 2. 2014, 09:00 - Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 10.2 - 16.2&lt;br /&gt;
&lt;br /&gt;
11. 2. 2014, 18:00- 22:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 9:30 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 18:00 - 22:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 09:00 - 12:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 13:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
14.2.2014, 17:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
15. 2.2014, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.2.2014, 11:00 - 14:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 3.2 - 9.2.&lt;br /&gt;
&lt;br /&gt;
3.2.2014, 13:00 - 17:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
4.2.2014, 16:00 - 20:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.2.2014, 15:00 - 18:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.2.2014, 18:00 - 23:00, Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 27.1 - 2.2&lt;br /&gt;
1.2.2014, 9:30 - 11:45 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
2.2.2014, 12:00 - 17:00 Pavel Krásenský&lt;br /&gt;
&lt;br /&gt;
 týden 20.1 - 26.1&lt;br /&gt;
21.1.2014, 16:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
22.1.2014, 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 12:00 - 16:45 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 17:00 - 20:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
24.1.2014, 13:45 - 18:45 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
25.1.2014, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 13.1 - 19.1&lt;br /&gt;
&lt;br /&gt;
16.1.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.1.2014, 15:00 - 19:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 6.1 - 12.1&lt;br /&gt;
&lt;br /&gt;
7.1.2014, 18:00 - 21:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.1.2014, 21:30 - 23:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 19:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
11.1.2014, 17:00 - 20:00 Matus Koperniech - zrusene, choroba&lt;br /&gt;
&lt;br /&gt;
 týden 30.12 - 5.1&lt;br /&gt;
&lt;br /&gt;
5.1.2014, 15:00 - 18:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 23.12 - 29.12&lt;br /&gt;
&lt;br /&gt;
 týden 16.12 - 22.12&lt;br /&gt;
16.12.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.12.2013, 15:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.12 - 15.12&lt;br /&gt;
10.12.2013, 16:00 - 18:30 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 15:30 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
12.12.2013, 19:00 - 22:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
14.12.2013, 11:00 - 14:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
15.12.2013, 15:00 - 17:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 2.12 - 8.12&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 11:00 - 14:20 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 14:30 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 18:30 - 20:30 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 18:00 - 21:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 08:30 - 12:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 16:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 09:00 - 13:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 15:00 - 20:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 20:30 - 21:15 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 25.11 - 1.12         &lt;br /&gt;
&lt;br /&gt;
26.11.2013, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
01.12.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 18.11 - 24.11                          &lt;br /&gt;
&lt;br /&gt;
18.11.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.11.2013, 18:00 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
19.11.2013, 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 11:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 19:00 - 22:00 Chip&lt;br /&gt;
&lt;br /&gt;
22.11.2013, 09:00 - 12:00 Martin Červenka + Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
23.11.2013, 15:00 - 18:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 11:00 - 13:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 13:00 - 18:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 11.11 - 17.11&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 16:30 - 18:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
14.11.2013, 09:30 - 13:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
15.11.2013, 19:00 - 22:00 Miroslav Šos&lt;br /&gt;
&lt;br /&gt;
16.11.2013, 13:00 - 16:00 Miroslav Šos&lt;br /&gt;
 &lt;br /&gt;
16.11.2013, 18:00 - 21:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 4.11 - 10.11&lt;br /&gt;
&lt;br /&gt;
4.11.2013, 18:00 - 22:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 07:00 - 10:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 20:00 - 23:00 Pavol Vittek montovanie kamery&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 15:30 - 18:30 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 11:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 15:00 - 21:00 Karel Vojkovský&lt;br /&gt;
&lt;br /&gt;
 týden 28.10 - 3.11&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 10.00 - 15.00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 15:00 - 19:00 Martin Červenka RUŠÍM (onemocnělá modelka)&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 20:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 9:00 - 13:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 21.10 - 27.10&lt;br /&gt;
&lt;br /&gt;
21.10.2013, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10.2013, 18:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 08:00 - 11:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 13:00 - 16:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 17:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 11:30 - 14:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 14.10 - 20.10&lt;br /&gt;
&lt;br /&gt;
14.10.2013, 19:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.10.2013, 17:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 12:00 - 13:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 13:00 - 18:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.10.2013, 15:30 - 17:30 Matus Kopeniech&lt;br /&gt;
&lt;br /&gt;
19.10.2013, 15:00 - 20:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
 týden 7.10 - 13.10&lt;br /&gt;
&lt;br /&gt;
7.10.2013, 14:30 - 15:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.10.2013, 13:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.10.2013, 14:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 30.9 - 6.10&lt;br /&gt;
&lt;br /&gt;
1.10.2013, 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 13:00 - 17:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 17:00 - 19:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 23.9 - 29.9&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 17:15 - 21:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 14:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
27.9.2013, 12:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.9.2013, 10:00 - 15:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 16.9 - 22.9&lt;br /&gt;
&lt;br /&gt;
20. 9. 2013, 14:00 - 17:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
19. 9. 2013, 15:00 - 20:00 Peter Antolík&lt;br /&gt;
&lt;br /&gt;
18. 9. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.9 - 15.9&lt;br /&gt;
&lt;br /&gt;
13.9.2013, 10:00 - 11:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
9.9.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
6.9.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.9 - 8.9&lt;br /&gt;
&lt;br /&gt;
5. 9. 2013, 13:00 - 18:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 26.8 - 1.9&lt;br /&gt;
29.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.8 - 25.8&lt;br /&gt;
22.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
21.8.2013, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
20.8.2013, 18:30 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
 týden 12.8 - 18.8&lt;br /&gt;
17.8.2013, 15:00 - 17:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
12.8. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 5.8 - 11.8&lt;br /&gt;
6.8.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
10.8.2013, 15:00 - 20:00 Marek Votroubek&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Ca</id>
		<title>Ca</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Ca"/>
				<updated>2014-08-28T06:55:42Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* SU - SH (TCS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CA - Certifikační autorita TERENA Certificate service - TCS (COMODO) ==&lt;br /&gt;
=== Aktuality ===&lt;br /&gt;
22. dubna 2013 doplněn návod dle aktuálních informací&lt;br /&gt;
&lt;br /&gt;
20. ledna 2012 přidán návod na generování osobních certifikátů bez ověření totožnosti uživatele (plánujeme osobní certifikáty s ověřením totožnosti)&lt;br /&gt;
&lt;br /&gt;
17. června 2011 byla obnovena možnost žádat o vydávání certifikátů. Vydávání certifikátů však může trvat delší dobu, než obvyklou.&lt;br /&gt;
&lt;br /&gt;
15. března 2011 došlo k úspěnému útoku na jednu z RA pracujících pro COMODO. Na základě této události se pozastavuje vydávání TCS certifikátů do odvolání. Podrobnosti viz: http://www.comodo.com/Comodo-Fraud-Incident-2011-03-23.html&lt;br /&gt;
&lt;br /&gt;
=== Důležité informace ===&lt;br /&gt;
* Certifikáty mohou generovat níže popsaným způsobem pouze součásti Studentské unie ČVUT (přesněji pouze správci jednotlivých serverů a služeb).&lt;br /&gt;
* Certifikáty COMODO generujte pro služby, které využívá '''minimálně 10 uživatelů''' a u služeb, které '''jsou v provozu'''.&lt;br /&gt;
* '''Není možné generovat jeden certifikát pro více rozdílných domén 2 řádu''' (tzn. není možné vygenerovat jeden certifikát sh.cvut.cz a siliconhill.cz, v takovém případě je nutné vygenerovat certifikáty dva).&lt;br /&gt;
* Žádost pro následný certifikát generujte '''nejdříve 14 dnů''' před dobou expirace platnosti stávajícího certifikátu.&lt;br /&gt;
* V případě dotazů či nesrovnalostí prosím kontaktujte [[Landa_Karel|Karla Landu (Charlie)]].&lt;br /&gt;
&lt;br /&gt;
=== Domény *.cvut.cz ===&lt;br /&gt;
&lt;br /&gt;
# Vyplnit žádost, která se nachází na  [https://tcs.cesnet.cz/req/ https://tcs.cesnet.cz/req/]&lt;br /&gt;
# Pokud nemáte opodstatněný důvod, aby byla v certifikátu uvedena organizace (vyšší míra zabezpečení - '''doba vystavení takového certifikátu je 14 dní a více'''), vybírejte &amp;quot;běžný&amp;quot;, bez uvedení organizace. &lt;br /&gt;
# Organizaci vybírejte ČVUT (O=Czech Technical University in Prague), může se stát, že systém neakceptuje vložení žádosti ze souboru. Zvolte pak první možnost - &amp;quot;ze schránky&amp;quot;&lt;br /&gt;
# Na váš e-mail vám přijde potvrzovací e-mail, '''který mi přepošlete na mou e-mailovou adresu:''' [mailto:charlie@sh.cvut.cz charlie@sh.cvut.cz] (prosím bez jakýchkoli změn v textu).&lt;br /&gt;
# Pro snadnější generegování certifikátů je možné použít [http://tools.cesnet-ca.cz/tcs-mkserverreq.phtml http://tools.cesnet-ca.cz/tcs-mkserverreq.phtml]&lt;br /&gt;
# Podrobnávod pro generování certifikátů naleznete na: [http://www.cesnet.cz/pki/cs/st-tcs-csr.html http://www.cesnet.cz/pki/cs/st-tcs-csr.html]&lt;br /&gt;
# Potom již stačí chvíli počkat, než se vše vyřídí. Obvykle je vše vyřízeno nejpozději do 3 pracovních dnů.&lt;br /&gt;
# Certifkát je možné stáhnout z internetových stránek: https://tcs.cesnet.cz/crt/?id=ID Místo '''ID''' doplňte číslo žádosti, které naleznete v potvrzovací žádosti.&lt;br /&gt;
# Po schválení a stáhnutí certifikátu doplňte na této internetové stránce datum vydání a datum platnosti vydaného certifikátu.&lt;br /&gt;
&lt;br /&gt;
=== Ostatní domény vlastněné SU ===&lt;br /&gt;
&lt;br /&gt;
# Vyplnit žádost, která se nachází na  [https://tcs.cesnet.cz/req/ https://tcs.cesnet.cz/req/]&lt;br /&gt;
# Pokud nemáte opodstatněný důvod, aby byla v certifikátu uvedena organizace (vyšší míra zabezpečení - '''doba vystavení takového certifikátu je 14 dní a více'''), vybírejte &amp;quot;běžný&amp;quot;, bez uvedení organizace.&lt;br /&gt;
# Organizaci vybírejte Studentská unie ČVUT, může se stát, že systém neakceptuje vložení žádosti ze souboru. Zvolte pak první možnost - &amp;quot;ze schránky&amp;quot;&lt;br /&gt;
# Na váš e-mail vám přijde potvrzovací e-mail, '''který mi přepošlete na mou e-mailovou adresu:''' [mailto:charlie@sh.cvut.cz charlie@sh.cvut.cz] (prosím bez jakýchkoli změn v textu).&lt;br /&gt;
# Pro snadnější generegování certifikátů je možné použít [http://tools.cesnet-ca.cz/tcs-mkserverreq.phtml http://tools.cesnet-ca.cz/tcs-mkserverreq.phtml]&lt;br /&gt;
# Podrobný návod pro generování certifikátů naleznete na: [http://www.cesnet.cz/pki/cs/st-tcs-csr.html http://www.cesnet.cz/pki/cs/st-tcs-csr.html]&lt;br /&gt;
# Potom již stačí chvíli počkat, než se vše vyřídí. Obvykle je vše vyřízeno nejpozději do 3 pracovních dnů.&lt;br /&gt;
# Certifkát je možné stáhnout z internetových stránek: https://tcs.cesnet.cz/crt/?id=ID Místo '''ID''' doplňte číslo žádosti, které naleznete v potvrzovací žádosti.&lt;br /&gt;
# Po schválení a stáhnutí certifikátu doplňte na této internetové stránce datum vydání a datum platnosti vydaného certifikátu.&lt;br /&gt;
&lt;br /&gt;
===  Běžný certifikát s uvedením organizace ===&lt;br /&gt;
Pokud vyberete vystavení certifikátu s uvedením organizace (viz bod 2 návodu), bude bude celý proces trvat delší dobu, jelikož u těchto certifikátů je požadováno ověření organizace. Toto ověření probíhá telefonním hovorem na kontaktní tel. číslo dané organizace. Používejte tedy tuto možnost pouze pokud k tomu je opravdu opodstatněný důvod. Před touto samotnou akcí je nutné kontaktovat pověřeného administrátora organizace tj. [[Landa_Karel|Karla Landu (Charlie)]], aby dohodl potřebné termíny.&lt;br /&gt;
&lt;br /&gt;
=== Instalace certifikátů ===&lt;br /&gt;
Návody jak certifikát nainstalovat naleznete na: http://pki.cesnet.cz/cs/st-tcs-server-install.html&lt;br /&gt;
&lt;br /&gt;
=== Osobní certifikáty ===&lt;br /&gt;
&lt;br /&gt;
# Vygenetování certifikátu - Na stránce http://www.comodo.com/home/email-security/free-email-certificate.php kliknete na &amp;quot;free download&amp;quot; a vyplníte potřebné údaje (doporučuji odškrtnout Comodo Newsletter, ať vám nechodí reklamy) a nechte vygenerovat certifikát (Key Size je doporučeno 2048 bit).&lt;br /&gt;
# Doručení e-mailu - Nejpozději do 24 hodin by vám měl na zadaný e-mail přijít e-mail s odkazem na certifikát. Na tento odkaz stačí kliknout. Je však nutné otevřít odkaz ve stjném prohlížeči, kde se generoval klíč.&lt;br /&gt;
# Export certifikátu z prohlížeče - Je nutné vygenerovaný klíč vyexportovat z prohlížeče kde byl certifikát vytvářen. U Internet Exploreru to je: Nástroje - možnosti internetu - Obsah - certifikáty - Osobní, tam budete mít osobní certifikát (nejspíše Usertrust). Klikněte na tento certifikát a dejte exportovat (nejlépe ve formátu cer). U prohlížeče Firefox je cesta k certifikátu: Nástroje - Možnosti - Rošířené - Šifrování - Certifikáty&lt;br /&gt;
# Import certifikátu do poštovního klienta Nastroje - nastavení účtu - vybrat poštovní účet položka zabezpečení - zobrazit certifikáty - importovat (a vybrat certifikát, který se v bodu 3 exportoval) potvrdit a z nabídky &amp;quot;vybrat...&amp;quot;  importovane certifikaty, OK, OK&lt;br /&gt;
&lt;br /&gt;
=== Seznam vydaných certifikatů ===&lt;br /&gt;
==== SU - SU (TCS) ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DNS&lt;br /&gt;
! platnost od&lt;br /&gt;
! platnost do&lt;br /&gt;
! revokace&lt;br /&gt;
! žadatel&lt;br /&gt;
|-&lt;br /&gt;
| mail.su.cvut.cz, lists.su.cvut.cz&lt;br /&gt;
| 5.5.2014&lt;br /&gt;
| 5.5.2017&lt;br /&gt;
|&lt;br /&gt;
| [[Michal Strnad]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SU - SH (TCS) ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DNS&lt;br /&gt;
! platnost od&lt;br /&gt;
! platnost do&lt;br /&gt;
! revokace&lt;br /&gt;
! žadatel&lt;br /&gt;
! číslo certifikátu&lt;br /&gt;
|-&lt;br /&gt;
| dc1.sh.cvut.cz&lt;br /&gt;
| 13.9.2012&lt;br /&gt;
| 14.9.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Michal Naiman]]&lt;br /&gt;
|-&lt;br /&gt;
| dc2.sh.cvut.cz&lt;br /&gt;
| 13.9.2012&lt;br /&gt;
| 14.9.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Michal Naiman]]&lt;br /&gt;
|-&lt;br /&gt;
| exchange.sh.cvut.cz, exchange2.sh.cvut.cz&lt;br /&gt;
| 11.4.2012&lt;br /&gt;
| 12.4.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Martin Cetkovský]]&lt;br /&gt;
|-&lt;br /&gt;
| msdnaa.sh.cvut.cz, chimera.sh.cvut.cz, pegas.sh.cvut.cz&lt;br /&gt;
| 13.9.2012&lt;br /&gt;
| 14.9.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Michal Naiman]]&lt;br /&gt;
|-&lt;br /&gt;
| virtual.sh.cvut.cz&lt;br /&gt;
| 13.9.2012&lt;br /&gt;
| 14.9.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Michal Naiman]]&lt;br /&gt;
|-&lt;br /&gt;
| shell.sh.cvut.cz&lt;br /&gt;
| 1.10.2012&lt;br /&gt;
| 1.10.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Václav Mach|Václav Mach]]&lt;br /&gt;
|-&lt;br /&gt;
| git.sh.cvut.cz&lt;br /&gt;
| 2.8.2012&lt;br /&gt;
| 3.8.2015&lt;br /&gt;
| &lt;br /&gt;
| [[Srna Tomáš]]&lt;br /&gt;
|-&lt;br /&gt;
| is.sh.cvut.cz&lt;br /&gt;
| 20.8.2012&lt;br /&gt;
| 21.8.2015&lt;br /&gt;
| 21.8.2012&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| is.sh.cvut.cz, static.is.sh.cvut.cz, api.is.sh.cvut.cz&lt;br /&gt;
| 21.8.2012&lt;br /&gt;
| 22.8.2015&lt;br /&gt;
| &lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| static.is.sh.cvut.cz&lt;br /&gt;
| 21.8.2012&lt;br /&gt;
| 22.8.2015&lt;br /&gt;
| 21.8.2012&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| svc.sh.cvut.cz&lt;br /&gt;
| 1.10.2012&lt;br /&gt;
| 1.10.2015&lt;br /&gt;
| &lt;br /&gt;
| [[Srna Tomáš]]&lt;br /&gt;
|-&lt;br /&gt;
| observium.sh.cvut.cz&lt;br /&gt;
| 27.5.2013&lt;br /&gt;
| 27.5.2016&lt;br /&gt;
|&lt;br /&gt;
| [[User:Gregy|Gregor Petr]]&lt;br /&gt;
|-&lt;br /&gt;
| piwik.sh.cvut.cz&lt;br /&gt;
| 17.7.2013&lt;br /&gt;
| 18.7.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| pm.sh.cvut.cz&lt;br /&gt;
| 17.7.2013&lt;br /&gt;
| 18.7.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| kancelar.sh.cvut.cz&lt;br /&gt;
| 17.7.2013&lt;br /&gt;
| 18.7.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| siliconhill.cz&lt;br /&gt;
| 2.8.2013&lt;br /&gt;
| 3.8.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| edu.sh.cvut.cz&lt;br /&gt;
| 23.8.2013&lt;br /&gt;
| 23.8.2016&lt;br /&gt;
|&lt;br /&gt;
| [[Srna Tomáš]]&lt;br /&gt;
|-&lt;br /&gt;
| asa.sh.cvut.cz, vpn.sh.cvut.cz&lt;br /&gt;
| 6.9.2013&lt;br /&gt;
| 6.9.2016&lt;br /&gt;
|&lt;br /&gt;
| [[Bohdal Viktor Bohuslav]]&lt;br /&gt;
|-&lt;br /&gt;
| jira.sh.cvut.cz&lt;br /&gt;
| 16.10.2013&lt;br /&gt;
| 16.10.2016&lt;br /&gt;
|&lt;br /&gt;
| [[Srna Tomáš]]&lt;br /&gt;
|-&lt;br /&gt;
| wlc.sh.cvut.cz&lt;br /&gt;
| 16.10.2013&lt;br /&gt;
| 16.10.2016&lt;br /&gt;
|&lt;br /&gt;
| [[Bohdal Viktor Bohuslav]]&lt;br /&gt;
|-&lt;br /&gt;
| mbox.sh.cvut.cz&lt;br /&gt;
| 16.10.2013&lt;br /&gt;
| 16.10.2016&lt;br /&gt;
|&lt;br /&gt;
| [[Václav Mach|Václav Mach]]&lt;br /&gt;
|-&lt;br /&gt;
| election.sh.cvut.cz&lt;br /&gt;
| 10.12.2013&lt;br /&gt;
| 10.12.2016&lt;br /&gt;
|&lt;br /&gt;
| [[Němec Petr]]&lt;br /&gt;
|-&lt;br /&gt;
| backup.sh.cvut.cz&lt;br /&gt;
| 17.12.2013&lt;br /&gt;
| 17.12.2016&lt;br /&gt;
|&lt;br /&gt;
| [[Stadler Jan]]&lt;br /&gt;
|-&lt;br /&gt;
| backup2.sh.cvut.cz&lt;br /&gt;
| 17.12.2013&lt;br /&gt;
| 17.12.2016&lt;br /&gt;
|&lt;br /&gt;
| [[Stadler Jan]]&lt;br /&gt;
|-&lt;br /&gt;
| fitko.siliconhill.cz&lt;br /&gt;
| 10.3.2014&lt;br /&gt;
| 10.3.2016&lt;br /&gt;
|&lt;br /&gt;
| [[Srna Tomáš]]&lt;br /&gt;
|-&lt;br /&gt;
| lists.sh.cvut.cz, chat.sh.cvut.cz, lists.su.cvut.cz, lists.isc.cvut.cz&lt;br /&gt;
| 18.7.2014&lt;br /&gt;
| 18.7.2017&lt;br /&gt;
| &lt;br /&gt;
| [[Římek Jakub]]&lt;br /&gt;
| [https://tcs.cesnet.cz/crt/?id=1405355526 1405355526]&lt;br /&gt;
|-&lt;br /&gt;
| storage.sh.cvut.cz&lt;br /&gt;
| 21.7.2014&lt;br /&gt;
| 21.7.2015&lt;br /&gt;
| &lt;br /&gt;
| [[Jakub Brož]]&lt;br /&gt;
| [https://tcs.cesnet.cz/crt/?id=1405932685 1405932685]&lt;br /&gt;
|-&lt;br /&gt;
| api-cache.sh.cvut.cz&lt;br /&gt;
| 31.7.2014&lt;br /&gt;
| 31.7.2016&lt;br /&gt;
| &lt;br /&gt;
| [[Srna Tomáš]]&lt;br /&gt;
| [https://tcs.cesnet.cz/crt/?id=1406716209 1406716209]&lt;br /&gt;
|-&lt;br /&gt;
| ldap.sh.cvut.cz&lt;br /&gt;
| 27.8.2014&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Kincl Vladimír]]&lt;br /&gt;
| [https://tcs.cesnet.cz/crt/?id=1407419842 1407419842]&lt;br /&gt;
|-&lt;br /&gt;
| skripta.sh.cvut.cz&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| [[Brož Jakub]]&lt;br /&gt;
| [https://tcs.cesnet.cz/crt/?id=1409141487 1409141487]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SU - POD (TCS) ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DNS&lt;br /&gt;
! platnost od&lt;br /&gt;
! platnost do&lt;br /&gt;
! revokace&lt;br /&gt;
! žadatel&lt;br /&gt;
|-&lt;br /&gt;
| imap.pod.cvut.cz&lt;br /&gt;
| 9.10.2012&lt;br /&gt;
| 10.10.2015&lt;br /&gt;
|&lt;br /&gt;
| Kobezda Jan&lt;br /&gt;
|-&lt;br /&gt;
|www.pod.cvut.cz&lt;br /&gt;
| 5.3.2014&lt;br /&gt;
| 5.3.2017&lt;br /&gt;
|&lt;br /&gt;
| Kobezda Jan&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SU - BUK (TCS) ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DNS&lt;br /&gt;
! platnost od&lt;br /&gt;
! platnost do&lt;br /&gt;
! revokace&lt;br /&gt;
! žadatel&lt;br /&gt;
! číslo certifikátu&lt;br /&gt;
|-&lt;br /&gt;
| radius.buk.cvut.cz&lt;br /&gt;
| 25. 06. 2012&lt;br /&gt;
| 25. 06. 2015&lt;br /&gt;
| &lt;br /&gt;
| Marek Šabo&lt;br /&gt;
|-&lt;br /&gt;
| unicorn.buk.cvut.cz, u.buk.cvut.cz&lt;br /&gt;
| 03. 10. 2011&lt;br /&gt;
| 03. 10. 2014&lt;br /&gt;
| &lt;br /&gt;
| Marek Šabo&lt;br /&gt;
|-&lt;br /&gt;
| mail.buk.cvut.cz, imap.buk.cvut.cz, smtp.buk.cvut.cz, lists.buk.cvut.cz&lt;br /&gt;
| 25. 01. 2013&lt;br /&gt;
| 25. 01. 2016&lt;br /&gt;
| &lt;br /&gt;
| Marek Šabo&lt;br /&gt;
|-&lt;br /&gt;
| web.buk.cvut.cz, webmail.buk.cvut.cz, volby.buk.cvut.cz, bax.buk.cvut.cz, zd.buk.cvut.cz, wiki.buk.cvut.cz&lt;br /&gt;
| 28. 01. 2013&lt;br /&gt;
| 28. 01. 2016&lt;br /&gt;
| &lt;br /&gt;
| Petr Marek&lt;br /&gt;
|-&lt;br /&gt;
| kristin.buk.cvut.cz, is.buk.cvut.cz&lt;br /&gt;
| 28. 07. 2014&lt;br /&gt;
| 28. 07. 2017&lt;br /&gt;
| &lt;br /&gt;
| Tomáš Kukrál&lt;br /&gt;
| [https://tcs.cesnet.cz/crt/?id=1406488606 1406488606]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SU - MK (TCS) ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DNS&lt;br /&gt;
! platnost od&lt;br /&gt;
! platnost do&lt;br /&gt;
! revokace&lt;br /&gt;
! žadatel&lt;br /&gt;
|-&lt;br /&gt;
| admin.mk.cvut.cz, webmail.mk.cvut.cz&lt;br /&gt;
| 18.4.2012&lt;br /&gt;
| 19.4.2015&lt;br /&gt;
| &lt;br /&gt;
| Strnad Michal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SU - SIN (TCS) ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DNS&lt;br /&gt;
! platnost od&lt;br /&gt;
! platnost do&lt;br /&gt;
! revokace&lt;br /&gt;
! žadatel&lt;br /&gt;
|-&lt;br /&gt;
| sin.cvut.cz, www.sin.cvut.cz, wiki.sin.cvut.cz, lust.sin.cvut.cz, imap.sin.cvut.cz, jabber.sin.cvut.cz, sinis.sin.cvut.cz&lt;br /&gt;
| 6.11.2012&lt;br /&gt;
| 7.11.2014&lt;br /&gt;
| &lt;br /&gt;
| Halenka Michal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekty]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier</id>
		<title>Diskuse:Fotoatelier</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier"/>
				<updated>2014-08-04T10:01:42Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;OZNAM:&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Vo fotoateliéri je znovu namontovaná kamera.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Zaberá len priestor dverí. Kamera nenahráva zvuk a ani sa s ňou nedá otáčať na dialku.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Podpisom provozného řádu ste súhlasili s jej prítomnosťou.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Už máme nové blesky 2x Fomei Digitalis Pro 600 RF (návod: http://eshop.fomei.com/Files/N%C3%A1vod_Digitalis_PRO_CZ.pdf)&lt;br /&gt;
 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Datum, čas od - do, jméno příjmení&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 11.8. - 17.8.&lt;br /&gt;
&lt;br /&gt;
11.8.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 4.8. - 10.8.&lt;br /&gt;
&lt;br /&gt;
4.8.2014 18:00 - 20:00 Tomas Srna&lt;br /&gt;
&lt;br /&gt;
5.8.2014 18:00 - 21:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
6.8.2014 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Dodržujte prosím provozní řád fotoateliéru. Za nedodržanie dostanete BAN.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Jedná sa napr. o zametanie, úklid, vynesenie odpadkov, zapísanie sa na vrátnici - aj fotografované osoby ako návštevu atd...&lt;br /&gt;
 Vittek&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 28.7. - 3.8.&lt;br /&gt;
&lt;br /&gt;
30.7.2014 8:00 - 11:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
30.7.2014 15:00 - 20:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
1.8.2014 9:00 - 14:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 21.7. - 27.7.&lt;br /&gt;
&lt;br /&gt;
26.7.2014 13:00 - 18:00 Kuba Spatny&lt;br /&gt;
&lt;br /&gt;
 týden 14.7. - 20.7.&lt;br /&gt;
&lt;br /&gt;
16.7.2014 13:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.7.2014 16:00 - 19:00 Tomáš Švach&lt;br /&gt;
&lt;br /&gt;
17.7.2014 12:30 - 17:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 7.7. - 13.7.&lt;br /&gt;
&lt;br /&gt;
 týden 30.6. - 6.7.&lt;br /&gt;
30.6. 2014 14:00 - 18:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.6. + 1.7. Michal Býna - půjčím si jen malou odrazku, ateliér bude volný&lt;br /&gt;
&lt;br /&gt;
 týden 23.6. - 29.6.&lt;br /&gt;
26.6.2014 15:30 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
 týden 16.6. - 22.6.&lt;br /&gt;
&lt;br /&gt;
16.6.2014 19:00 - 20:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
17.6.2014 9:00 - 12:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
17.6.2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.6.2014 17:00 - 21:00 Kuba Špatný&lt;br /&gt;
&lt;br /&gt;
20.6.2014 9:30 - 10:30 + 13:30 - 16:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
21.6.2014 16:00 - 18:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.6. - 15.6.&lt;br /&gt;
&lt;br /&gt;
9.6.2014 11:00 - 13:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
12.6.2014 19:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.6. - 8.6.&lt;br /&gt;
&lt;br /&gt;
4.6.2014 18:25 - 19:45 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
 týden 26.5 - 1.6.&lt;br /&gt;
&lt;br /&gt;
27.5.2014 20:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
28.5.2014 17:00 - 19:00 Ivo Š.&lt;br /&gt;
&lt;br /&gt;
29.5.2014 10:15 - 12:30 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
29.5.2014 16:00 - 19:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
30.5.2014 10:00 - 11:00 Daněk Aleš&lt;br /&gt;
&lt;br /&gt;
31.5.2014 10:45 - 15:45 Michal Býna&lt;br /&gt;
&lt;br /&gt;
31.5.2014 22:00 - 24:05 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.5 - 25.5.&lt;br /&gt;
&lt;br /&gt;
22. 5. 2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 12.5 - 18.5&lt;br /&gt;
&lt;br /&gt;
12.5.2014 11:15 - 13:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
14.5.2014 14:00 - 17:00 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
15.5.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
16.5.2014 20:00 - 23:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 5.5 - 11.5&lt;br /&gt;
&lt;br /&gt;
5.5.2014, 21:15 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
6.5.2014, 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
7.5.2014, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
10.5.2014, 9:00 - 12:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 28.4 - 4.5&lt;br /&gt;
28.4.2014, 17:30 - 21:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
29.4.2014, 19:00 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 9:00 - 15:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 18:00 - 20:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
 týden 21.4 - 27.4&lt;br /&gt;
22.4.2014, 13:00 - 17:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
23.4.2014, 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
27.4.2014, 13:00 - 20:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 14.4 - 20.4&lt;br /&gt;
14.4.2014 - 19:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
17.4.2014 - 18:30 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 14:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 9:00 - 12:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 12:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 7.4 - 13.4&lt;br /&gt;
&lt;br /&gt;
7.4.2014 - 13:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
7.4.2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
8.4.2014, 08:30-11:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
9.4.2014, 17:30-22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 17:00 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 22:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
11.4.2014, 9:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 31.3 - 6.4&lt;br /&gt;
&lt;br /&gt;
31. 3. 2014, 18:00 - 21:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
1.4. 2014, 17:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 11:30 - 15:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 17:15 -  21:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 8:00 - 12:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 13:00 - 17:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 18:30 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 24.3 - 30.3&lt;br /&gt;
&lt;br /&gt;
24. 3. 2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
26. 3. 2014, 20:00 - 21:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
27. 3. 2014, 18:30 - 23:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
28. 3. 2014, 18:00 - 20:30 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
 týden 17.3 - 23.3&lt;br /&gt;
&lt;br /&gt;
22. 3. 2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 10.3 - 16.3&lt;br /&gt;
&lt;br /&gt;
12.3.2014, 9:45 - 13:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
13.3.2014, 15:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
15.3.2014, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
16.3.2014, 16:00 - 18:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 3.3 - 9.3&lt;br /&gt;
4.3.2014, 17:00 - 20:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 16:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 18:00 - 22:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
6.3.2014, 10:00 - 12:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.3.2014, 13:00 - 18:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
8.3.2014, 9:00 - 13:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 24.2 - 2.3&lt;br /&gt;
&lt;br /&gt;
26.2.2014, 18:00 - 21:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
27.2.2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
28.2.2014, 17:00 - 21:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
1.3.2014, 14:00 - 19:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
 týden 17.2 - 23.2&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 10:00-15:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 18:30-20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
20. 2. 2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21. 2. 2014, 15:00 - 18:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
22. 2. 2014, 09:00 - Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 10.2 - 16.2&lt;br /&gt;
&lt;br /&gt;
11. 2. 2014, 18:00- 22:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 9:30 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 18:00 - 22:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 09:00 - 12:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 13:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
14.2.2014, 17:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
15. 2.2014, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.2.2014, 11:00 - 14:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 3.2 - 9.2.&lt;br /&gt;
&lt;br /&gt;
3.2.2014, 13:00 - 17:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
4.2.2014, 16:00 - 20:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.2.2014, 15:00 - 18:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.2.2014, 18:00 - 23:00, Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 27.1 - 2.2&lt;br /&gt;
1.2.2014, 9:30 - 11:45 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
2.2.2014, 12:00 - 17:00 Pavel Krásenský&lt;br /&gt;
&lt;br /&gt;
 týden 20.1 - 26.1&lt;br /&gt;
21.1.2014, 16:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
22.1.2014, 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 12:00 - 16:45 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 17:00 - 20:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
24.1.2014, 13:45 - 18:45 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
25.1.2014, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 13.1 - 19.1&lt;br /&gt;
&lt;br /&gt;
16.1.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.1.2014, 15:00 - 19:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 6.1 - 12.1&lt;br /&gt;
&lt;br /&gt;
7.1.2014, 18:00 - 21:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.1.2014, 21:30 - 23:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 19:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
11.1.2014, 17:00 - 20:00 Matus Koperniech - zrusene, choroba&lt;br /&gt;
&lt;br /&gt;
 týden 30.12 - 5.1&lt;br /&gt;
&lt;br /&gt;
5.1.2014, 15:00 - 18:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 23.12 - 29.12&lt;br /&gt;
&lt;br /&gt;
 týden 16.12 - 22.12&lt;br /&gt;
16.12.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.12.2013, 15:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.12 - 15.12&lt;br /&gt;
10.12.2013, 16:00 - 18:30 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 15:30 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
12.12.2013, 19:00 - 22:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
14.12.2013, 11:00 - 14:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
15.12.2013, 15:00 - 17:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 2.12 - 8.12&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 11:00 - 14:20 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 14:30 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 18:30 - 20:30 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 18:00 - 21:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 08:30 - 12:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 16:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 09:00 - 13:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 15:00 - 20:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 20:30 - 21:15 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 25.11 - 1.12         &lt;br /&gt;
&lt;br /&gt;
26.11.2013, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
01.12.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 18.11 - 24.11                          &lt;br /&gt;
&lt;br /&gt;
18.11.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.11.2013, 18:00 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
19.11.2013, 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 11:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 19:00 - 22:00 Chip&lt;br /&gt;
&lt;br /&gt;
22.11.2013, 09:00 - 12:00 Martin Červenka + Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
23.11.2013, 15:00 - 18:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 11:00 - 13:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 13:00 - 18:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 11.11 - 17.11&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 16:30 - 18:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
14.11.2013, 09:30 - 13:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
15.11.2013, 19:00 - 22:00 Miroslav Šos&lt;br /&gt;
&lt;br /&gt;
16.11.2013, 13:00 - 16:00 Miroslav Šos&lt;br /&gt;
 &lt;br /&gt;
16.11.2013, 18:00 - 21:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 4.11 - 10.11&lt;br /&gt;
&lt;br /&gt;
4.11.2013, 18:00 - 22:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 07:00 - 10:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 20:00 - 23:00 Pavol Vittek montovanie kamery&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 15:30 - 18:30 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 11:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 15:00 - 21:00 Karel Vojkovský&lt;br /&gt;
&lt;br /&gt;
 týden 28.10 - 3.11&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 10.00 - 15.00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 15:00 - 19:00 Martin Červenka RUŠÍM (onemocnělá modelka)&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 20:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 9:00 - 13:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 21.10 - 27.10&lt;br /&gt;
&lt;br /&gt;
21.10.2013, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10.2013, 18:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 08:00 - 11:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 13:00 - 16:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 17:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 11:30 - 14:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 14.10 - 20.10&lt;br /&gt;
&lt;br /&gt;
14.10.2013, 19:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.10.2013, 17:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 12:00 - 13:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 13:00 - 18:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.10.2013, 15:30 - 17:30 Matus Kopeniech&lt;br /&gt;
&lt;br /&gt;
19.10.2013, 15:00 - 20:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
 týden 7.10 - 13.10&lt;br /&gt;
&lt;br /&gt;
7.10.2013, 14:30 - 15:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.10.2013, 13:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.10.2013, 14:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 30.9 - 6.10&lt;br /&gt;
&lt;br /&gt;
1.10.2013, 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 13:00 - 17:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 17:00 - 19:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 23.9 - 29.9&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 17:15 - 21:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 14:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
27.9.2013, 12:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.9.2013, 10:00 - 15:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 16.9 - 22.9&lt;br /&gt;
&lt;br /&gt;
20. 9. 2013, 14:00 - 17:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
19. 9. 2013, 15:00 - 20:00 Peter Antolík&lt;br /&gt;
&lt;br /&gt;
18. 9. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.9 - 15.9&lt;br /&gt;
&lt;br /&gt;
13.9.2013, 10:00 - 11:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
9.9.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
6.9.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.9 - 8.9&lt;br /&gt;
&lt;br /&gt;
5. 9. 2013, 13:00 - 18:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 26.8 - 1.9&lt;br /&gt;
29.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.8 - 25.8&lt;br /&gt;
22.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
21.8.2013, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
20.8.2013, 18:30 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
 týden 12.8 - 18.8&lt;br /&gt;
17.8.2013, 15:00 - 17:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
12.8. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 5.8 - 11.8&lt;br /&gt;
6.8.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
10.8.2013, 15:00 - 20:00 Marek Votroubek&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier</id>
		<title>Diskuse:Fotoatelier</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Diskuse:Fotoatelier"/>
				<updated>2014-05-15T17:53:48Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;OZNAM:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Vo fotoateliéri je znovu namontovaná kamera. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Zaberá len priestor dverí. Kamera nenahráva zvuk a ani sa s ňou nedá otáčať na dialku. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Podpisom provozného řádu ste súhlasili s jej prítomnosťou. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Už máme nové blesky 2x Fomei Digitalis Pro 600 RF (návod: http://eshop.fomei.com/Files/N%C3%A1vod_Digitalis_PRO_CZ.pdf)&lt;br /&gt;
&lt;br /&gt;
Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 AKCE:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Datum, čas od - do, jméno příjmení&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 26.5 - 1.6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 19.5 - 25.5&lt;br /&gt;
&lt;br /&gt;
22. 5. 2014 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 12.5 - 18.5&lt;br /&gt;
&lt;br /&gt;
12.5.2014 11:15 - 13:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
14.5.2014 14:00 - 17:00 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
15.5.2014 20:00 - 21:00 Tomáš Srna&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 týden 5.5 - 11.5&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Dodržujte prosím provozní řád fotoateliéru. Za nedodržanie dostanete BAN.&lt;br /&gt;
 &amp;lt;span style=&amp;quot;font-size:14px;font-weight:bold;color:#dd0000&amp;quot;&amp;gt;Jedná sa napr. o zametanie, úklid, vynesenie odpadkov, zapísanie sa na vrátnici - aj fotografované osoby ako návštevu atd...&lt;br /&gt;
 Vittek&lt;br /&gt;
&lt;br /&gt;
5.5.2014, 21:15 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
6.5.2014, 15:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
7.5.2014, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
10.5.2014, 9:00 - 12:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 28.4 - 4.5&lt;br /&gt;
28.4.2014, 17:30 - 21:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
29.4.2014, 19:00 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 9:00 - 15:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 15:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
1.5.2014, 18:00 - 20:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
 týden 21.4 - 27.4&lt;br /&gt;
22.4.2014, 13:00 - 17:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
23.4.2014, 18:00 - 22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
27.4.2014, 13:00 - 20:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 14.4 - 20.4&lt;br /&gt;
14.4.2014 - 19:00 - 21:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
17.4.2014 - 18:30 - 22:30 Petr Kaštánek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 14:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
18.4.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 9:00 - 12:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19.4.2014, 12:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 7.4 - 13.4&lt;br /&gt;
&lt;br /&gt;
7.4.2014 - 13:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
7.4.2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
8.4.2014, 08:30-11:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
9.4.2014, 17:30-22:00 Jaroslav Halgasik&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 17:00 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
10.4.2014, 22:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
11.4.2014, 9:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 31.3 - 6.4&lt;br /&gt;
&lt;br /&gt;
31. 3. 2014, 18:00 - 21:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
1.4. 2014, 17:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 11:30 - 15:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
2. 4. 2014, 17:15 -  21:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 8:00 - 12:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 13:00 - 17:00 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
4. 4. 2014, 18:30 - 22:00 Jonáš Mejtský&lt;br /&gt;
&lt;br /&gt;
 týden 24.3 - 30.3&lt;br /&gt;
&lt;br /&gt;
24. 3. 2014, 18:00 - 22:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
26. 3. 2014, 20:00 - 21:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
27. 3. 2014, 18:30 - 23:00 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
28. 3. 2014, 18:00 - 20:30 Karel Vojkovsky&lt;br /&gt;
&lt;br /&gt;
 týden 17.3 - 23.3&lt;br /&gt;
&lt;br /&gt;
22. 3. 2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 10.3 - 16.3&lt;br /&gt;
&lt;br /&gt;
12.3.2014, 9:45 - 13:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
13.3.2014, 15:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
15.3.2014, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
16.3.2014, 16:00 - 18:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 3.3 - 9.3&lt;br /&gt;
4.3.2014, 17:00 - 20:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 16:00 - 18:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
5.3.2014, 18:00 - 22:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
6.3.2014, 10:00 - 12:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.3.2014, 13:00 - 18:00 Lucie Vonášková&lt;br /&gt;
&lt;br /&gt;
8.3.2014, 9:00 - 13:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 24.2 - 2.3&lt;br /&gt;
&lt;br /&gt;
26.2.2014, 18:00 - 21:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
27.2.2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
28.2.2014, 17:00 - 21:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
1.3.2014, 14:00 - 19:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
 týden 17.2 - 23.2&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 10:00-15:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
19. 2. 2014, 18:30-20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
20. 2. 2014, 11:00 - 16:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21. 2. 2014, 15:00 - 18:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
22. 2. 2014, 09:00 - Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
 týden 10.2 - 16.2&lt;br /&gt;
&lt;br /&gt;
11. 2. 2014, 18:00- 22:00 Jan Čermák &lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 9:30 - 13:30 Michal Býna&lt;br /&gt;
&lt;br /&gt;
13. 2. 2014, 18:00 - 22:00 Aleš Daněk&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 09:00 - 12:30 Jan Čermák&lt;br /&gt;
&lt;br /&gt;
14. 2. 2014, 13:00 - 17:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
14.2.2014, 17:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
15. 2.2014, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.2.2014, 11:00 - 14:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 3.2 - 9.2.&lt;br /&gt;
&lt;br /&gt;
3.2.2014, 13:00 - 17:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
4.2.2014, 16:00 - 20:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.2.2014, 15:00 - 18:00, Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.2.2014, 18:00 - 23:00, Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 27.1 - 2.2&lt;br /&gt;
1.2.2014, 9:30 - 11:45 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
2.2.2014, 12:00 - 17:00 Pavel Krásenský&lt;br /&gt;
&lt;br /&gt;
 týden 20.1 - 26.1&lt;br /&gt;
21.1.2014, 16:00 - 19:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
22.1.2014, 19:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 12:00 - 16:45 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
23.1.2014, 17:00 - 20:00 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
24.1.2014, 13:45 - 18:45 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
25.1.2014, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 13.1 - 19.1&lt;br /&gt;
&lt;br /&gt;
16.1.2014, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
18.1.2014, 15:00 - 19:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 6.1 - 12.1&lt;br /&gt;
&lt;br /&gt;
7.1.2014, 18:00 - 21:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.1.2014, 21:30 - 23:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.1.2014, 19:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
11.1.2014, 17:00 - 20:00 Matus Koperniech - zrusene, choroba&lt;br /&gt;
&lt;br /&gt;
 týden 30.12 - 5.1&lt;br /&gt;
&lt;br /&gt;
5.1.2014, 15:00 - 18:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
 týden 23.12 - 29.12&lt;br /&gt;
&lt;br /&gt;
 týden 16.12 - 22.12&lt;br /&gt;
16.12.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
19.12.2013, 15:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.12 - 15.12&lt;br /&gt;
10.12.2013, 16:00 - 18:30 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 15:30 - 20:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
11.12.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
12.12.2013, 19:00 - 22:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
14.12.2013, 11:00 - 14:00 Pavel Vitvar&lt;br /&gt;
&lt;br /&gt;
15.12.2013, 15:00 - 17:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 2.12 - 8.12&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 11:00 - 14:20 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 14:30 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
3.12.2013, 18:30 - 20:30 Matus Koperniech&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 15:00 - 18:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
4.12.2013, 18:00 - 21:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 08:30 - 12:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
7.12.2013, 16:00 - 21:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 09:00 - 13:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 15:00 - 20:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
8.12.2013, 20:30 - 21:15 Pavol Vittek&lt;br /&gt;
 &lt;br /&gt;
 týden 25.11 - 1.12         &lt;br /&gt;
&lt;br /&gt;
26.11.2013, 13:00 - 18:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
01.12.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
 týden 18.11 - 24.11                          &lt;br /&gt;
&lt;br /&gt;
18.11.2013, 10:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.11.2013, 18:00 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
19.11.2013, 18:00 - 21:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 11:00 - 14:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
21.11.2013, 19:00 - 22:00 Chip&lt;br /&gt;
&lt;br /&gt;
22.11.2013, 09:00 - 12:00 Martin Červenka + Martin Borýsek&lt;br /&gt;
&lt;br /&gt;
23.11.2013, 15:00 - 18:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 11:00 - 13:00 Klára Škodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 13:00 - 18:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
24.11.2013, 18:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 11.11 - 17.11&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 16:30 - 18:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
13.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
14.11.2013, 09:30 - 13:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
15.11.2013, 19:00 - 22:00 Miroslav Šos&lt;br /&gt;
&lt;br /&gt;
16.11.2013, 13:00 - 16:00 Miroslav Šos&lt;br /&gt;
 &lt;br /&gt;
16.11.2013, 18:00 - 21:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 4.11 - 10.11&lt;br /&gt;
&lt;br /&gt;
4.11.2013, 18:00 - 22:00 Ondřej Hrstka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 07:00 - 10:30 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
6.11.2013, 20:00 - 23:00 Pavol Vittek montovanie kamery&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 15:30 - 18:30 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
7.11.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 11:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
10.11.2013, 15:00 - 21:00 Karel Vojkovský&lt;br /&gt;
&lt;br /&gt;
 týden 28.10 - 3.11&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 10.00 - 15.00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 15:00 - 19:00 Martin Červenka RUŠÍM (onemocnělá modelka)&lt;br /&gt;
&lt;br /&gt;
30.10.2013, 20:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 9:00 - 13:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
3.11.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 21.10 - 27.10&lt;br /&gt;
&lt;br /&gt;
21.10.2013, 17:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
22.10.2013, 18:00 - 23:00 Martin Hanes&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 08:00 - 11:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
23.10.2013, 19:00 - 22:00 Lukáš Březina&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 13:00 - 16:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
24.10.2013, 17:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 11:30 - 14:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
25.10.2013, 20:00 - 23:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 14.10 - 20.10&lt;br /&gt;
&lt;br /&gt;
14.10.2013, 19:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
16.10.2013, 17:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 12:00 - 13:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
17.10.2013, 13:00 - 18:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
18.10.2013, 15:30 - 17:30 Matus Kopeniech&lt;br /&gt;
&lt;br /&gt;
19.10.2013, 15:00 - 20:00 Marek Votroubek&lt;br /&gt;
&lt;br /&gt;
 týden 7.10 - 13.10&lt;br /&gt;
&lt;br /&gt;
7.10.2013, 14:30 - 15:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
9.10.2013, 13:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
12.10.2013, 14:00 - 19:00 Jan Dufek&lt;br /&gt;
&lt;br /&gt;
 týden 30.9 - 6.10&lt;br /&gt;
&lt;br /&gt;
1.10.2013, 20:00 - 21:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 13:00 - 17:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
5.10.2013, 17:00 - 19:00 Matúš Koperniech&lt;br /&gt;
&lt;br /&gt;
 týden 23.9 - 29.9&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 17:15 - 21:30 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
26.9.2013, 14:00 - 17:00 Martin Doubek&lt;br /&gt;
&lt;br /&gt;
27.9.2013, 12:00 - 14:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
28.9.2013, 10:00 - 15:00 Aleš Jíra&lt;br /&gt;
&lt;br /&gt;
 týden 16.9 - 22.9&lt;br /&gt;
&lt;br /&gt;
20. 9. 2013, 14:00 - 17:00 Martin Červenka&lt;br /&gt;
&lt;br /&gt;
19. 9. 2013, 15:00 - 20:00 Peter Antolík&lt;br /&gt;
&lt;br /&gt;
18. 9. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 9.9 - 15.9&lt;br /&gt;
&lt;br /&gt;
13.9.2013, 10:00 - 11:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
9.9.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
6.9.2013, 17:00 - 22:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 2.9 - 8.9&lt;br /&gt;
&lt;br /&gt;
5. 9. 2013, 13:00 - 18:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 26.8 - 1.9&lt;br /&gt;
29.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
 týden 19.8 - 25.8&lt;br /&gt;
22.8.2013, 10:00 - 15:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
21.8.2013, 15:00 - 20:00 Pavol Vittek&lt;br /&gt;
&lt;br /&gt;
20.8.2013, 18:30 - 20:00 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
 týden 12.8 - 18.8&lt;br /&gt;
17.8.2013, 15:00 - 17:30 Ondřej Novotný&lt;br /&gt;
&lt;br /&gt;
12.8. 2013, 14:00 - 19:00 Michal Býna&lt;br /&gt;
&lt;br /&gt;
 týden 5.8 - 11.8&lt;br /&gt;
6.8.2013, 18:00 - 22:00 Barbora Svobodová&lt;br /&gt;
&lt;br /&gt;
10.8.2013, 15:00 - 20:00 Marek Votroubek&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/Ca</id>
		<title>Ca</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/Ca"/>
				<updated>2013-08-29T07:24:58Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* SU - SH (TCS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CA - Certifikační autorita TERENA Certificate service - TCS (COMODO) ==&lt;br /&gt;
=== Aktuality ===&lt;br /&gt;
22. dubna 2013 doplněn návod dle aktuálních informací&lt;br /&gt;
&lt;br /&gt;
20. ledna 2012 přidán návod na generování osobních certifikátů bez ověření totožnosti uživatele (plánujeme osobní certifikáty s ověřením totožnosti)&lt;br /&gt;
&lt;br /&gt;
17. června 2011 byla obnovena možnost žádat o vydávání certifikátů. Vydávání certifikátů však může trvat delší dobu, než obvyklou.&lt;br /&gt;
&lt;br /&gt;
15. března 2011 došlo k úspěnému útoku na jednu z RA pracujících pro COMODO. Na základě této události se pozastavuje vydávání TCS certifikátů do odvolání. Podrobnosti viz: http://www.comodo.com/Comodo-Fraud-Incident-2011-03-23.html&lt;br /&gt;
&lt;br /&gt;
=== Důležité informace ===&lt;br /&gt;
* Certifikáty mohou generovat níže popsaným způsobem pouze součásti Studentské unie ČVUT (přesněji pouze správci jednotlivých serverů a služeb).&lt;br /&gt;
* Certifikáty COMODO generujte pro služby, které využívá '''minimálně 10 uživatelů''' a u služeb, které '''jsou v provozu'''.&lt;br /&gt;
* '''Není možné generovat jeden certifikát pro více rozdílných domén 2 řádu''' (tzn. není možné vygenerovat jeden certifikát sh.cvut.cz a siliconhill.cz, v takovém případě je nutné vygenerovat certifikáty dva).&lt;br /&gt;
* Žádost pro následný certifikát generujte '''nejdříve 14 dnů''' před dobou expirace platnosti stávajícího certifikátu.&lt;br /&gt;
* V případě dotazů či nesrovnalostí prosím kontaktujte [[Landa_Karel|Karla Landu (Charlie)]].&lt;br /&gt;
&lt;br /&gt;
=== Domény *.cvut.cz ===&lt;br /&gt;
&lt;br /&gt;
# Vyplnit žádost, která se nachází na  [https://tcs.cesnet.cz/req/ https://tcs.cesnet.cz/req/]&lt;br /&gt;
# Pokud nemáte opodstatněný důvod, aby byla v certifikátu uvedena organizace (vyšší míra zabezpečení), vybírejte &amp;quot;běžný, bez uvedení organizace&amp;quot;. &lt;br /&gt;
# Organizaci vybírejte ČVUT (O=Czech Technical University in Prague), může se stát, že systém neakceptuje vložení žádosti ze souboru. Zvolte pak první možnost - &amp;quot;ze schránky&amp;quot;&lt;br /&gt;
# Na váš e-mail vám přijde potvrzovací e-mail, '''který mi přepošlete na mou e-mailovou adresu:''' [mailto:charlie@sh.cvut.cz charlie@sh.cvut.cz] (prosím bez jakýchkoli změn v textu).&lt;br /&gt;
# Pro snadnější generegování certifikátů je možné použít [http://tools.cesnet-ca.cz/tcs-mkserverreq.phtml http://tools.cesnet-ca.cz/tcs-mkserverreq.phtml]&lt;br /&gt;
# Podrobnávod pro generování certifikátů naleznete na: [http://www.cesnet.cz/pki/cs/st-tcs-csr.html http://www.cesnet.cz/pki/cs/st-tcs-csr.html]&lt;br /&gt;
# Potom již stačí chvíli počkat, než se vše vyřídí. Obvykle je vše vyřízeno nejpozději do 3 pracovních dnů.&lt;br /&gt;
# Po schválení a stáhnutí certifikátu doplňte na této internetové stránce datum vydání a datum platnosti vydaného certifikátu.&lt;br /&gt;
&lt;br /&gt;
=== Ostatní domény vlastněné SU ===&lt;br /&gt;
&lt;br /&gt;
# Vyplnit žádost, která se nachází na  [https://tcs.cesnet.cz/req/ https://tcs.cesnet.cz/req/]&lt;br /&gt;
# Pokud nemáte opodstatněný důvod, aby byla v certifikátu uvedena organizace (vyšší míra zabezpečení), vybírejte &amp;quot;běžný, bez uvedení organizace&amp;quot;.&lt;br /&gt;
# Organizaci vybírejte Studentská unie ČVUT, může se stát, že systém neakceptuje vložení žádosti ze souboru. Zvolte pak první možnost - &amp;quot;ze schránky&amp;quot;&lt;br /&gt;
# Na váš e-mail vám přijde potvrzovací e-mail, '''který mi přepošlete na mou e-mailovou adresu:''' [mailto:charlie@sh.cvut.cz charlie@sh.cvut.cz] (prosím bez jakýchkoli změn v textu).&lt;br /&gt;
# Pro snadnější generegování certifikátů je možné použít [http://tools.cesnet-ca.cz/tcs-mkserverreq.phtml http://tools.cesnet-ca.cz/tcs-mkserverreq.phtml]&lt;br /&gt;
# Podrobný návod pro generování certifikátů naleznete na: [http://www.cesnet.cz/pki/cs/st-tcs-csr.html http://www.cesnet.cz/pki/cs/st-tcs-csr.html]&lt;br /&gt;
# Potom již stačí chvíli počkat, než se vše vyřídí. Obvykle je vše vyřízeno nejpozději do 3 pracovních dnů.&lt;br /&gt;
# Po schválení a stáhnutí certifikátu doplňte na této internetové stránce datum vydání a datum platnosti vydaného certifikátu.&lt;br /&gt;
&lt;br /&gt;
===  Běžný certifikát s uvedením organizace ===&lt;br /&gt;
Pokud vyberete vystavení certifikátu s uvedením organizace (viz bod 2 návodu), bude bude celý proces trvat delší dobu, jelikož u těchto certifikátů je požadováno ověření organizace. Toto ověření probíhá telefonním hovorem na kontaktní tel. číslo dané organizace. Používejte tedy tuto možnost pouze pokud k tomu je opravdu opodstatněný důvod. Před touto samotnou akcí je nutné kontaktovat pověřeného administrátora organizace tj. [[Landa_Karel|Karla Landu (Charlie)]], aby dohodl potřebné termíny.&lt;br /&gt;
&lt;br /&gt;
=== Instalace certifikátů ===&lt;br /&gt;
Návody jak certifikát nainstalovat naleznete na: http://pki.cesnet.cz/cs/st-tcs-server-install.html&lt;br /&gt;
&lt;br /&gt;
=== Osobní certifikáty ===&lt;br /&gt;
&lt;br /&gt;
# Vygenetování certifikátu - Na stránce http://www.comodo.com/home/email-security/free-email-certificate.php kliknete na &amp;quot;free download&amp;quot; a vyplníte potřebné údaje (doporučuji odškrtnout Comodo Newsletter, ať vám nechodí reklamy) a nechte vygenerovat certifikát (Key Size je doporučeno 2048 bit).&lt;br /&gt;
# Doručení e-mailu - Nejpozději do 24 hodin by vám měl na zadaný e-mail přijít e-mail s odkazem na certifikát. Na tento odkaz stačí kliknout. Je však nutné otevřít odkaz ve stjném prohlížeči, kde se generoval klíč.&lt;br /&gt;
# Export certifikátu z prohlížeče - Je nutné vygenerovaný klíč vyexportovat z prohlížeče kde byl certifikát vytvářen. U Internet Exploreru to je: Nástroje - možnosti internetu - Obsah - certifikáty - Osobní, tam budete mít osobní certifikát (nejspíše Usertrust). Klikněte na tento certifikát a dejte exportovat (nejlépe ve formátu cer). U prohlížeče Firefox je cesta k certifikátu: Nástroje - Možnosti - Rošířené - Šifrování - Certifikáty&lt;br /&gt;
# Import certifikátu do poštovního klienta Nastroje - nastavení účtu - vybrat poštovní účet položka zabezpečení - zobrazit certifikáty - importovat (a vybrat certifikát, který se v bodu 3 exportoval) potvrdit a z nabídky &amp;quot;vybrat...&amp;quot;  importovane certifikaty, OK, OK&lt;br /&gt;
&lt;br /&gt;
=== Seznam vydaných certifikatů ===&lt;br /&gt;
==== SU - SH (TCS) ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DNS&lt;br /&gt;
! platnost od&lt;br /&gt;
! platnost do&lt;br /&gt;
! revokace&lt;br /&gt;
! žadatel&lt;br /&gt;
|-&lt;br /&gt;
| dc1.sh.cvut.cz&lt;br /&gt;
| 13.9.2012&lt;br /&gt;
| 14.9.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Michal Naiman]]&lt;br /&gt;
|-&lt;br /&gt;
| dc2.sh.cvut.cz&lt;br /&gt;
| 13.9.2012&lt;br /&gt;
| 14.9.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Michal Naiman]]&lt;br /&gt;
|-&lt;br /&gt;
| exchange.sh.cvut.cz, exchange2.sh.cvut.cz&lt;br /&gt;
| 11.4.2012&lt;br /&gt;
| 12.4.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Martin Cetkovský]]&lt;br /&gt;
|-&lt;br /&gt;
| msdnaa.sh.cvut.cz, chimera.sh.cvut.cz, pegas.sh.cvut.cz&lt;br /&gt;
| 13.9.2012&lt;br /&gt;
| 14.9.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Michal Naiman]]&lt;br /&gt;
|-&lt;br /&gt;
| virtual.sh.cvut.cz&lt;br /&gt;
| 13.9.2012&lt;br /&gt;
| 14.9.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Michal Naiman]]&lt;br /&gt;
|-&lt;br /&gt;
| imap.sh.cvut.cz&lt;br /&gt;
| 15.10.2012&lt;br /&gt;
| 16.10.2013&lt;br /&gt;
|&lt;br /&gt;
| [[Radim Roška]]&lt;br /&gt;
|-&lt;br /&gt;
| shell.sh.cvut.cz&lt;br /&gt;
| 1.10.2012&lt;br /&gt;
| 1.10.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Václav Mach|Václav Mach]]&lt;br /&gt;
|-&lt;br /&gt;
| election.sh.cvut.cz&lt;br /&gt;
| 22.11.2011&lt;br /&gt;
| 22.11.2013&lt;br /&gt;
| &lt;br /&gt;
| [[Hlavnička Tomáš]]&lt;br /&gt;
|-&lt;br /&gt;
| docmgr.sh.cvut.cz&lt;br /&gt;
| 23.8.2010&lt;br /&gt;
| 23.8.2013&lt;br /&gt;
| &lt;br /&gt;
| [[Čečák Ondřej]]&lt;br /&gt;
|-&lt;br /&gt;
| zimbra.sh.cvut.cz&lt;br /&gt;
| 18.1.2011&lt;br /&gt;
| 18.1.2014&lt;br /&gt;
| &lt;br /&gt;
| [[Radim Roška]]&lt;br /&gt;
|-&lt;br /&gt;
| lists.sh.cvut.cz, chat.sh.cvut.cz, lists.su.cvut.cz, lists.isc.cvut.cz&lt;br /&gt;
| 11.7.2011&lt;br /&gt;
| 11.7.2014&lt;br /&gt;
| &lt;br /&gt;
| [[Římek Jakub]]&lt;br /&gt;
|-&lt;br /&gt;
| gov.sh.cvut.cz, finance.sh.cvut.cz, majetek.sh.cvut.cz&lt;br /&gt;
| 23.2.2012&lt;br /&gt;
| 23.2.2014&lt;br /&gt;
| &lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| git.sh.cvut.cz&lt;br /&gt;
| 2.8.2012&lt;br /&gt;
| 3.8.2015&lt;br /&gt;
| &lt;br /&gt;
| [[Srna Tomáš]]&lt;br /&gt;
|-&lt;br /&gt;
| is.sh.cvut.cz&lt;br /&gt;
| 20.8.2012&lt;br /&gt;
| 21.8.2015&lt;br /&gt;
| 21.8.2012&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| is.sh.cvut.cz, static.is.sh.cvut.cz, api.is.sh.cvut.cz&lt;br /&gt;
| 21.8.2012&lt;br /&gt;
| 22.8.2015&lt;br /&gt;
| &lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| static.is.sh.cvut.cz&lt;br /&gt;
| 21.8.2012&lt;br /&gt;
| 22.8.2015&lt;br /&gt;
| 21.8.2012&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| svc.sh.cvut.cz&lt;br /&gt;
| 1.10.2012&lt;br /&gt;
| 1.10.2015&lt;br /&gt;
| &lt;br /&gt;
| [[Srna Tomáš]]&lt;br /&gt;
|-&lt;br /&gt;
| ldap.sh.cvut.cz&lt;br /&gt;
| 23.8.2013&lt;br /&gt;
| 24.8.2014&lt;br /&gt;
| &lt;br /&gt;
| [[Srna Tomáš]]&lt;br /&gt;
|-&lt;br /&gt;
| nms.siliconhill.cz&lt;br /&gt;
| 31.1.2013&lt;br /&gt;
| 1.2.2016&lt;br /&gt;
| &lt;br /&gt;
| Bangoura Moris&lt;br /&gt;
|-&lt;br /&gt;
| observium.sh.cvut.cz&lt;br /&gt;
| 27.5.2013&lt;br /&gt;
| 27.5.2016&lt;br /&gt;
|&lt;br /&gt;
| [[User:Gregy|Gregor Petr]]&lt;br /&gt;
|-&lt;br /&gt;
| piwik.sh.cvut.cz&lt;br /&gt;
| 17.7.2013&lt;br /&gt;
| 18.7.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| pm.sh.cvut.cz&lt;br /&gt;
| 17.7.2013&lt;br /&gt;
| 18.7.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| kancelar.sh.cvut.cz&lt;br /&gt;
| 17.7.2013&lt;br /&gt;
| 18.7.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| siliconhill.cz&lt;br /&gt;
| 2.8.2013&lt;br /&gt;
| 3.8.2015&lt;br /&gt;
|&lt;br /&gt;
| [[Robenek Bronislav]]&lt;br /&gt;
|-&lt;br /&gt;
| edu.sh.cvut.cz&lt;br /&gt;
| 23.8.2013&lt;br /&gt;
| 23.8.2016&lt;br /&gt;
|&lt;br /&gt;
| [[Srna Tomáš]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SU - POD (TCS) ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DNS&lt;br /&gt;
! platnost od&lt;br /&gt;
! platnost do&lt;br /&gt;
! revokace&lt;br /&gt;
! žadatel&lt;br /&gt;
|-&lt;br /&gt;
| imap.pod.cvut.cz&lt;br /&gt;
| 9.10.2012&lt;br /&gt;
| 10.10.2015&lt;br /&gt;
|&lt;br /&gt;
| Kobezda Jan&lt;br /&gt;
|-&lt;br /&gt;
|dusps.pod.cvut.cz&lt;br /&gt;
|10.12.2010&lt;br /&gt;
|09.12.2013&lt;br /&gt;
|&lt;br /&gt;
|Josef Bouda&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SU - BUK (TCS) ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DNS&lt;br /&gt;
! platnost od&lt;br /&gt;
! platnost do&lt;br /&gt;
! revokace&lt;br /&gt;
! žadatel&lt;br /&gt;
|-&lt;br /&gt;
| radius.buk.cvut.cz&lt;br /&gt;
| 25. 06. 2012&lt;br /&gt;
| 25. 06. 2015&lt;br /&gt;
| &lt;br /&gt;
| Marek Šabo&lt;br /&gt;
|-&lt;br /&gt;
| unicorn.buk.cvut.cz, u.buk.cvut.cz&lt;br /&gt;
| 03. 10. 2011&lt;br /&gt;
| 03. 10. 2014&lt;br /&gt;
| &lt;br /&gt;
| Marek Šabo&lt;br /&gt;
|-&lt;br /&gt;
| mail.buk.cvut.cz, imap.buk.cvut.cz, smtp.buk.cvut.cz, lists.buk.cvut.cz&lt;br /&gt;
| 25. 01. 2013&lt;br /&gt;
| 25. 01. 2016&lt;br /&gt;
| &lt;br /&gt;
| Marek Šabo&lt;br /&gt;
|-&lt;br /&gt;
| web.buk.cvut.cz, webmail.buk.cvut.cz, volby.buk.cvut.cz, bax.buk.cvut.cz, zd.buk.cvut.cz, wiki.buk.cvut.cz&lt;br /&gt;
| 28. 01. 2013&lt;br /&gt;
| 28. 01. 2016&lt;br /&gt;
| &lt;br /&gt;
| Petr Marek&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SU - MK (TCS) ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DNS&lt;br /&gt;
! platnost od&lt;br /&gt;
! platnost do&lt;br /&gt;
! revokace&lt;br /&gt;
! žadatel&lt;br /&gt;
|-&lt;br /&gt;
| admin.mk.cvut.cz, webmail.mk.cvut.cz&lt;br /&gt;
| 18.4.2012&lt;br /&gt;
| 19.4.2015&lt;br /&gt;
| &lt;br /&gt;
| Strnad Michal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== SU - SIN (TCS) ====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! DNS&lt;br /&gt;
! platnost od&lt;br /&gt;
! platnost do&lt;br /&gt;
! revokace&lt;br /&gt;
! žadatel&lt;br /&gt;
|-&lt;br /&gt;
| sin.cvut.cz, www.sin.cvut.cz, wiki.sin.cvut.cz, lust.sin.cvut.cz, imap.sin.cvut.cz, jabber.sin.cvut.cz, sinis.sin.cvut.cz&lt;br /&gt;
| 6.11.2012&lt;br /&gt;
| 7.11.2014&lt;br /&gt;
| &lt;br /&gt;
| Halenka Michal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekty]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2013-08-16T09:09:07Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Apache HTTP auth */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''LDAP''' je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci [[IS|ISu]] provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
* Důležité atributy uživatelů:&lt;br /&gt;
** uid:  username&lt;br /&gt;
** givenName: křestní jméno&lt;br /&gt;
** sn: příjmení&lt;br /&gt;
** cn: celé jméno&lt;br /&gt;
** mail: ______@sh.cvut.cz&lt;br /&gt;
** SHservice: zaklad - Pro každou službu, kterou má uživatel aktivní, obsahuje Alias služby z ISu&lt;br /&gt;
** SHadmin: is1 - Pro každý server, kterého je uživatel správce&lt;br /&gt;
** SHmailExternal: _____@____.__ - Pro každý externí email, který si uživatel autorizoval pro odesílání&lt;br /&gt;
** SHrole: SHrole: nazev_role:rozsah | nazev_role - Pro každou roli / oprávnění v ISu existuje záznam SHrole, pokud není uvedena : jedná se o neomezené oprávnění, Příklady:&lt;br /&gt;
*** SHrole: registrator:wifi - Registrátor WiFi&lt;br /&gt;
*** SHrole: admin:10 - Admin B10&lt;br /&gt;
*** SHrole: admin - Admin neomezený&lt;br /&gt;
*** SHrole: service_admin:zimbra - Správce služby Zimbra&lt;br /&gt;
*** SHrole: mail_admin:su.cvut.cz - Správce mailů domény su.cvut.cz&lt;br /&gt;
*** Platné názvy rolí: registrator, tags_admin, cameras_admin, student_representative, extended_member, payments_admin, netadmin, dns_admin, service_admin, mail_admin, superuser, admin, secretary, roles_admin, card_readers_admin&lt;br /&gt;
*** Dokumentace k rolím: https://is.sh.cvut.cz/users/20288/user_roles&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
'''Android''' - byla použita aplikace Constacts in line s pluginem Contacts LDAP&lt;br /&gt;
&lt;br /&gt;
# stáhnout a naistalovat aplikaci Contacts in line - https://play.google.com/store/apps/details?id=fr.prados.contacts&amp;amp;feature=more_from_developer#?t=W251bGwsMSwxLDEwMiwiZnIucHJhZG9zLmNvbnRhY3RzIl0.&lt;br /&gt;
# stáhnout a nainstalovat plugin Contacts LDAP - https://play.google.com/store/apps/details?id=fr.prados.contacts.providers.ldap.generic.beta&amp;amp;hl=cs.&lt;br /&gt;
# spustit aplikaci Contacts in line&lt;br /&gt;
# dát tlačítko &amp;quot;volby&amp;quot; na mobilu (vpravo dole)&lt;br /&gt;
# volba &amp;quot;Accounts&amp;quot;&lt;br /&gt;
# vybrat &amp;quot;LDAP inline&amp;quot;&lt;br /&gt;
# LDAP host name: ldap.sh.cvut.cz&lt;br /&gt;
# vyplnit informace&lt;br /&gt;
  * Username: uid=&amp;quot;tvůj username do ISu&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * Password: &amp;quot;heslo do ISu&amp;quot;&lt;br /&gt;
  * Security: SSL&lt;br /&gt;
  * Base DN: &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Apache HTTP auth ==&lt;br /&gt;
&lt;br /&gt;
Je nutne splnit prerekvizitu - viz. obsah wiki stranky.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Directory /var/www/*&amp;gt;&lt;br /&gt;
       Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
&lt;br /&gt;
       Order allow,deny&lt;br /&gt;
       Deny from all&lt;br /&gt;
&lt;br /&gt;
       AuthType Basic&lt;br /&gt;
       AuthBasicProvider ldap&lt;br /&gt;
       AuthName &amp;quot;ldap auth&amp;quot;&lt;br /&gt;
       AuthLDAPURL &amp;quot;ldaps://ldap.sh.cvut.cz:636/dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
       AuthzLDAPAuthoritative On&lt;br /&gt;
       AuthLDAPBindAuthoritative On&lt;br /&gt;
       AuthLDAPBindDN &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
       AuthLDAPBindPassword &amp;quot;****************&amp;quot;&lt;br /&gt;
&lt;br /&gt;
       Require ldap-filter &amp;amp;(SHrole=netadmin)&lt;br /&gt;
       Satisfy Any&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otestujeme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak nefunguje, tak:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# /etc/init.d/nscd restart&lt;br /&gt;
Restarting Name Service Cache Daemon: nscd.&lt;br /&gt;
root@test:~# /etc/init.d/nslcd restart&lt;br /&gt;
Restarting LDAP connection daemon: nslcd.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM zaistuje samotne prihlasovanie na SSH, pripadne desktopu. Skvele je to, ze instalacia libnss-ldapd ako zavislost uz nakonfiguruje libpam-ldapd a dokonca s nim cez nslcd zdiela konfiguraciu /etc/nslcd.conf. Hovoril som, ze to bude bezbolestne, nie? :)&lt;br /&gt;
&lt;br /&gt;
PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.&lt;br /&gt;
&lt;br /&gt;
==== Automaticke vytvaranie home ====&lt;br /&gt;
&lt;br /&gt;
Upravime /etc/pam.d/common-session, pridame na koniec suboru&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
session     required      pam_mkhomedir.so skel=/etc/skel umask=0022&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrovanie uzivatelov ====&lt;br /&gt;
&lt;br /&gt;
Obmedzenie na sluzbu, napr. shell (/etc/nslcd.conf)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
filter passwd (SHservice=shell)&lt;br /&gt;
filter shadow (SHservice=shell)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obmedzenie ine: Ako filter retazec tam moze byt vsetko, co akceptuje LDAP ako filter, kludne i kombinacie, zlozene vyrazy, alebo obmedzenie na konkretneho uzivatela&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(|(&amp;amp;(SHservice=shell)(SHservice=net))(SHservice=sport))&lt;br /&gt;
(|(uid=tomassrna)(uid=robenek))&lt;br /&gt;
(uid=tomassrna)&lt;br /&gt;
(SHadmin=git)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;br /&gt;
* studovna4.sh [[Viktor Bohuslav Bohdal]]&lt;br /&gt;
* vpn.sh (ASA) [[Viktor Bohuslav Bohdal]]&lt;br /&gt;
* mbox.sh [[Václav Mach]]&lt;br /&gt;
* piwik.sh [[Bronislav Robenek]]&lt;br /&gt;
* pm.sh.cvut.cz [[Dominik Mališ]]&lt;br /&gt;
* grill.sh.cvut.cz [[Jiří Dostál]]&lt;br /&gt;
&lt;br /&gt;
[[category:servery]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2013-08-16T09:08:49Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''LDAP''' je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci [[IS|ISu]] provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
* Důležité atributy uživatelů:&lt;br /&gt;
** uid:  username&lt;br /&gt;
** givenName: křestní jméno&lt;br /&gt;
** sn: příjmení&lt;br /&gt;
** cn: celé jméno&lt;br /&gt;
** mail: ______@sh.cvut.cz&lt;br /&gt;
** SHservice: zaklad - Pro každou službu, kterou má uživatel aktivní, obsahuje Alias služby z ISu&lt;br /&gt;
** SHadmin: is1 - Pro každý server, kterého je uživatel správce&lt;br /&gt;
** SHmailExternal: _____@____.__ - Pro každý externí email, který si uživatel autorizoval pro odesílání&lt;br /&gt;
** SHrole: SHrole: nazev_role:rozsah | nazev_role - Pro každou roli / oprávnění v ISu existuje záznam SHrole, pokud není uvedena : jedná se o neomezené oprávnění, Příklady:&lt;br /&gt;
*** SHrole: registrator:wifi - Registrátor WiFi&lt;br /&gt;
*** SHrole: admin:10 - Admin B10&lt;br /&gt;
*** SHrole: admin - Admin neomezený&lt;br /&gt;
*** SHrole: service_admin:zimbra - Správce služby Zimbra&lt;br /&gt;
*** SHrole: mail_admin:su.cvut.cz - Správce mailů domény su.cvut.cz&lt;br /&gt;
*** Platné názvy rolí: registrator, tags_admin, cameras_admin, student_representative, extended_member, payments_admin, netadmin, dns_admin, service_admin, mail_admin, superuser, admin, secretary, roles_admin, card_readers_admin&lt;br /&gt;
*** Dokumentace k rolím: https://is.sh.cvut.cz/users/20288/user_roles&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
'''Android''' - byla použita aplikace Constacts in line s pluginem Contacts LDAP&lt;br /&gt;
&lt;br /&gt;
# stáhnout a naistalovat aplikaci Contacts in line - https://play.google.com/store/apps/details?id=fr.prados.contacts&amp;amp;feature=more_from_developer#?t=W251bGwsMSwxLDEwMiwiZnIucHJhZG9zLmNvbnRhY3RzIl0.&lt;br /&gt;
# stáhnout a nainstalovat plugin Contacts LDAP - https://play.google.com/store/apps/details?id=fr.prados.contacts.providers.ldap.generic.beta&amp;amp;hl=cs.&lt;br /&gt;
# spustit aplikaci Contacts in line&lt;br /&gt;
# dát tlačítko &amp;quot;volby&amp;quot; na mobilu (vpravo dole)&lt;br /&gt;
# volba &amp;quot;Accounts&amp;quot;&lt;br /&gt;
# vybrat &amp;quot;LDAP inline&amp;quot;&lt;br /&gt;
# LDAP host name: ldap.sh.cvut.cz&lt;br /&gt;
# vyplnit informace&lt;br /&gt;
  * Username: uid=&amp;quot;tvůj username do ISu&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * Password: &amp;quot;heslo do ISu&amp;quot;&lt;br /&gt;
  * Security: SSL&lt;br /&gt;
  * Base DN: &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Apache HTTP auth ==&lt;br /&gt;
&lt;br /&gt;
Je nutne splnit prerekvizitu - viz. obsah wiki stranky.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Directory /var/www/*&amp;gt;&lt;br /&gt;
       Options Indexes FollowSymLinks MultiViews&lt;br /&gt;
&lt;br /&gt;
       Order allow,deny&lt;br /&gt;
       Deny from all&lt;br /&gt;
&lt;br /&gt;
       AuthType Basic&lt;br /&gt;
       AuthBasicProvider ldap&lt;br /&gt;
       AuthName &amp;quot;ldap auth&amp;quot;&lt;br /&gt;
       AuthLDAPURL &amp;quot;ldaps://ldap.sh.cvut.cz:636/dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
       AuthzLDAPAuthoritative On&lt;br /&gt;
       AuthLDAPBindAuthoritative On&lt;br /&gt;
       AuthLDAPBindDN &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
       AuthLDAPBindPassword &amp;quot;****************&amp;quot;&lt;br /&gt;
&lt;br /&gt;
       Require ldap-filter &amp;amp;(SHrole=netadmin)&lt;br /&gt;
       Satisfy Any&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otestujeme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak nefunguje, tak:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# /etc/init.d/nscd restart&lt;br /&gt;
Restarting Name Service Cache Daemon: nscd.&lt;br /&gt;
root@test:~# /etc/init.d/nslcd restart&lt;br /&gt;
Restarting LDAP connection daemon: nslcd.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM zaistuje samotne prihlasovanie na SSH, pripadne desktopu. Skvele je to, ze instalacia libnss-ldapd ako zavislost uz nakonfiguruje libpam-ldapd a dokonca s nim cez nslcd zdiela konfiguraciu /etc/nslcd.conf. Hovoril som, ze to bude bezbolestne, nie? :)&lt;br /&gt;
&lt;br /&gt;
PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.&lt;br /&gt;
&lt;br /&gt;
==== Automaticke vytvaranie home ====&lt;br /&gt;
&lt;br /&gt;
Upravime /etc/pam.d/common-session, pridame na koniec suboru&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
session     required      pam_mkhomedir.so skel=/etc/skel umask=0022&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrovanie uzivatelov ====&lt;br /&gt;
&lt;br /&gt;
Obmedzenie na sluzbu, napr. shell (/etc/nslcd.conf)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
filter passwd (SHservice=shell)&lt;br /&gt;
filter shadow (SHservice=shell)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obmedzenie ine: Ako filter retazec tam moze byt vsetko, co akceptuje LDAP ako filter, kludne i kombinacie, zlozene vyrazy, alebo obmedzenie na konkretneho uzivatela&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(|(&amp;amp;(SHservice=shell)(SHservice=net))(SHservice=sport))&lt;br /&gt;
(|(uid=tomassrna)(uid=robenek))&lt;br /&gt;
(uid=tomassrna)&lt;br /&gt;
(SHadmin=git)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;br /&gt;
* studovna4.sh [[Viktor Bohuslav Bohdal]]&lt;br /&gt;
* vpn.sh (ASA) [[Viktor Bohuslav Bohdal]]&lt;br /&gt;
* mbox.sh [[Václav Mach]]&lt;br /&gt;
* piwik.sh [[Bronislav Robenek]]&lt;br /&gt;
* pm.sh.cvut.cz [[Dominik Mališ]]&lt;br /&gt;
* grill.sh.cvut.cz [[Jiří Dostál]]&lt;br /&gt;
&lt;br /&gt;
[[category:servery]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T14:13:32Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Filtrovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otestujeme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak nefunguje, tak:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# /etc/init.d/nscd restart&lt;br /&gt;
Restarting Name Service Cache Daemon: nscd.&lt;br /&gt;
root@test:~# /etc/init.d/nslcd restart&lt;br /&gt;
Restarting LDAP connection daemon: nslcd.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM zaistuje samotne prihlasovanie na SSH, pripadne desktopu. Skvele je to, ze instalacia libnss-ldapd ako zavislost uz nakonfiguruje libpam-ldapd a dokonca s nim cez nslcd zdiela konfiguraciu /etc/nslcd.conf. Hovoril som, ze to bude bezbolestne, nie? :)&lt;br /&gt;
&lt;br /&gt;
PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.&lt;br /&gt;
&lt;br /&gt;
==== Automaticke vytvaranie home ====&lt;br /&gt;
&lt;br /&gt;
Upravime /etc/pam.d/common-session, pridame na koniec suboru&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
session     required      pam_mkhomedir.so skel=/etc/skel umask=0022&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrovanie uzivatelov ====&lt;br /&gt;
&lt;br /&gt;
Obmedzenie na sluzbu, napr. shell (/etc/nslcd.conf)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
filter passwd (SHservice=shell)&lt;br /&gt;
filter shadow (SHservice=shell)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obmedzenie ine: Ako filter retazec tam moze byt vsetko, co akceptuje LDAP ako filter, kludne i kombinacie, zlozene vyrazy, alebo obmedzenie na konkretneho uzivatela&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(|(&amp;amp;(SHservice=shell)(SHservice=net))(SHservice=sport))&lt;br /&gt;
(|(uid=tomassrna)(uid=robenek))&lt;br /&gt;
(uid=tomassrna)&lt;br /&gt;
(SHadmin=git)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T14:13:06Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Filtrovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otestujeme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak nefunguje, tak:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# /etc/init.d/nscd restart&lt;br /&gt;
Restarting Name Service Cache Daemon: nscd.&lt;br /&gt;
root@test:~# /etc/init.d/nslcd restart&lt;br /&gt;
Restarting LDAP connection daemon: nslcd.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM zaistuje samotne prihlasovanie na SSH, pripadne desktopu. Skvele je to, ze instalacia libnss-ldapd ako zavislost uz nakonfiguruje libpam-ldapd a dokonca s nim cez nslcd zdiela konfiguraciu /etc/nslcd.conf. Hovoril som, ze to bude bezbolestne, nie? :)&lt;br /&gt;
&lt;br /&gt;
PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.&lt;br /&gt;
&lt;br /&gt;
==== Automaticke vytvaranie home ====&lt;br /&gt;
&lt;br /&gt;
Upravime /etc/pam.d/common-session, pridame na koniec suboru&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
session     required      pam_mkhomedir.so skel=/etc/skel umask=0022&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrovanie uzivatelov ====&lt;br /&gt;
&lt;br /&gt;
Obmedzenie na sluzbu, napr. shell (/etc/nslcd.conf)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
filter passwd (SHservice=shell)&lt;br /&gt;
filter shadow (SHservice=shell)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obmedzenie ine: Ako filter retazec tam moze byt vsetko, co akceptuje LDAP ako filter, kludne i kombinacie, zlozene vyrazy, alebo obmedzenie na konkretneho uzivatela&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(|(&amp;amp;(SHservice=shell)(SHservice=net))(SHservice=sport))&lt;br /&gt;
(|(uid=tomassrna)(uid=robenek))&lt;br /&gt;
(uid=tomassrna)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T14:12:26Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Filtrovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otestujeme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak nefunguje, tak:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# /etc/init.d/nscd restart&lt;br /&gt;
Restarting Name Service Cache Daemon: nscd.&lt;br /&gt;
root@test:~# /etc/init.d/nslcd restart&lt;br /&gt;
Restarting LDAP connection daemon: nslcd.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM zaistuje samotne prihlasovanie na SSH, pripadne desktopu. Skvele je to, ze instalacia libnss-ldapd ako zavislost uz nakonfiguruje libpam-ldapd a dokonca s nim cez nslcd zdiela konfiguraciu /etc/nslcd.conf. Hovoril som, ze to bude bezbolestne, nie? :)&lt;br /&gt;
&lt;br /&gt;
PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.&lt;br /&gt;
&lt;br /&gt;
==== Automaticke vytvaranie home ====&lt;br /&gt;
&lt;br /&gt;
Upravime /etc/pam.d/common-session, pridame na koniec suboru&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
session     required      pam_mkhomedir.so skel=/etc/skel umask=0022&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrovanie uzivatelov ====&lt;br /&gt;
&lt;br /&gt;
Obmedzenie na sluzbu, napr. shell (/etc/nslcd.conf)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
filter passwd (SHservice=shell)&lt;br /&gt;
filter shadow (SHservice=shell)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obmedzenie ine: Ako filter retazec tam moze byt vsetko, co akceptuje LDAP ako filter, kludne i kombinacie, zlozene vyrazy, alebo obmedzenie na konkretneho uzivatela&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(|(&amp;amp;(SHservice=shell)(SHservice=net)(SHservice=sport))&lt;br /&gt;
(|(uid=tomassrna)(uid=robenek))&lt;br /&gt;
(uid=tomassrna)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T13:31:32Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Automaticke vytvaranie home */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otestujeme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak nefunguje, tak:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# /etc/init.d/nscd restart&lt;br /&gt;
Restarting Name Service Cache Daemon: nscd.&lt;br /&gt;
root@test:~# /etc/init.d/nslcd restart&lt;br /&gt;
Restarting LDAP connection daemon: nslcd.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM zaistuje samotne prihlasovanie na SSH, pripadne desktopu. Skvele je to, ze instalacia libnss-ldapd ako zavislost uz nakonfiguruje libpam-ldapd a dokonca s nim cez nslcd zdiela konfiguraciu /etc/nslcd.conf. Hovoril som, ze to bude bezbolestne, nie? :)&lt;br /&gt;
&lt;br /&gt;
PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.&lt;br /&gt;
&lt;br /&gt;
==== Automaticke vytvaranie home ====&lt;br /&gt;
&lt;br /&gt;
Upravime /etc/pam.d/common-session, pridame na koniec suboru&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
session     required      pam_mkhomedir.so skel=/etc/skel umask=0022&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Filtrovanie uzivatelov ====&lt;br /&gt;
&lt;br /&gt;
Obmedzenie na sluzbu, napr. shell&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
filter passwd (SHservice=shell)&lt;br /&gt;
filter shadow (SHservice=shell)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obmedzenie ine: Ako filter retazec tam moze byt vsetko, co akceptuje LDAP ako filter, kludne i kombinacie, zlozene vyrazy, alebo obmedzenie na konkretneho uzivatela&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(|(&amp;amp;(SHservice=shell)(SHservice=net)(SHservice=sport))&lt;br /&gt;
(|(uid=tomassrna)(uid=robenek))&lt;br /&gt;
(uid=tomassrna)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T13:21:58Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Automaticke vytvaranie home */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otestujeme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak nefunguje, tak:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# /etc/init.d/nscd restart&lt;br /&gt;
Restarting Name Service Cache Daemon: nscd.&lt;br /&gt;
root@test:~# /etc/init.d/nslcd restart&lt;br /&gt;
Restarting LDAP connection daemon: nslcd.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM zaistuje samotne prihlasovanie na SSH, pripadne desktopu. Skvele je to, ze instalacia libnss-ldapd ako zavislost uz nakonfiguruje libpam-ldapd a dokonca s nim cez nslcd zdiela konfiguraciu /etc/nslcd.conf. Hovoril som, ze to bude bezbolestne, nie? :)&lt;br /&gt;
&lt;br /&gt;
PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.&lt;br /&gt;
&lt;br /&gt;
==== Automaticke vytvaranie home ====&lt;br /&gt;
&lt;br /&gt;
Upravime /etc/pam.d/common-session, pridame na koniec suboru&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
session     required      pam_mkhomedir.so skel=/etc/skel umask=0022&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T13:20:55Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* = Automaticke vytvaranie home */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otestujeme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak nefunguje, tak:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# /etc/init.d/nscd restart&lt;br /&gt;
Restarting Name Service Cache Daemon: nscd.&lt;br /&gt;
root@test:~# /etc/init.d/nslcd restart&lt;br /&gt;
Restarting LDAP connection daemon: nslcd.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM zaistuje samotne prihlasovanie na SSH, pripadne desktopu. Skvele je to, ze instalacia libnss-ldapd ako zavislost uz nakonfiguruje libpam-ldapd a dokonca s nim cez nslcd zdiela konfiguraciu /etc/nslcd.conf. Hovoril som, ze to bude bezbolestne, nie? :)&lt;br /&gt;
&lt;br /&gt;
PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.&lt;br /&gt;
&lt;br /&gt;
==== Automaticke vytvaranie home ====&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T13:20:45Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* PAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otestujeme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak nefunguje, tak:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# /etc/init.d/nscd restart&lt;br /&gt;
Restarting Name Service Cache Daemon: nscd.&lt;br /&gt;
root@test:~# /etc/init.d/nslcd restart&lt;br /&gt;
Restarting LDAP connection daemon: nslcd.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM zaistuje samotne prihlasovanie na SSH, pripadne desktopu. Skvele je to, ze instalacia libnss-ldapd ako zavislost uz nakonfiguruje libpam-ldapd a dokonca s nim cez nslcd zdiela konfiguraciu /etc/nslcd.conf. Hovoril som, ze to bude bezbolestne, nie? :)&lt;br /&gt;
&lt;br /&gt;
PAM mozeme ale este doladit, napr. vytvaranie home adresarov pri prvom prihlaseni, restrikcia moznosti prihlasit sa na SH sluzby, resp. ldap atributy obecne.&lt;br /&gt;
&lt;br /&gt;
==== Automaticke vytvaranie home ===&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T13:19:21Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* NSS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otestujeme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak nefunguje, tak:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# /etc/init.d/nscd restart&lt;br /&gt;
Restarting Name Service Cache Daemon: nscd.&lt;br /&gt;
root@test:~# /etc/init.d/nslcd restart&lt;br /&gt;
Restarting LDAP connection daemon: nslcd.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM zaistuje samotne prihlasovanie na SSH, pripadne desktopu. Skvele je to, ze instalacia libnss-ldapd ako zavislost uz nakonfiguruje libpam-ldapd a dokonca s nim cez nslcd zdiela konfiguraciu /etc/nslcd.conf. Hovoril som, ze to bude bezbolestne, nie? :)&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T13:14:47Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* NSS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otestujeme&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ak nefunguje, tak:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test:~# /etc/init.d/nscd restart&lt;br /&gt;
Restarting Name Service Cache Daemon: nscd.&lt;br /&gt;
root@test:~# /etc/init.d/nslcd restart&lt;br /&gt;
Restarting LDAP connection daemon: nslcd.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T13:12:57Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* NSS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
Doladime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
ldap_version 3&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo na vyziadanie od admina LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert allow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skontrolujeme, ze /etc/nsswitch.conf obsahuje:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         compat ldap&lt;br /&gt;
group:          compat ldap&lt;br /&gt;
shadow:         compat ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T13:10:56Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* NSS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Name services to configure:''' group, passwd, shadow&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
* '''Base:''' dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:54:57Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* NSS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
* '''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:54:37Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* NSS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pocas instalacie sa nas modra obrazovka spyta na:&lt;br /&gt;
'''Meno LDAP servera:''' ldaps://ldap.sh.cvut.cz&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:53:46Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* NSS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
aptitude install libnss-ldapd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:53:32Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* NSS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
Nainstalujeme balik libnss-ldap'''d''' (pozor, existuje aj libnss-ldap, ktory je stary a tazky na konfiguraciu)&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:52:30Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Poznamka:''' Vsetko je testovane na cistej instalacii Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:51:28Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* NSS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
NSS resolvuje ciselne uidNumber na meno uzivalela. Stara sa napr. o prikaz id, alebo pri listovani adresara zobrazi uzivatela miesto cisla.&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:50:25Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Prerekvizita */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:49:32Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
Pre debug pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;id tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:48:55Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Existuje niekolko sposobov, ako nakonfigurovat LDAP prihlasovanie na Linuxe. Niektore cesty su strastiplne, nechas u nich vsetky svoje nervy a potis krv.&lt;br /&gt;
Podme si ukazat sposob, ktory je jednoduchy a funguje.&lt;br /&gt;
&lt;br /&gt;
Hned na zaciatku by som podotkol, ze &amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nikdy nebude fungovat na zobrazenie vsetkych uzivatelov. Je to politika zabezpecenia SH LDAP, ktora hovori, ze pouzivany '''auth-user''' nema pravo vidiet vsetkych uzivatelov, moze len hladat a autentifikovat. To nam staci.&lt;br /&gt;
&lt;br /&gt;
=== Prerekvizita ===&lt;br /&gt;
[[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:22:33Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* PAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Je to strasny oser, priprav si kybel nervov. Ach, zlaty stary NIS. Tak, podme do toho!&lt;br /&gt;
&lt;br /&gt;
Navod testovany na cistej instalacii systemu Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
Splnime [[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
NSS je sluzba ktora resolvuje uid na mena uzivatelov (napr. ls aby zobrazilo mena)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install libnss-ldap ldap-utils nscd nslcd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upravime &amp;quot;/etc/libnss-ldap.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
port 636&lt;br /&gt;
rootbinddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bind_policy soft&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo sdeli spravca LDAP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nss_base_passwd ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_shadow ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_group          ou=Groups,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ulozime heslo auth usera do &amp;quot;/etc/libnss-ldap.secret&amp;quot; (nic ine tam nesmie byt, len retazec s heslom)&lt;br /&gt;
Upravime &amp;quot;/etc/nsswitch.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         files ldap&lt;br /&gt;
group:          files ldap&lt;br /&gt;
shadow:         files ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upravime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo da spravca LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert never&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM sluzi pre samotne prihlasovanie uzivatelov, napr. cez SSH&lt;br /&gt;
&lt;br /&gt;
=== Dolezite! ===&lt;br /&gt;
&amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nebude zobrazovat vsetkych uzivatelov, auth user nema pravo na listovanie. Je to zamer, netreba sa bat :)&lt;br /&gt;
&lt;br /&gt;
Miesto toho pre testovanie pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test-srna:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
Test spojenia&lt;br /&gt;
&amp;lt;pre&amp;gt;ldapsearch -d 1 -xLLL -H ldaps://ldap.sh.cvut.cz/ -b &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nscd&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/nscd.conf:&lt;br /&gt;
        logfile                 /var/log/nscd.log&lt;br /&gt;
        debug-level             5&lt;br /&gt;
&lt;br /&gt;
tail /var/log/nscd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:17:22Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Je to strasny oser, priprav si kybel nervov. Ach, zlaty stary NIS. Tak, podme do toho!&lt;br /&gt;
&lt;br /&gt;
Navod testovany na cistej instalacii systemu Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
Splnime [[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
=== NSS ===&lt;br /&gt;
NSS je sluzba ktora resolvuje uid na mena uzivatelov (napr. ls aby zobrazilo mena)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install libnss-ldap ldap-utils nscd nslcd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upravime &amp;quot;/etc/libnss-ldap.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
port 636&lt;br /&gt;
rootbinddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bind_policy soft&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo sdeli spravca LDAP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nss_base_passwd ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_shadow ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_group          ou=Groups,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ulozime heslo auth usera do &amp;quot;/etc/libnss-ldap.secret&amp;quot; (nic ine tam nesmie byt, len retazec s heslom)&lt;br /&gt;
Upravime &amp;quot;/etc/nsswitch.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         files ldap&lt;br /&gt;
group:          files ldap&lt;br /&gt;
shadow:         files ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upravime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo da spravca LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert never&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PAM ===&lt;br /&gt;
&lt;br /&gt;
PAM sluzi pre samotne prihlasovanie uzivatelov, napr. cez SSH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dolezite! ===&lt;br /&gt;
&amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nebude zobrazovat vsetkych uzivatelov, auth user nema pravo na listovanie. Je to zamer, netreba sa bat :)&lt;br /&gt;
&lt;br /&gt;
Miesto toho pre testovanie pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test-srna:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
Test spojenia&lt;br /&gt;
&amp;lt;pre&amp;gt;ldapsearch -d 1 -xLLL -H ldaps://ldap.sh.cvut.cz/ -b &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nscd&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/nscd.conf:&lt;br /&gt;
        logfile                 /var/log/nscd.log&lt;br /&gt;
        debug-level             5&lt;br /&gt;
&lt;br /&gt;
tail /var/log/nscd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:13:45Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Je to strasny oser, priprav si kybel nervov. Tak, podme do toho!&lt;br /&gt;
&lt;br /&gt;
Navod testovany na cistej instalacii systemu Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
Splnime [[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install libnss-ldap ldap-utils nscd nslcd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upravime &amp;quot;/etc/libnss-ldap.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
port 636&lt;br /&gt;
rootbinddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bind_policy soft&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo sdeli spravca LDAP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nss_base_passwd ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_shadow ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_group          ou=Groups,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ulozime heslo auth usera do &amp;quot;/etc/libnss-ldap.secret&amp;quot; (nic ine tam nesmie byt, len retazec s heslom)&lt;br /&gt;
Upravime &amp;quot;/etc/nsswitch.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         files ldap&lt;br /&gt;
group:          files ldap&lt;br /&gt;
shadow:         files ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upravime /etc/nslcd.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo da spravca LDAP&amp;gt;&lt;br /&gt;
ssl on&lt;br /&gt;
tls_reqcert never&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dolezite! ===&lt;br /&gt;
&amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nebude zobrazovat vsetkych uzivatelov, auth user nema pravo na listovanie. Je to zamer, netreba sa bat :)&lt;br /&gt;
&lt;br /&gt;
Miesto toho pre testovanie pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test-srna:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
Test spojenia&lt;br /&gt;
&amp;lt;pre&amp;gt;ldapsearch -d 1 -xLLL -H ldaps://ldap.sh.cvut.cz/ -b &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nscd&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/nscd.conf:&lt;br /&gt;
        logfile                 /var/log/nscd.log&lt;br /&gt;
        debug-level             5&lt;br /&gt;
&lt;br /&gt;
tail /var/log/nscd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:12:02Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Je to strasny oser, priprav si kybel nervov. Tak, podme do toho!&lt;br /&gt;
&lt;br /&gt;
Navod testovany na cistej instalacii systemu Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
Splnime [[#Prerekvizita SSL]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;aptitude install libnss-ldap ldap-utils nscd nslcd&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Upravime &amp;quot;/etc/libnss-ldap.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
port 636&lt;br /&gt;
rootbinddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bind_policy soft&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo sdeli spravca LDAP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nss_base_passwd ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_shadow ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_group          ou=Groups,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Ulozime heslo auth usera do &amp;quot;/etc/libnss-ldap.secret&amp;quot; (nic ine tam nesmie byt, len retazec s heslom)&lt;br /&gt;
# Upravime &amp;quot;/etc/nsswitch.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         files ldap&lt;br /&gt;
group:          files ldap&lt;br /&gt;
shadow:         files ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dolezite! ===&lt;br /&gt;
&amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nebude zobrazovat vsetkych uzivatelov, auth user nema pravo na listovanie. Je to zamer, netreba sa bat :)&lt;br /&gt;
&lt;br /&gt;
Miesto toho pre testovanie pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test-srna:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
Test spojenia&lt;br /&gt;
&amp;lt;pre&amp;gt;ldapsearch -d 1 -xLLL -H ldaps://ldap.sh.cvut.cz/ -b &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nscd&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/nscd.conf:&lt;br /&gt;
        logfile                 /var/log/nscd.log&lt;br /&gt;
        debug-level             5&lt;br /&gt;
&lt;br /&gt;
tail /var/log/nscd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:11:21Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Je to strasny oser, priprav si kybel nervov. Tak, podme do toho!&lt;br /&gt;
&lt;br /&gt;
Navod testovany na cistej instalacii systemu Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
# Splnime [[#Prerekvizita SSL]]&lt;br /&gt;
# &amp;lt;pre&amp;gt;aptitude install libnss-ldap ldap-utils nscd nslcd&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Upravime &amp;quot;/etc/libnss-ldap.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
port 636&lt;br /&gt;
rootbinddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bind_policy soft&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo sdeli spravca LDAP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nss_base_passwd ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_shadow ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_group          ou=Groups,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Ulozime heslo auth usera do &amp;quot;/etc/libnss-ldap.secret&amp;quot; (nic ine tam nesmie byt, len retazec s heslom)&lt;br /&gt;
# Upravime &amp;quot;/etc/nsswitch.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         files ldap&lt;br /&gt;
group:          files ldap&lt;br /&gt;
shadow:         files ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dolezite! ===&lt;br /&gt;
&amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nebude zobrazovat vsetkych uzivatelov, auth user nema pravo na listovanie. Je to zamer, netreba sa bat :)&lt;br /&gt;
&lt;br /&gt;
Miesto toho pre testovanie pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test-srna:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
Test spojenia&lt;br /&gt;
&amp;lt;pre&amp;gt;ldapsearch -d 1 -xLLL -H ldaps://ldap.sh.cvut.cz/ -b &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nscd&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/nscd.conf:&lt;br /&gt;
        logfile                 /var/log/nscd.log&lt;br /&gt;
        debug-level             5&lt;br /&gt;
&lt;br /&gt;
tail /var/log/nscd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:09:40Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Je to strasny oser, priprav si kybel nervov. Tak, podme do toho!&lt;br /&gt;
&lt;br /&gt;
Navod testovany na cistej instalacii systemu Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
# Splnime [[#Prerekvizita SSL]]&lt;br /&gt;
# &amp;lt;pre&amp;gt;aptitude install libnss-ldap ldap-utils&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Upravime &amp;quot;/etc/libnss-ldap.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
port 636&lt;br /&gt;
rootbinddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bind_policy soft&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo sdeli spravce LDAP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nss_base_passwd ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_shadow ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_group          ou=Groups,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Ulozime heslo auth usera do &amp;quot;/etc/libnss-ldap.secret&amp;quot; (nic ine tam nesmie byt, len retazec s heslom)&lt;br /&gt;
# Upravime &amp;quot;/etc/nsswitch.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         files ldap&lt;br /&gt;
shadow:         files ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dolezite! ===&lt;br /&gt;
&amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nebude zobrazovat vsetkych uzivatelov, auth user nema pravo na listovanie. Je to zamer, netreba sa bat :)&lt;br /&gt;
&lt;br /&gt;
Miesto toho pre testovanie pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test-srna:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
Test spojenia&lt;br /&gt;
&amp;lt;pre&amp;gt;ldapsearch -d 1 -xLLL -H ldaps://ldap.sh.cvut.cz/ -b &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nscd&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/nscd.conf:&lt;br /&gt;
        logfile                 /var/log/nscd.log&lt;br /&gt;
        debug-level             5&lt;br /&gt;
&lt;br /&gt;
tail /var/log/nscd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T12:02:57Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Navod testovany na cistej instalacii systemu Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
# Splnime [[#Prerekvizita SSL]]&lt;br /&gt;
# &amp;lt;pre&amp;gt;aptitude install libnss-ldap ldap-utils&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Upravime &amp;quot;/etc/libnss-ldap.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
port 636&lt;br /&gt;
rootbinddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bind_policy soft&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo sdeli spravce LDAP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nss_base_passwd ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_shadow ou=People,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
nss_base_group          ou=Groups,dc=sh,dc=cvut,dc=cz?one&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Ulozime heslo auth usera do &amp;quot;/etc/libnss-ldap.secret&amp;quot; (nic ine tam nesmie byt, len retazec s heslom)&lt;br /&gt;
# Upravime &amp;quot;/etc/nsswitch.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         files ldap&lt;br /&gt;
shadow:         files ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dolezite! ===&lt;br /&gt;
&amp;lt;pre&amp;gt;getent passwd&amp;lt;/pre&amp;gt; nebude zobrazovat vsetkych uzivatelov, auth user nema pravo na listovanie. Je to zamer, netreba sa bat :)&lt;br /&gt;
&lt;br /&gt;
Miesto toho pre testovanie pouzivaj&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@test-srna:~# id tomassrna&lt;br /&gt;
uid=16405(tomassrna) gid=513(shuser) groups=513(shuser)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
Test spojenia&lt;br /&gt;
&amp;lt;pre&amp;gt;ldapsearch -d 1 -xLLL -H ldaps://ldap.sh.cvut.cz/ -b &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nscd&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/nscd.conf:&lt;br /&gt;
        logfile                 /var/log/nscd.log&lt;br /&gt;
        debug-level             5&lt;br /&gt;
&lt;br /&gt;
tail /var/log/nscd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T11:34:23Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Navod testovany na cistej instalacii systemu Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
# Splnime [[#Prerekvizita SSL]]&lt;br /&gt;
# &amp;lt;pre&amp;gt;aptitude install libnss-ldap ldap-utils&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Upravime &amp;quot;/etc/libnss-ldap.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
port 636&lt;br /&gt;
rootbinddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bind_policy soft&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo sdeli spravce LDAP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Ulozime heslo auth usera do &amp;quot;/etc/libnss-ldap.secret&amp;quot; (nic ine tam nesmie byt, len retazec s heslom)&lt;br /&gt;
# Upravime &amp;quot;/etc/nsswitch.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         files ldap&lt;br /&gt;
shadow:         files ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Debug ===&lt;br /&gt;
&lt;br /&gt;
Test spojenia&lt;br /&gt;
&amp;lt;pre&amp;gt;ldapsearch -d 1 -xLLL -H ldaps://ldap.sh.cvut.cz/ -b &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nscd&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/nscd.conf:&lt;br /&gt;
        logfile                 /var/log/nscd.log&lt;br /&gt;
        debug-level             5&lt;br /&gt;
&lt;br /&gt;
tail /var/log/nscd.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T11:25:15Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Navod testovany na cistej instalacii systemu Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
# Splnime [[#Prerekvizita SSL]]&lt;br /&gt;
# &amp;lt;pre&amp;gt;aptitude install libnss-ldap ldap-utils&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Upravime &amp;quot;/etc/libnss-ldap.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz&lt;br /&gt;
port 636&lt;br /&gt;
rootbinddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bind_policy soft&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo sdeli spravce LDAP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Ulozime heslo auth usera do &amp;quot;/etc/libnss-ldap.secret&amp;quot; (nic ine tam nesmie byt, len retazec s heslom)&lt;br /&gt;
# Upravime &amp;quot;/etc/nsswitch.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         files ldap&lt;br /&gt;
shadow:         files ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Debug: &amp;lt;pre&amp;gt;ldapsearch -d 1 -xLLL -H ldaps://ldap.sh.cvut.cz/ -b &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=tomassrna&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	<entry>
		<id>http://old-wiki.siliconhill.cz/LDAP</id>
		<title>LDAP</title>
		<link rel="alternate" type="text/html" href="http://old-wiki.siliconhill.cz/LDAP"/>
				<updated>2012-11-08T10:29:47Z</updated>
		
		<summary type="html">&lt;p&gt;Tomassrna: /* Linux - prihlasovanie uzivatelov */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
LDAP je protokol pro získávání/zapisování informací v stromové struktuře. Dnes se používá zejména pro jednotné přihlašování uživatelů do více aplikací.&lt;br /&gt;
[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP na wikipedii]&lt;br /&gt;
&lt;br /&gt;
Klub Silicon Hill v rámci Informačního systému provozuje LDAP server, vůči kterým se můžou další aplikace ověřovat pomocí uživatelova hesla. Umožňujeme jak bind tak fastbind. Stávající implementace je pro všechny uživatele Read-only, veškeré změny uživatelských účtů je třeba dělat přes rozhraní informačního systému.&lt;br /&gt;
&lt;br /&gt;
= Informace o serveru =&lt;br /&gt;
&lt;br /&gt;
* Adresa: ldap.sh.cvut.cz&lt;br /&gt;
* Port: 636&lt;br /&gt;
* Používá SSL (ldaps://)&lt;br /&gt;
* Správce: [[Tomáš Srna]]&lt;br /&gt;
* Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Atribút uživateľského mena: uid&lt;br /&gt;
* Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo na vyžádání u správce&lt;br /&gt;
* Overenie cez userPassword, SSHA hash&lt;br /&gt;
* Vo výnimočných prípadoch možnosť NTLM overenia&lt;br /&gt;
&lt;br /&gt;
== Autentizačné módy ==&lt;br /&gt;
&lt;br /&gt;
* FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient&lt;br /&gt;
  * uid={username},ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
  * {password}&lt;br /&gt;
* Bind cez auth-user&lt;br /&gt;
  * Horeuvedené údaje&lt;br /&gt;
  * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.&lt;br /&gt;
&lt;br /&gt;
= Prerekvizita SSL =&lt;br /&gt;
&lt;br /&gt;
'''Dôležité!''' Na Linuxe pokiaľ sa používajú ldap knižnice z OS (používa ich OS samotný, PHP, ...), je potrebné pridať certifikát autority.&lt;br /&gt;
&lt;br /&gt;
Postup je nasledovný:&lt;br /&gt;
&lt;br /&gt;
* V /etc/ldap/ldap.conf pridáme riadok&lt;br /&gt;
 TLS_CACERT      /etc/ssl/certs/ldap.pem&lt;br /&gt;
&lt;br /&gt;
* Do spomínaného súboru /etc/ssl/certs/ldap.pem vložíme certifikát autority AddTrust:&lt;br /&gt;
 -----BEGIN CERTIFICATE-----&lt;br /&gt;
 MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU&lt;br /&gt;
 MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs&lt;br /&gt;
 IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290&lt;br /&gt;
 MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux&lt;br /&gt;
 FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h&lt;br /&gt;
 bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v&lt;br /&gt;
 dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt&lt;br /&gt;
 H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9&lt;br /&gt;
 uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX&lt;br /&gt;
 mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX&lt;br /&gt;
 a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN&lt;br /&gt;
 E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0&lt;br /&gt;
 WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD&lt;br /&gt;
 VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0&lt;br /&gt;
 Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU&lt;br /&gt;
 cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx&lt;br /&gt;
 IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN&lt;br /&gt;
 AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH&lt;br /&gt;
 YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5&lt;br /&gt;
 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC&lt;br /&gt;
 Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX&lt;br /&gt;
 c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a&lt;br /&gt;
 mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
= Příklady použití / nastavení =&lt;br /&gt;
&lt;br /&gt;
== LDAP Kontakty v Telefonu ==&lt;br /&gt;
&lt;br /&gt;
'''iPhone'''&lt;br /&gt;
Nastavení -&amp;gt; Pošta, Kontakty, Kalendáře -&amp;gt; Přidat účet -&amp;gt; Jiný -&amp;gt; &amp;quot;Přidat účet LDAP&amp;quot;&lt;br /&gt;
* Server: ldap.sh.cvut.cz&lt;br /&gt;
* Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
* Heslo: Tvé heslo do ISu&lt;br /&gt;
* Popis: ldap.sh.cvut.cz&lt;br /&gt;
* Použít SSL: Ano&lt;br /&gt;
* Kritéria hledání: dc=sh,dc=cvut,dc=cz&lt;br /&gt;
&lt;br /&gt;
== LDAP z příkazové řádky - ldapsearch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Balíček&lt;br /&gt;
aptitude install ldap-utils&lt;br /&gt;
&lt;br /&gt;
# ~ Fastbind (zepta se na heslo pro username)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;uid=username,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot; -W uid=username&lt;br /&gt;
&lt;br /&gt;
# ~ Bind (se systémovým účtem)&lt;br /&gt;
ldapsearch -h ldap.sh.cvut.cz -b &amp;quot;dc=sh,dc=cvut,dc=cz&amp;quot; -D &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot; -w *heslo_auth_usera* uid=username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Zend_Auth_Adapter_Ldap ==&lt;br /&gt;
&lt;br /&gt;
'''application.ini'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ldap.is.host = ldap.sh.cvut.cz&lt;br /&gt;
ldap.is.port = 636&lt;br /&gt;
ldap.is.useSsl = true&lt;br /&gt;
ldap.is.useStartTls = true&lt;br /&gt;
&lt;br /&gt;
ldap.is.bindRequiresDn = true&lt;br /&gt;
ldap.is.baseDn = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.accountCanonicalForm = 2&lt;br /&gt;
&lt;br /&gt;
ldap.is.username = &amp;quot;cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.is.password = &amp;quot;********&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Přiklad přihlášení v kontextu Zend_Controller_Action''', [http://framework.zend.com/manual/1.12/en/zend.auth.adapter.ldap.html Více v dokumentaci]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$auth=new Zend_Auth();&lt;br /&gt;
&lt;br /&gt;
$username=$this-&amp;gt;_getParam(&amp;quot;username&amp;quot;);&lt;br /&gt;
$password=$this-&amp;gt;_getParam(&amp;quot;password&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$bootstrap = $this-&amp;gt;getInvokeArg('bootstrap');&lt;br /&gt;
$config=$bootstrap-&amp;gt;getOptions();&lt;br /&gt;
$options = $config[&amp;quot;ldap&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);&lt;br /&gt;
&lt;br /&gt;
$result=$auth-&amp;gt;authenticate($authAdapter);&lt;br /&gt;
&lt;br /&gt;
if($result-&amp;gt;isValid()) {&lt;br /&gt;
  $ldap=$authAdapter-&amp;gt;getLdap();&lt;br /&gt;
  $user = $ldap-&amp;gt;getEntry(&amp;quot;uid=&amp;quot;.$username.&amp;quot;,&amp;quot;.$options[&amp;quot;is&amp;quot;][&amp;quot;baseDn&amp;quot;]);&lt;br /&gt;
  echo &amp;quot;Uzivatel prihlasen&amp;quot;;&lt;br /&gt;
  print_r($user);&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  echo &amp;quot;Spatne jmeno nebo heslo&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ruby - FastBind ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require 'rubygems'&lt;br /&gt;
require 'net/ldap'&lt;br /&gt;
require 'io/console'&lt;br /&gt;
&lt;br /&gt;
puts &amp;quot;Username:&amp;quot;&lt;br /&gt;
username = gets&lt;br /&gt;
puts &amp;quot;Password:&amp;quot;&lt;br /&gt;
password = STDIN.noecho(&amp;amp;:gets)&lt;br /&gt;
&lt;br /&gt;
ldap = Net::LDAP.new(:encryption =&amp;gt; :simple_tls)&lt;br /&gt;
ldap.host = &amp;quot;ldap.sh.cvut.cz&amp;quot;&lt;br /&gt;
ldap.port = 636&lt;br /&gt;
ldap.base = &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;&lt;br /&gt;
ldap.auth &amp;quot;uid=#{username.strip},&amp;quot;+ldap.base, password.strip&lt;br /&gt;
if ldap.bind&lt;br /&gt;
  puts &amp;quot;authentication succeeded&amp;quot;&lt;br /&gt;
  p ldap.search(&lt;br /&gt;
    base:         &amp;quot;ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;,&lt;br /&gt;
    filter:       Net::LDAP::Filter.eq(&amp;quot;uid&amp;quot;, username.strip),&lt;br /&gt;
    attributes:   %w[ givenName sn email SHservice ],&lt;br /&gt;
    return_result:true&lt;br /&gt;
  ).inspect&lt;br /&gt;
else&lt;br /&gt;
  puts &amp;quot;authentication failed&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== PHP - bez frameworku ==&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 $user = &amp;quot;tomassrna&amp;quot;;&lt;br /&gt;
 $pass = &amp;quot;...&amp;quot;;&lt;br /&gt;
 $ldapConn = ldap_connect(&amp;quot;ldaps://ldap.sh.cvut.cz&amp;quot;, 636);&lt;br /&gt;
 if($ldapConn)&lt;br /&gt;
 {&lt;br /&gt;
        $ldapBind = ldap_bind($ldapConn, &amp;quot;uid=&amp;quot;.$user.&amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, $pass);&lt;br /&gt;
        if($ldapBind)&lt;br /&gt;
                echo &amp;quot;SUCCESS\n&amp;quot;;&lt;br /&gt;
        else&lt;br /&gt;
        {&lt;br /&gt;
                echo &amp;quot;FAILED: &amp;quot;;&lt;br /&gt;
                echo ldap_error($ldapConn).&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Microsoft Visual C# ==&lt;br /&gt;
&lt;br /&gt;
Tak toto bol tazky boj...&lt;br /&gt;
&lt;br /&gt;
* Pridame reference System.DirectoryServices&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading.Tasks;&lt;br /&gt;
using System.DirectoryServices;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
&lt;br /&gt;
namespace LDAP&lt;br /&gt;
{&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            Dictionary&amp;lt;string, string[]&amp;gt; attrs;&lt;br /&gt;
            if ((attrs = shLdap(&amp;quot;tomassrna&amp;quot;, &amp;quot;xxxxxx&amp;quot;,&lt;br /&gt;
                new[] { &amp;quot;mail&amp;quot;, &amp;quot;uid&amp;quot;, &amp;quot;SHservice&amp;quot;, &amp;quot;SHadmin&amp;quot; }, &amp;quot;(&amp;amp;(uid=tomassrna)(SHservice=net))&amp;quot;)) != null)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth success!&amp;quot;);&lt;br /&gt;
                // Priklad vypisu vsetkych atributov&lt;br /&gt;
                foreach(KeyValuePair&amp;lt;string, string[]&amp;gt; kv in attrs)&lt;br /&gt;
                {&lt;br /&gt;
                    string k = kv.Key;&lt;br /&gt;
                    foreach (string v in kv.Value)&lt;br /&gt;
                    {&lt;br /&gt;
                        Console.WriteLine(k + &amp;quot;=&amp;quot; + v);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                // Priklad ziskania single value&lt;br /&gt;
                Console.WriteLine(&amp;quot;E-mail: &amp;quot; + attrs[&amp;quot;mail&amp;quot;][0]);&lt;br /&gt;
                // Priklad ziskania multi value&lt;br /&gt;
                Console.WriteLine(&amp;quot;Spravovane servery: &amp;quot;);&lt;br /&gt;
                foreach (string s in attrs[&amp;quot;shadmin&amp;quot;])&lt;br /&gt;
                {&lt;br /&gt;
                    Console.WriteLine(s);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                Console.WriteLine(&amp;quot;Auth failed!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            Console.Read();&lt;br /&gt;
        }&lt;br /&gt;
        static Dictionary&amp;lt;string, string[]&amp;gt; shLdap(string username, string password, string[] attrs, string filter = &amp;quot;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            try&lt;br /&gt;
            {&lt;br /&gt;
                DirectoryEntry de = new DirectoryEntry(&amp;quot;LDAP://ldap.sh.cvut.cz:636/OU=People,DC=sh,DC=cvut,DC=cz&amp;quot;,&lt;br /&gt;
                    &amp;quot;uid=&amp;quot; + username + &amp;quot;,ou=People,dc=sh,dc=cvut,dc=cz&amp;quot;, password, &lt;br /&gt;
                    AuthenticationTypes.SecureSocketsLayer);&lt;br /&gt;
                DirectorySearcher ds = new DirectorySearcher(de);&lt;br /&gt;
                if (filter == &amp;quot;&amp;quot;)&lt;br /&gt;
                    ds.Filter = &amp;quot;(uid=&amp;quot; + username + &amp;quot;)&amp;quot;;&lt;br /&gt;
                else&lt;br /&gt;
                    ds.Filter = filter;&lt;br /&gt;
                foreach (string attr in attrs)&lt;br /&gt;
                    ds.PropertiesToLoad.Add(attr);&lt;br /&gt;
                SearchResult sr = ds.FindOne();&lt;br /&gt;
&lt;br /&gt;
                Dictionary&amp;lt;string, string[]&amp;gt; res = new Dictionary&amp;lt;string, string[]&amp;gt;();&lt;br /&gt;
                foreach (string prop in sr.Properties.PropertyNames)&lt;br /&gt;
                {&lt;br /&gt;
                    var ar = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
                    foreach (object oval in sr.Properties[prop])&lt;br /&gt;
                    {&lt;br /&gt;
                        string val = &amp;quot;&amp;quot;;&lt;br /&gt;
                        if (oval is string)&lt;br /&gt;
                            val = (string)oval;&lt;br /&gt;
                        else if(oval is Byte[])&lt;br /&gt;
                            val = Encoding.UTF8.GetString((Byte[])oval, 0, ((Byte[])oval).Length);&lt;br /&gt;
                        ar.Add(val);&lt;br /&gt;
                    }&lt;br /&gt;
                    res[prop] = (string[])ar.ToArray();&lt;br /&gt;
                }&lt;br /&gt;
                return res;&lt;br /&gt;
            }&lt;br /&gt;
            catch (Exception)&lt;br /&gt;
            {&lt;br /&gt;
                return null;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux - prihlasovanie uzivatelov ==&lt;br /&gt;
&lt;br /&gt;
Navod testovany na cistej instalacii systemu Debian Squeeze&lt;br /&gt;
&lt;br /&gt;
# Splnime [[#Prerekvizita SSL]]&lt;br /&gt;
# &amp;lt;pre&amp;gt;aptitude install libnss-ldap&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Upravime &amp;quot;/etc/libnss-ldap.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
base dc=sh,dc=cvut,dc=cz&lt;br /&gt;
uri ldaps://ldap.sh.cvut.cz:636&lt;br /&gt;
rootbinddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bind_policy soft&lt;br /&gt;
binddn cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz&lt;br /&gt;
bindpw &amp;lt;heslo sdeli spravce LDAP&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Ulozime heslo auth usera do &amp;quot;/etc/libnss-ldap.secret&amp;quot; (nic ine tam nesmie byt, len retazec s heslom)&lt;br /&gt;
# Upravime &amp;quot;/etc/nsswitch.conf&amp;quot;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
passwd:         files ldap&lt;br /&gt;
shadow:         files ldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Seznam služeb a jejich správců, které LDAP používají =&lt;br /&gt;
* finance.sh [[Bronislav Robenek]]&lt;br /&gt;
* imap.sh [[Radim Roška]]&lt;br /&gt;
* zimbra.sh [[Radim Roška]]&lt;br /&gt;
* msdnaa.sh [[Michal Naiman]]&lt;br /&gt;
* git.sh [[Tomáš Srna]]&lt;br /&gt;
* news.sh [[Dominik Mališ]]&lt;br /&gt;
* shell.sh [[Václav Mach]]&lt;br /&gt;
* siliconhill.cz [[Dominik Mališ]]&lt;/div&gt;</summary>
		<author><name>Tomassrna</name></author>	</entry>

	</feed>