LDAP
Z old-wiki.siliconhill.cz
(Rozdíly mezi verzemi)
(→Příklady použití / nastavení) |
(→Ruby - FastBind) |
||
| Řádka 101: | Řádka 101: | ||
== Ruby - FastBind == | == Ruby - FastBind == | ||
| + | |||
| + | <pre> | ||
| + | require 'rubygems' | ||
| + | require 'net/ldap' | ||
| + | require 'io/console' | ||
| + | |||
| + | puts "Username:" | ||
| + | username = gets | ||
| + | puts "Password:" | ||
| + | password = STDIN.noecho(&:gets) | ||
| + | |||
| + | ldap = Net::LDAP.new(:encryption => :simple_tls) | ||
| + | ldap.host = "ldap.sh.cvut.cz" | ||
| + | ldap.port = 636 | ||
| + | ldap.base = "ou=People,dc=sh,dc=cvut,dc=cz" | ||
| + | ldap.auth "uid=#{username.strip},"+ldap.base, password.strip | ||
| + | if ldap.bind | ||
| + | puts "authentication succeeded" | ||
| + | p ldap.search( | ||
| + | base: "ou=People,dc=sh,dc=cvut,dc=cz", | ||
| + | filter: Net::LDAP::Filter.eq("uid", username.strip), | ||
| + | attributes: %w[ givenName sn email SHservice ], | ||
| + | return_result:true | ||
| + | ).inspect | ||
| + | else | ||
| + | puts "authentication failed" | ||
| + | end | ||
| + | </pre> | ||
= Seznam služeb a jejich správců, které LDAP používají = | = Seznam služeb a jejich správců, které LDAP používají = | ||
Verze z 19. 10. 2012, 09:10
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í. LDAP na wikipedii
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.
Obsah |
Informace o serveru
- Adresa: ldap.sh.cvut.cz
- Port: 636
- Používá SSL (ldaps://)
- Správce: Tomáš Srna
- Uživatelé v ou=People,dc=sh,dc=cvut,dc=cz
- Atribút uživateľského mena: uid
- Uživatel pro servery: cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz
- Heslo na vyžádání u správce
- Overenie cez userPassword, SSHA hash
- Vo výnimočných prípadoch možnosť NTLM overenia
Autentizačné módy
- FastBind - Bind priamo užívateľom, pod ktorým sa hlási náš klient
* uid={username},ou=People,dc=sh,dc=cvut,dc=cz
* {password}
- Bind cez auth-user
* Horeuvedené údaje * Vhodné pre mnohonásobné overovanie užívateľov s použitím jediného spojenia.
Příklady použití / nastavení
LDAP Kontakty v Telefonu
iPhone Nastavení -> Pošta, Kontakty, Kalendáře -> Přidat účet -> Jiný -> "Přidat účet LDAP"
- Server: ldap.sh.cvut.cz
- Uživatel: uid=**tvůj username**,ou=People,dc=sh,dc=cvut,dc=cz
- Heslo: Tvé heslo do ISu
- Popis: ldap.sh.cvut.cz
- Použít SSL: Ano
- Kritéria hledání: dc=sh,dc=cvut,dc=cz
LDAP z příkazové řádky - ldapsearch
# Balíček aptitude install ldap-utils # ~ Fastbind (zepta se na heslo pro username) ldapsearch -h ldap.sh.cvut.cz -b "dc=sh,dc=cvut,dc=cz" -D "uid=username,ou=People,dc=sh,dc=cvut,dc=cz" -W uid=username # ~ Bind (se systémovým účtem) ldapsearch -h ldap.sh.cvut.cz -b "dc=sh,dc=cvut,dc=cz" -D "cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz" -w *heslo_auth_usera* uid=username
Zend_Auth_Adapter_Ldap
application.ini
ldap.is.host = ldap.sh.cvut.cz ldap.is.port = 636 ldap.is.useSsl = true ldap.is.useStartTls = true ldap.is.bindRequiresDn = true ldap.is.baseDn = "ou=People,dc=sh,dc=cvut,dc=cz" ldap.is.accountCanonicalForm = 2 ldap.is.username = "cn=auth-user,ou=System,dc=sh,dc=cvut,dc=cz" ldap.is.password = "********"
Přiklad přihlášení v kontextu Zend_Controller_Action, Více v dokumentaci
$auth=new Zend_Auth();
$username=$this->_getParam("username");
$password=$this->_getParam("password");
$bootstrap = $this->getInvokeArg('bootstrap');
$config=$bootstrap->getOptions();
$options = $config["ldap"];
$authAdapter=new Zend_Auth_Adapter_Ldap($options,$username,$password);
$result=$auth->authenticate($authAdapter);
if($result->isValid()) {
$ldap=$authAdapter->getLdap();
$user = $ldap->getEntry("uid=".$username.",".$options["is"]["baseDn"]);
echo "Uzivatel prihlasen";
print_r($user);
}
else {
echo "Spatne jmeno nebo heslo"
}
Ruby - FastBind
require 'rubygems'
require 'net/ldap'
require 'io/console'
puts "Username:"
username = gets
puts "Password:"
password = STDIN.noecho(&:gets)
ldap = Net::LDAP.new(:encryption => :simple_tls)
ldap.host = "ldap.sh.cvut.cz"
ldap.port = 636
ldap.base = "ou=People,dc=sh,dc=cvut,dc=cz"
ldap.auth "uid=#{username.strip},"+ldap.base, password.strip
if ldap.bind
puts "authentication succeeded"
p ldap.search(
base: "ou=People,dc=sh,dc=cvut,dc=cz",
filter: Net::LDAP::Filter.eq("uid", username.strip),
attributes: %w[ givenName sn email SHservice ],
return_result:true
).inspect
else
puts "authentication failed"
end
Seznam služeb a jejich správců, které LDAP používají
- finance.sh Bronislav Robenek
- imap.sh Radim Roška
- zimbra.sh Radim Roška
- msdnaa.sh Michal Naiman
- git.sh Tomáš Srna