SlideShare a Scribd company logo
LDAP
 Joe Atzberger, LibLime




KohaCon 2009: Plano, TX
Need LDAP Tools?
• Apache Directory Server & Studio (client)
  http://directory.apache.org/
• Open Source (Apache license)
• Newer than openldap and more stable.
• Runs on OSX, Win32 and linux.
  “We strive to increase LDAP awareness, comfort and adoption to bring
                           Modern LDAP Renaissance.”
  forth what we call the
Need LDAP Tools?

• OpenLDAP - http://www.openldap.org/
 • includes command line tools:
    ldapsearch, ldapadd, etc.
• Net::LDAP - CPAN perl module
LDAP Timing
• Koha LDAP does not go grab all your users
  as a “dump”. That is what IMPORT is for.
  Instead it updates when they try to login.
• Implications: lightweight, happening in
  realtime. Somewhat literal, no XSL or
  other conditional processing.
<ldapserver> bind
<hostname>ldap://auth.example.com:389</hostname>
<base>dc=example,dc=com</base>
<user>cn=Admin,dc=example,dc=com</user> <!-- DN, if not anonymous -->
<pass>s3cur1T</pass>              <!-- password, if not anonymous -->

  • So you can anonymous bind (not recommended)
  • Otherwise, specify user for bind
  • bind-as-auth: others have hacked Koha to do it, but not
  cleanly enough to get into HEAD. So I’m not presenting it.
<ldapserver> options
<ldapserver> options

<replicate>1</replicate><!-- add new users from LDAP to Koha database -->
<update>1</update>      <!-- update existing users in Koha database -->
<ldapserver> options

<replicate>1</replicate><!-- add new users from LDAP to Koha database -->
<update>1</update>      <!-- update existing users in Koha database -->




                      Default is ON for both.
Know your own Schema
• For example,
                                        version: 1
                                        dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com
                                        objectClass: top
                                        objectClass: person
                                        objectClass: organizationalPerson

  inetOrgPerson,                        objectClass: inetOrgPerson
                                        cn: Barbara Jensen
                                        cn: Babs Jensen

  RFC#2798:                             displayName: Babs Jensen
                                        sn: Jensen
                                        givenName: Barbara
  http://www.ietf.org/rfc/rfc2798.txt   initials: BJJ
                                        title: manager, product development
                                        uid: bjensen
                                        mail: bjensen@siroe.com
                                        telephoneNumber: +1 408 555 1862
                                        facsimileTelephoneNumber: +1 408 555 1992
                                        mobile: +1 408 555 1941
                                        roomNumber: 0209
                                        carLicense: 6ABC246
                                        o: Siroe
                                        ou: Product Development
                                        departmentNumber: 2604
                                        employeeNumber: 42
                                        employeeType: full time
                                        preferredLanguage: fr, en-gb;q=0.8, en;q=0.7
                                        labeledURI: http://www.siroe.com/users/bjensen My Home Page
version: 1
dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
displayName: Babs Jensen
sn: Jensen
givenName: Barbara
initials: BJJ
title: manager, product development
uid: bjensen
mail: bjensen@siroe.com
telephoneNumber: +1 408 555 1862
facsimileTelephoneNumber: +1 408 555 1992
mobile: +1 408 555 1941
roomNumber: 0209
carLicense: 6ABC246
o: Siroe
ou: Product Development
departmentNumber: 2604
employeeNumber: 42
employeeType: full time
preferredLanguage: fr, en-gb;q=0.8, en;q=0.7
labeledURI: http://www.siroe.com/users/bjensen My Home Page
version: 1
dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
displayName: Babs Jensen
sn: Jensen
givenName: Barbara
initials: BJJ
title: manager, product development
uid: bjensen
mail: bjensen@siroe.com
telephoneNumber: +1 408 555 1862
facsimileTelephoneNumber: +1 408 555 1992
mobile: +1 408 555 1941
roomNumber: 0209
carLicense: 6ABC246
o: Siroe
ou: Product Development
departmentNumber: 2604
employeeNumber: 42
employeeType: full time
preferredLanguage: fr, en-gb;q=0.8, en;q=0.7
labeledURI: http://www.siroe.com/users/bjensen My Home Page
version: 1
dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
displayName: Babs Jensen
sn: Jensen
givenName: Barbara
initials: BJJ
title: manager, product development
uid: bjensen
mail: bjensen@siroe.com
telephoneNumber: +1 408 555 1862
facsimileTelephoneNumber: +1 408 555 1992
mobile: +1 408 555 1941
roomNumber: 0209
carLicense: 6ABC246
o: Siroe
ou: Product Development
departmentNumber: 2604
employeeNumber: 42
employeeType: full time
preferredLanguage: fr, en-gb;q=0.8, en;q=0.7
labeledURI: http://www.siroe.com/users/bjensen My Home Page
version: 1
dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
displayName: Babs Jensen
sn: Jensen
givenName: Barbara
initials: BJJ
title: manager, product development
uid: bjensen
mail: bjensen@siroe.com
telephoneNumber: +1 408 555 1862
facsimileTelephoneNumber: +1 408 555 1992
mobile: +1 408 555 1941
roomNumber: 0209
carLicense: 6ABC246
o: Siroe
ou: Product Development
departmentNumber: 2604
employeeNumber: 42
employeeType: full time
preferredLanguage: fr, en-gb;q=0.8, en;q=0.7
labeledURI: http://www.siroe.com/users/bjensen My Home Page
version: 1
dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
                                             Pick data Koha cares about
cn: Barbara Jensen
cn: Babs Jensen
displayName: Babs Jensen
sn: Jensen
givenName: Barbara
initials: BJJ
title: manager, product development
uid: bjensen
mail: bjensen@siroe.com
telephoneNumber: +1 408 555 1862
facsimileTelephoneNumber: +1 408 555 1992
mobile: +1 408 555 1941
roomNumber: 0209
carLicense: 6ABC246
o: Siroe
ou: Product Development
departmentNumber: 2604
employeeNumber: 42
employeeType: full time
preferredLanguage: fr, en-gb;q=0.8, en;q=0.7
labeledURI: http://www.siroe.com/users/bjensen My Home Page
version: 1
dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
                                             Pick data Koha cares about
cn: Barbara Jensen
cn: Babs Jensen
displayName: Babs Jensen
sn: Jensen
givenName: Barbara
initials: BJJ
title: manager, product development
uid: bjensen
mail: bjensen@siroe.com
telephoneNumber: +1 408 555 1862
facsimileTelephoneNumber: +1 408 555 1992
mobile: +1 408 555 1941
roomNumber: 0209
carLicense: 6ABC246
o: Siroe
ou: Product Development
departmentNumber: 2604
employeeNumber: 42
employeeType: full time
preferredLanguage: fr, en-gb;q=0.8, en;q=0.7
labeledURI: http://www.siroe.com/users/bjensen My Home Page
Pick data Koha cares about
sn: Jensen
givenName: Barbara
initials: BJJ
uid: bjensen
mail: bjensen@siroe.com
telephoneNumber: +1 408 555 1862
facsimileTelephoneNumber: +1 408 555 1992
mobile: +1 408 555 1941
roomNumber: 0209
o: Siroe
departmentNumber: 2604
employeeNumber: 42
employeeType: full time
Pick data Koha cares about
sn: Jensen
givenName: Barbara
initials: BJJ
uid: bjensen
mail: bjensen@siroe.com
telephoneNumber: +1 408 555 1862
facsimileTelephoneNumber: +1 408 555 1992
mobile: +1 408 555 1941
roomNumber: 0209
o: Siroe
departmentNumber: 2604
employeeNumber: 42
employeeType: full time
Data Koha Cares About
• You define it with <ldapserver> <mapping>
  element in koha-conf.xml

• But some fields are required.
• And some of those are *really* required.
• See perldoc C4::Auth_with_ldap
The <mapping>
<mapping>
  <firstname      is=quot;givennamequot;      ></firstname>
  <surname        is=quot;snquot;             ></surname>
  <address        is=quot;postaladdressquot; ></address>
  <city           is=quot;lquot;              >Athens, OH</city>
  <zipcode        is=quot;postalcodequot;     ></zipcode>
  <branchcode     is=quot;branchquot;         >MAIN</branchcode>
  <userid         is=quot;uidquot;            ></userid>
  <password       is=quot;userpasswordquot;   ></password>
  <email          is=quot;mailquot;           ></email>
  <categorycode   is=quot;employeetypequot;   >PT</categorycode>
  <phone          is=quot;telephonenumberquot;></phone>
</mapping>
The <mapping>
<mapping>
  <firstname      is=quot;givennamequot;      ></firstname>
  <surname        is=quot;snquot;             ></surname>
  <address        is=quot;postaladdressquot; ></address>
  <city           is=quot;lquot;              >Athens, OH</city>
  <zipcode        is=quot;postalcodequot;     ></zipcode>
  <branchcode     is=quot;branchquot;         >MAIN</branchcode>
  <userid         is=quot;uidquot;            ></userid>
  <password       is=quot;userpasswordquot;   ></password>
  <email          is=quot;mailquot;           ></email>
  <categorycode   is=quot;employeetypequot;   >PT</categorycode>
  <phone          is=quot;telephonenumberquot;></phone>
</mapping>
The <mapping>
<mapping>
  <firstname      is=quot;givennamequot;      ></firstname>
  <surname        is=quot;snquot;             ></surname>
  <address        is=quot;postaladdressquot; ></address>
  <city           is=quot;lquot;              >Athens, OH</city>
  <zipcode        is=quot;postalcodequot;     ></zipcode>
  <branchcode     is=quot;branchquot;         >MAIN</branchcode>
  <userid         is=quot;uidquot;            ></userid>
  <password       is=quot;userpasswordquot;   ></password>
  <email          is=quot;mailquot;           ></email>
  <categorycode   is=quot;employeetypequot;   >PT</categorycode>
  <phone          is=quot;telephonenumberquot;></phone>
</mapping>
The <mapping>
<mapping>
  <firstname      is=quot;givennamequot;      ></firstname>
  <surname        is=quot;snquot;             ></surname>
  <address        is=quot;postaladdressquot; ></address>
  <city           is=quot;lquot;              >Athens, OH</city>
  <zipcode        is=quot;postalcodequot;     ></zipcode>
  <branchcode     is=quot;branchquot;         >MAIN</branchcode>
  <userid         is=quot;uidquot;            ></userid>
  <password       is=quot;userpasswordquot;   ></password>
  <email          is=quot;mailquot;           ></email>
  <categorycode   is=quot;employeetypequot;   >PT</categorycode>
  <phone          is=quot;telephonenumberquot;></phone>
</mapping>
The <mapping>
    <mapping>
      <firstname      is=quot;givennamequot;      ></firstname>
      <surname        is=quot;snquot;             ></surname>
      <address        is=quot;postaladdressquot; ></address>
      <city           is=quot;lquot;              >Athens, OH</city>
      <zipcode        is=quot;postalcodequot;     ></zipcode>
      <branchcode     is=quot;branchquot;         >MAIN</branchcode>
      <userid         is=quot;uidquot;            ></userid>
      <password       is=quot;userpasswordquot;   ></password>
      <email          is=quot;mailquot;           ></email>
      <categorycode   is=quot;employeetypequot;   >PT</categorycode>
      <phone          is=quot;telephonenumberquot;></phone>
    </mapping>

  Koha fields
in borrowers.*
The <mapping>
    <mapping>
      <firstname      is=quot;givennamequot;      ></firstname>
      <surname        is=quot;snquot;             ></surname>
      <address        is=quot;postaladdressquot; ></address>
      <city           is=quot;lquot;              >Athens, OH</city>
      <zipcode        is=quot;postalcodequot;     ></zipcode>
      <branchcode     is=quot;branchquot;         >MAIN</branchcode>
      <userid         is=quot;uidquot;            ></userid>
      <password       is=quot;userpasswordquot;   ></password>
      <email          is=quot;mailquot;           ></email>
      <categorycode   is=quot;employeetypequot;   >PT</categorycode>
      <phone          is=quot;telephonenumberquot;></phone>
    </mapping>

  Koha fields
in borrowers.*
The <mapping>
    <mapping>
      <firstname      is=quot;givennamequot;      ></firstname>
      <surname        is=quot;snquot;             ></surname>
      <address        is=quot;postaladdressquot; ></address>
      <city           is=quot;lquot;              >Athens, OH</city>
      <zipcode        is=quot;postalcodequot;     ></zipcode>
      <branchcode     is=quot;branchquot;         >MAIN</branchcode>
      <userid         is=quot;uidquot;            ></userid>
      <password       is=quot;userpasswordquot;   ></password>
      <email          is=quot;mailquot;           ></email>
      <categorycode   is=quot;employeetypequot;   >PT</categorycode>
      <phone          is=quot;telephonenumberquot;></phone>
    </mapping>

  Koha fields
in borrowers.*
The <mapping>
    <mapping>
      <firstname      is=quot;givennamequot;      ></firstname>
      <surname        is=quot;snquot;             ></surname>
      <address        is=quot;postaladdressquot; ></address>
      <city           is=quot;lquot;              >Athens, OH</city>
      <zipcode        is=quot;postalcodequot;     ></zipcode>
      <branchcode     is=quot;branchquot;         >MAIN</branchcode>
      <userid         is=quot;uidquot;            ></userid>
      <password       is=quot;userpasswordquot;   ></password>
      <email          is=quot;mailquot;           ></email>
      <categorycode   is=quot;employeetypequot;   >PT</categorycode>
      <phone          is=quot;telephonenumberquot;></phone>
    </mapping>

  Koha fields                 LDAP fields
in borrowers.*                in Schema
The <mapping>
   <mapping>
     <firstname      is=quot;givennamequot;      ></firstname>
     <surname        is=quot;snquot;             ></surname>
     <address        is=quot;postaladdressquot; ></address>
     <city           is=quot;lquot;              >Athens, OH</city>
     <zipcode        is=quot;postalcodequot;     ></zipcode>
     <branchcode     is=quot;branchquot;         >MAIN</branchcode>
     <userid         is=quot;uidquot;            ></userid>
     <password       is=quot;userpasswordquot;   ></password>
     <email          is=quot;mailquot;           ></email>
     <categorycode   is=quot;employeetypequot;   >PT</categorycode>
     <phone          is=quot;telephonenumberquot;></phone>
   </mapping>

  Koha fields                LDAP fields
               ==>
in borrowers.*               in Schema
The <mapping>
   <mapping>
     <firstname      is=quot;givennamequot;      ></firstname>
     <surname        is=quot;snquot;             ></surname>
     <address        is=quot;postaladdressquot; ></address>
     <city           is=quot;lquot;              >Athens, OH</city>
     <zipcode        is=quot;postalcodequot;     ></zipcode>
     <branchcode     is=quot;branchquot;         >MAIN</branchcode>
     <userid         is=quot;uidquot;            ></userid>
     <password       is=quot;userpasswordquot;   ></password>
     <email          is=quot;mailquot;           ></email>
     <categorycode   is=quot;employeetypequot;   >PT</categorycode>
     <phone          is=quot;telephonenumberquot;></phone>
   </mapping>

  Koha fields                LDAP fields
               ==>
in borrowers.*               in Schema
The <mapping>
   <mapping>
     <firstname      is=quot;givennamequot;      ></firstname>
     <surname        is=quot;snquot;             ></surname>
     <address        is=quot;postaladdressquot; ></address>
     <city           is=quot;lquot;              >Athens, OH</city>
     <zipcode        is=quot;postalcodequot;     ></zipcode>
     <branchcode     is=quot;branchquot;         >MAIN</branchcode>
     <userid         is=quot;uidquot;            ></userid>
     <password       is=quot;userpasswordquot;   ></password>
     <email          is=quot;mailquot;           ></email>
     <categorycode   is=quot;employeetypequot;   >PT</categorycode>
     <phone          is=quot;telephonenumberquot;></phone>
   </mapping>
                                                Default Values
  Koha fields                LDAP fields
               ==>
in borrowers.*               in Schema
Required Data: 3 Kinds
Required Data: 3 Kinds

• Required by database
Required Data: 3 Kinds

• Required by database
• Required for login
Required Data: 3 Kinds

• Required by database
• Required for login
• Required by you
Required by database
    mysql> show full columns from borrowers;
          -- field req`d where Null=NO

Easy:
• surname
• address
• city
Required by database
    mysql> show full columns from borrowers;
          -- field req`d where Null=NO

Easy:                     Tricky:
• surname                  • branchcode
• address                  • categorycode
• city
Required by database
    mysql> show full columns from borrowers;
          -- field req`d where Null=NO

Easy:                     Tricky:
• surname                  • branchcode
• address                  • categorycode
                      MUST MATCH VALID
• city                  KOHA VALUES
Required by login
userid:
• can come from
   from anything
• but it better be
   unique
Required by login
                     password:
userid:
                     • branchcode
• can come from
   from anything
                     • categorycode
• but it better be
   unique
The End

    LDAP
 Joe Atzberger, LibLime




KohaCon 2009: Plano, TX

More Related Content

What's hot

Nginx Reverse Proxy with Kafka.pptx
Nginx Reverse Proxy with Kafka.pptxNginx Reverse Proxy with Kafka.pptx
Nginx Reverse Proxy with Kafka.pptx
wonyong hwang
 
Common Ports .pdf
Common Ports .pdfCommon Ports .pdf
Common Ports .pdf
ssuser822927
 
flowspec @ APF 2013
flowspec @ APF 2013flowspec @ APF 2013
flowspec @ APF 2013
Tom Paseka
 
Palo alto networks next generation firewalls
Palo alto networks next generation firewallsPalo alto networks next generation firewalls
Palo alto networks next generation firewalls
Castleforce
 
PRTG NETWORK MONITORING
PRTG NETWORK MONITORINGPRTG NETWORK MONITORING
PRTG NETWORK MONITORING
Fanky Christian
 
MongoDB Shell Tips & Tricks
MongoDB Shell Tips & TricksMongoDB Shell Tips & Tricks
MongoDB Shell Tips & Tricks
MongoDB
 
Fortinet
FortinetFortinet
Fedora history 3441-3408-3437-3423
Fedora history 3441-3408-3437-3423Fedora history 3441-3408-3437-3423
Fedora history 3441-3408-3437-3423
Muhammad Saad Hassan
 
13 DHCP Configuration in Linux
13 DHCP Configuration in Linux13 DHCP Configuration in Linux
13 DHCP Configuration in Linux
Hameda Hurmat
 
Wireshark Basic Presentation
Wireshark Basic PresentationWireshark Basic Presentation
Wireshark Basic Presentation
MD. SHORIFUL ISLAM
 
Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023
Lorenzo Miniero
 
Port forwarding
Port forwardingPort forwarding
Port forwarding
Ronak Mehta
 
Snort
SnortSnort
Access Data from XPages with the Relational Controls
Access Data from XPages with the Relational ControlsAccess Data from XPages with the Relational Controls
Access Data from XPages with the Relational Controls
Teamstudio
 
Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14
panagenda
 
Wireshark
WiresharkWireshark
Wireshark
Sourav Roy
 
Brkarc 3454 - in-depth and personal with the cisco nexus 2000 fabric extender...
Brkarc 3454 - in-depth and personal with the cisco nexus 2000 fabric extender...Brkarc 3454 - in-depth and personal with the cisco nexus 2000 fabric extender...
Brkarc 3454 - in-depth and personal with the cisco nexus 2000 fabric extender...
kds850
 
Chapter10 Server Administration
Chapter10     Server  AdministrationChapter10     Server  Administration
Chapter10 Server Administration
Raja Waseem Akhtar
 
Server Monitoring from the Cloud
Server Monitoring from the CloudServer Monitoring from the Cloud
Server Monitoring from the Cloud
Site24x7
 
192.0.0.4 on android
192.0.0.4 on android192.0.0.4 on android
192.0.0.4 on android
@ otsuka752
 

What's hot (20)

Nginx Reverse Proxy with Kafka.pptx
Nginx Reverse Proxy with Kafka.pptxNginx Reverse Proxy with Kafka.pptx
Nginx Reverse Proxy with Kafka.pptx
 
Common Ports .pdf
Common Ports .pdfCommon Ports .pdf
Common Ports .pdf
 
flowspec @ APF 2013
flowspec @ APF 2013flowspec @ APF 2013
flowspec @ APF 2013
 
Palo alto networks next generation firewalls
Palo alto networks next generation firewallsPalo alto networks next generation firewalls
Palo alto networks next generation firewalls
 
PRTG NETWORK MONITORING
PRTG NETWORK MONITORINGPRTG NETWORK MONITORING
PRTG NETWORK MONITORING
 
MongoDB Shell Tips & Tricks
MongoDB Shell Tips & TricksMongoDB Shell Tips & Tricks
MongoDB Shell Tips & Tricks
 
Fortinet
FortinetFortinet
Fortinet
 
Fedora history 3441-3408-3437-3423
Fedora history 3441-3408-3437-3423Fedora history 3441-3408-3437-3423
Fedora history 3441-3408-3437-3423
 
13 DHCP Configuration in Linux
13 DHCP Configuration in Linux13 DHCP Configuration in Linux
13 DHCP Configuration in Linux
 
Wireshark Basic Presentation
Wireshark Basic PresentationWireshark Basic Presentation
Wireshark Basic Presentation
 
Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023
 
Port forwarding
Port forwardingPort forwarding
Port forwarding
 
Snort
SnortSnort
Snort
 
Access Data from XPages with the Relational Controls
Access Data from XPages with the Relational ControlsAccess Data from XPages with the Relational Controls
Access Data from XPages with the Relational Controls
 
Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14Everything You Need to Know About HCL Notes 14
Everything You Need to Know About HCL Notes 14
 
Wireshark
WiresharkWireshark
Wireshark
 
Brkarc 3454 - in-depth and personal with the cisco nexus 2000 fabric extender...
Brkarc 3454 - in-depth and personal with the cisco nexus 2000 fabric extender...Brkarc 3454 - in-depth and personal with the cisco nexus 2000 fabric extender...
Brkarc 3454 - in-depth and personal with the cisco nexus 2000 fabric extender...
 
Chapter10 Server Administration
Chapter10     Server  AdministrationChapter10     Server  Administration
Chapter10 Server Administration
 
Server Monitoring from the Cloud
Server Monitoring from the CloudServer Monitoring from the Cloud
Server Monitoring from the Cloud
 
192.0.0.4 on android
192.0.0.4 on android192.0.0.4 on android
192.0.0.4 on android
 

Viewers also liked

Koha Cronjobs
Koha CronjobsKoha Cronjobs
Koha Cronjobs
ohiocore
 
Opac customization
Opac customizationOpac customization
Opac customization
Chaudhary Ashokkumar
 
Koha presentation
Koha presentationKoha presentation
Koha presentation
BibLibre
 
Butler - Security Lessons Learned from an Ezproxy Admin
Butler - Security Lessons Learned from an Ezproxy AdminButler - Security Lessons Learned from an Ezproxy Admin
Butler - Security Lessons Learned from an Ezproxy Admin
National Information Standards Organization (NISO)
 
Carver IT Security for Librarians
Carver IT Security for LibrariansCarver IT Security for Librarians
Carver IT Security for Librarians
National Information Standards Organization (NISO)
 
Training on Koha
Training on KohaTraining on Koha
Training on Koha
Nicole C. Engard
 
The State of Library Management Systems 2016
The State of Library Management Systems 2016The State of Library Management Systems 2016
The State of Library Management Systems 2016
Ellyssa Kroski
 
120116 workforce development pull-up banner - 0987
120116   workforce development pull-up banner - 0987120116   workforce development pull-up banner - 0987
120116 workforce development pull-up banner - 0987
Gihan Lahoud
 
Pictures And Music
Pictures And  MusicPictures And  Music
Pictures And Music
Bless_India
 
ISO 9712
ISO 9712ISO 9712
ISO 9712
Olijohn
 
Wwek 1 Literacy Tues Afternoon 2009
Wwek 1 Literacy Tues Afternoon 2009Wwek 1 Literacy Tues Afternoon 2009
Wwek 1 Literacy Tues Afternoon 2009
Gihan Lahoud
 
Module 6 Powerpont Educ W200
Module 6 Powerpont Educ W200Module 6 Powerpont Educ W200
Module 6 Powerpont Educ W200
guestee4c892
 
Ch2
Ch2Ch2
Ch2
jespi
 
Restaurant
RestaurantRestaurant
Meleane Vitae and Wayne Smethurst
Meleane  Vitae and Wayne SmethurstMeleane  Vitae and Wayne Smethurst
Meleane Vitae and Wayne Smethurst
Gihan Lahoud
 
W T S Resume Workshop 03
W T S  Resume  Workshop 03W T S  Resume  Workshop 03
W T S Resume Workshop 03
lecipollo
 
A better you
A better youA better you
A better you
Nahla Elbanhawy
 
My Wish for Jacinda
My Wish for JacindaMy Wish for Jacinda
My Wish for Jacinda
jasonjohnstone
 
NCSU eLearning Certificates
NCSU eLearning CertificatesNCSU eLearning Certificates
NCSU eLearning Certificates
Ganesh Dhand
 
Logarska Valley (Logarska dolina), Slovenia images
Logarska Valley (Logarska dolina), Slovenia imagesLogarska Valley (Logarska dolina), Slovenia images
Logarska Valley (Logarska dolina), Slovenia images
Daria Perse
 

Viewers also liked (20)

Koha Cronjobs
Koha CronjobsKoha Cronjobs
Koha Cronjobs
 
Opac customization
Opac customizationOpac customization
Opac customization
 
Koha presentation
Koha presentationKoha presentation
Koha presentation
 
Butler - Security Lessons Learned from an Ezproxy Admin
Butler - Security Lessons Learned from an Ezproxy AdminButler - Security Lessons Learned from an Ezproxy Admin
Butler - Security Lessons Learned from an Ezproxy Admin
 
Carver IT Security for Librarians
Carver IT Security for LibrariansCarver IT Security for Librarians
Carver IT Security for Librarians
 
Training on Koha
Training on KohaTraining on Koha
Training on Koha
 
The State of Library Management Systems 2016
The State of Library Management Systems 2016The State of Library Management Systems 2016
The State of Library Management Systems 2016
 
120116 workforce development pull-up banner - 0987
120116   workforce development pull-up banner - 0987120116   workforce development pull-up banner - 0987
120116 workforce development pull-up banner - 0987
 
Pictures And Music
Pictures And  MusicPictures And  Music
Pictures And Music
 
ISO 9712
ISO 9712ISO 9712
ISO 9712
 
Wwek 1 Literacy Tues Afternoon 2009
Wwek 1 Literacy Tues Afternoon 2009Wwek 1 Literacy Tues Afternoon 2009
Wwek 1 Literacy Tues Afternoon 2009
 
Module 6 Powerpont Educ W200
Module 6 Powerpont Educ W200Module 6 Powerpont Educ W200
Module 6 Powerpont Educ W200
 
Ch2
Ch2Ch2
Ch2
 
Restaurant
RestaurantRestaurant
Restaurant
 
Meleane Vitae and Wayne Smethurst
Meleane  Vitae and Wayne SmethurstMeleane  Vitae and Wayne Smethurst
Meleane Vitae and Wayne Smethurst
 
W T S Resume Workshop 03
W T S  Resume  Workshop 03W T S  Resume  Workshop 03
W T S Resume Workshop 03
 
A better you
A better youA better you
A better you
 
My Wish for Jacinda
My Wish for JacindaMy Wish for Jacinda
My Wish for Jacinda
 
NCSU eLearning Certificates
NCSU eLearning CertificatesNCSU eLearning Certificates
NCSU eLearning Certificates
 
Logarska Valley (Logarska dolina), Slovenia images
Logarska Valley (Logarska dolina), Slovenia imagesLogarska Valley (Logarska dolina), Slovenia images
Logarska Valley (Logarska dolina), Slovenia images
 

Similar to Koha Integration: LDAP

DevOps and Regulatory Compliance—Like Oil and Water or Peanut Butter and Jelly?
DevOps and Regulatory Compliance—Like Oil and Water or Peanut Butter and Jelly?DevOps and Regulatory Compliance—Like Oil and Water or Peanut Butter and Jelly?
DevOps and Regulatory Compliance—Like Oil and Water or Peanut Butter and Jelly?
TechWell
 
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBuilding a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profit
Ben Limmer
 
Modernizing i5 Applications
Modernizing i5 ApplicationsModernizing i5 Applications
Modernizing i5 Applications
ZendCon
 
Minnesota User Group_July 2015
Minnesota User Group_July 2015Minnesota User Group_July 2015
Minnesota User Group_July 2015
Zack Domangue
 
Securing the Web without site-specific passwords
Securing the Web without site-specific passwordsSecuring the Web without site-specific passwords
Securing the Web without site-specific passwords
Francois Marier
 
Discover the Hidden Gems in Webtrends Analytics
Discover the Hidden Gems in Webtrends AnalyticsDiscover the Hidden Gems in Webtrends Analytics
Discover the Hidden Gems in Webtrends Analytics
Webtrends
 
Discover the Hidden Gems in Webtrends Analytics
Discover the Hidden Gems in Webtrends AnalyticsDiscover the Hidden Gems in Webtrends Analytics
Discover the Hidden Gems in Webtrends Analytics
Webtrends
 
Lessons Learned - Building YDN
Lessons Learned - Building YDNLessons Learned - Building YDN
Lessons Learned - Building YDN
Dan Theurer
 
Web 3 Scott Brinker
Web 3 Scott BrinkerWeb 3 Scott Brinker
Web 3 Scott Brinker
Mediabistro
 
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
Nordic APIs
 
Data-Driven Software Design
Data-Driven Software DesignData-Driven Software Design
Data-Driven Software Design
Patrick McKenzie
 
No Person is an Island: How Relationships Make Things Better
No Person is an Island: How Relationships Make Things BetterNo Person is an Island: How Relationships Make Things Better
No Person is an Island: How Relationships Make Things Better
Ian Glazer
 
Supliful's $1.1M pitch deck for white-label influencer supplements
Supliful's $1.1M pitch deck for white-label influencer supplementsSupliful's $1.1M pitch deck for white-label influencer supplements
Supliful's $1.1M pitch deck for white-label influencer supplements
Pitch Decks
 
AWS Startup Day Kyiv - Opening Keynote: Taking Your Startup From Zero to Hero.
AWS Startup Day Kyiv - Opening Keynote: Taking Your Startup From Zero to Hero.AWS Startup Day Kyiv - Opening Keynote: Taking Your Startup From Zero to Hero.
AWS Startup Day Kyiv - Opening Keynote: Taking Your Startup From Zero to Hero.
Amazon Web Services
 
Taking Your Customers to the Cleaners: Historical Patron Data Cleanup and Rou...
Taking Your Customers to the Cleaners: Historical Patron Data Cleanup and Rou...Taking Your Customers to the Cleaners: Historical Patron Data Cleanup and Rou...
Taking Your Customers to the Cleaners: Historical Patron Data Cleanup and Rou...
Roy Zimmer
 
Oil & Water, Peanut Butter & Jelly, DevOps & Regulatory Compliance
Oil & Water, Peanut Butter & Jelly, DevOps & Regulatory ComplianceOil & Water, Peanut Butter & Jelly, DevOps & Regulatory Compliance
Oil & Water, Peanut Butter & Jelly, DevOps & Regulatory Compliance
TechWell
 
Database repair
Database repairDatabase repair
Database repair
Tech Benders
 
C how to Program_ Nho Vĩnh Share.pdf
C how to Program_ Nho Vĩnh Share.pdfC how to Program_ Nho Vĩnh Share.pdf
C how to Program_ Nho Vĩnh Share.pdf
Nho Vĩnh
 
PHP Training Institute in Ambala ! Battra Computer Centre
PHP Training Institute in Ambala ! Battra Computer CentrePHP Training Institute in Ambala ! Battra Computer Centre
PHP Training Institute in Ambala ! Battra Computer Centre
jatin batra
 
Welcoming you to reach24 h
Welcoming you to reach24 hWelcoming you to reach24 h
Welcoming you to reach24 h
Eugenezeng
 

Similar to Koha Integration: LDAP (20)

DevOps and Regulatory Compliance—Like Oil and Water or Peanut Butter and Jelly?
DevOps and Regulatory Compliance—Like Oil and Water or Peanut Butter and Jelly?DevOps and Regulatory Compliance—Like Oil and Water or Peanut Butter and Jelly?
DevOps and Regulatory Compliance—Like Oil and Water or Peanut Butter and Jelly?
 
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBuilding a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profit
 
Modernizing i5 Applications
Modernizing i5 ApplicationsModernizing i5 Applications
Modernizing i5 Applications
 
Minnesota User Group_July 2015
Minnesota User Group_July 2015Minnesota User Group_July 2015
Minnesota User Group_July 2015
 
Securing the Web without site-specific passwords
Securing the Web without site-specific passwordsSecuring the Web without site-specific passwords
Securing the Web without site-specific passwords
 
Discover the Hidden Gems in Webtrends Analytics
Discover the Hidden Gems in Webtrends AnalyticsDiscover the Hidden Gems in Webtrends Analytics
Discover the Hidden Gems in Webtrends Analytics
 
Discover the Hidden Gems in Webtrends Analytics
Discover the Hidden Gems in Webtrends AnalyticsDiscover the Hidden Gems in Webtrends Analytics
Discover the Hidden Gems in Webtrends Analytics
 
Lessons Learned - Building YDN
Lessons Learned - Building YDNLessons Learned - Building YDN
Lessons Learned - Building YDN
 
Web 3 Scott Brinker
Web 3 Scott BrinkerWeb 3 Scott Brinker
Web 3 Scott Brinker
 
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
How I Built Bill, the AI-Powered Chatbot That Reads Our Docs for Fun , by Tod...
 
Data-Driven Software Design
Data-Driven Software DesignData-Driven Software Design
Data-Driven Software Design
 
No Person is an Island: How Relationships Make Things Better
No Person is an Island: How Relationships Make Things BetterNo Person is an Island: How Relationships Make Things Better
No Person is an Island: How Relationships Make Things Better
 
Supliful's $1.1M pitch deck for white-label influencer supplements
Supliful's $1.1M pitch deck for white-label influencer supplementsSupliful's $1.1M pitch deck for white-label influencer supplements
Supliful's $1.1M pitch deck for white-label influencer supplements
 
AWS Startup Day Kyiv - Opening Keynote: Taking Your Startup From Zero to Hero.
AWS Startup Day Kyiv - Opening Keynote: Taking Your Startup From Zero to Hero.AWS Startup Day Kyiv - Opening Keynote: Taking Your Startup From Zero to Hero.
AWS Startup Day Kyiv - Opening Keynote: Taking Your Startup From Zero to Hero.
 
Taking Your Customers to the Cleaners: Historical Patron Data Cleanup and Rou...
Taking Your Customers to the Cleaners: Historical Patron Data Cleanup and Rou...Taking Your Customers to the Cleaners: Historical Patron Data Cleanup and Rou...
Taking Your Customers to the Cleaners: Historical Patron Data Cleanup and Rou...
 
Oil & Water, Peanut Butter & Jelly, DevOps & Regulatory Compliance
Oil & Water, Peanut Butter & Jelly, DevOps & Regulatory ComplianceOil & Water, Peanut Butter & Jelly, DevOps & Regulatory Compliance
Oil & Water, Peanut Butter & Jelly, DevOps & Regulatory Compliance
 
Database repair
Database repairDatabase repair
Database repair
 
C how to Program_ Nho Vĩnh Share.pdf
C how to Program_ Nho Vĩnh Share.pdfC how to Program_ Nho Vĩnh Share.pdf
C how to Program_ Nho Vĩnh Share.pdf
 
PHP Training Institute in Ambala ! Battra Computer Centre
PHP Training Institute in Ambala ! Battra Computer CentrePHP Training Institute in Ambala ! Battra Computer Centre
PHP Training Institute in Ambala ! Battra Computer Centre
 
Welcoming you to reach24 h
Welcoming you to reach24 hWelcoming you to reach24 h
Welcoming you to reach24 h
 

Recently uploaded

Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Tatiana Kojar
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
GDSC PJATK
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Jeffrey Haguewood
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
Postman
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
Dinusha Kumarasiri
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 

Recently uploaded (20)

Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
WeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation TechniquesWeTestAthens: Postman's AI & Automation Techniques
WeTestAthens: Postman's AI & Automation Techniques
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 

Koha Integration: LDAP

  • 1. LDAP Joe Atzberger, LibLime KohaCon 2009: Plano, TX
  • 2. Need LDAP Tools? • Apache Directory Server & Studio (client) http://directory.apache.org/ • Open Source (Apache license) • Newer than openldap and more stable. • Runs on OSX, Win32 and linux. “We strive to increase LDAP awareness, comfort and adoption to bring Modern LDAP Renaissance.” forth what we call the
  • 3. Need LDAP Tools? • OpenLDAP - http://www.openldap.org/ • includes command line tools: ldapsearch, ldapadd, etc. • Net::LDAP - CPAN perl module
  • 4. LDAP Timing • Koha LDAP does not go grab all your users as a “dump”. That is what IMPORT is for. Instead it updates when they try to login. • Implications: lightweight, happening in realtime. Somewhat literal, no XSL or other conditional processing.
  • 5. <ldapserver> bind <hostname>ldap://auth.example.com:389</hostname> <base>dc=example,dc=com</base> <user>cn=Admin,dc=example,dc=com</user> <!-- DN, if not anonymous --> <pass>s3cur1T</pass> <!-- password, if not anonymous --> • So you can anonymous bind (not recommended) • Otherwise, specify user for bind • bind-as-auth: others have hacked Koha to do it, but not cleanly enough to get into HEAD. So I’m not presenting it.
  • 7. <ldapserver> options <replicate>1</replicate><!-- add new users from LDAP to Koha database --> <update>1</update> <!-- update existing users in Koha database -->
  • 8. <ldapserver> options <replicate>1</replicate><!-- add new users from LDAP to Koha database --> <update>1</update> <!-- update existing users in Koha database --> Default is ON for both.
  • 9. Know your own Schema • For example, version: 1 dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com objectClass: top objectClass: person objectClass: organizationalPerson inetOrgPerson, objectClass: inetOrgPerson cn: Barbara Jensen cn: Babs Jensen RFC#2798: displayName: Babs Jensen sn: Jensen givenName: Barbara http://www.ietf.org/rfc/rfc2798.txt initials: BJJ title: manager, product development uid: bjensen mail: bjensen@siroe.com telephoneNumber: +1 408 555 1862 facsimileTelephoneNumber: +1 408 555 1992 mobile: +1 408 555 1941 roomNumber: 0209 carLicense: 6ABC246 o: Siroe ou: Product Development departmentNumber: 2604 employeeNumber: 42 employeeType: full time preferredLanguage: fr, en-gb;q=0.8, en;q=0.7 labeledURI: http://www.siroe.com/users/bjensen My Home Page
  • 10. version: 1 dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: Barbara Jensen cn: Babs Jensen displayName: Babs Jensen sn: Jensen givenName: Barbara initials: BJJ title: manager, product development uid: bjensen mail: bjensen@siroe.com telephoneNumber: +1 408 555 1862 facsimileTelephoneNumber: +1 408 555 1992 mobile: +1 408 555 1941 roomNumber: 0209 carLicense: 6ABC246 o: Siroe ou: Product Development departmentNumber: 2604 employeeNumber: 42 employeeType: full time preferredLanguage: fr, en-gb;q=0.8, en;q=0.7 labeledURI: http://www.siroe.com/users/bjensen My Home Page
  • 11. version: 1 dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: Barbara Jensen cn: Babs Jensen displayName: Babs Jensen sn: Jensen givenName: Barbara initials: BJJ title: manager, product development uid: bjensen mail: bjensen@siroe.com telephoneNumber: +1 408 555 1862 facsimileTelephoneNumber: +1 408 555 1992 mobile: +1 408 555 1941 roomNumber: 0209 carLicense: 6ABC246 o: Siroe ou: Product Development departmentNumber: 2604 employeeNumber: 42 employeeType: full time preferredLanguage: fr, en-gb;q=0.8, en;q=0.7 labeledURI: http://www.siroe.com/users/bjensen My Home Page
  • 12. version: 1 dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: Barbara Jensen cn: Babs Jensen displayName: Babs Jensen sn: Jensen givenName: Barbara initials: BJJ title: manager, product development uid: bjensen mail: bjensen@siroe.com telephoneNumber: +1 408 555 1862 facsimileTelephoneNumber: +1 408 555 1992 mobile: +1 408 555 1941 roomNumber: 0209 carLicense: 6ABC246 o: Siroe ou: Product Development departmentNumber: 2604 employeeNumber: 42 employeeType: full time preferredLanguage: fr, en-gb;q=0.8, en;q=0.7 labeledURI: http://www.siroe.com/users/bjensen My Home Page
  • 13. version: 1 dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: Barbara Jensen cn: Babs Jensen displayName: Babs Jensen sn: Jensen givenName: Barbara initials: BJJ title: manager, product development uid: bjensen mail: bjensen@siroe.com telephoneNumber: +1 408 555 1862 facsimileTelephoneNumber: +1 408 555 1992 mobile: +1 408 555 1941 roomNumber: 0209 carLicense: 6ABC246 o: Siroe ou: Product Development departmentNumber: 2604 employeeNumber: 42 employeeType: full time preferredLanguage: fr, en-gb;q=0.8, en;q=0.7 labeledURI: http://www.siroe.com/users/bjensen My Home Page
  • 14. version: 1 dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson Pick data Koha cares about cn: Barbara Jensen cn: Babs Jensen displayName: Babs Jensen sn: Jensen givenName: Barbara initials: BJJ title: manager, product development uid: bjensen mail: bjensen@siroe.com telephoneNumber: +1 408 555 1862 facsimileTelephoneNumber: +1 408 555 1992 mobile: +1 408 555 1941 roomNumber: 0209 carLicense: 6ABC246 o: Siroe ou: Product Development departmentNumber: 2604 employeeNumber: 42 employeeType: full time preferredLanguage: fr, en-gb;q=0.8, en;q=0.7 labeledURI: http://www.siroe.com/users/bjensen My Home Page
  • 15. version: 1 dn: cn=Barbara Jensen,ou=Product Development,dc=siroe,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson Pick data Koha cares about cn: Barbara Jensen cn: Babs Jensen displayName: Babs Jensen sn: Jensen givenName: Barbara initials: BJJ title: manager, product development uid: bjensen mail: bjensen@siroe.com telephoneNumber: +1 408 555 1862 facsimileTelephoneNumber: +1 408 555 1992 mobile: +1 408 555 1941 roomNumber: 0209 carLicense: 6ABC246 o: Siroe ou: Product Development departmentNumber: 2604 employeeNumber: 42 employeeType: full time preferredLanguage: fr, en-gb;q=0.8, en;q=0.7 labeledURI: http://www.siroe.com/users/bjensen My Home Page
  • 16. Pick data Koha cares about sn: Jensen givenName: Barbara initials: BJJ uid: bjensen mail: bjensen@siroe.com telephoneNumber: +1 408 555 1862 facsimileTelephoneNumber: +1 408 555 1992 mobile: +1 408 555 1941 roomNumber: 0209 o: Siroe departmentNumber: 2604 employeeNumber: 42 employeeType: full time
  • 17. Pick data Koha cares about sn: Jensen givenName: Barbara initials: BJJ uid: bjensen mail: bjensen@siroe.com telephoneNumber: +1 408 555 1862 facsimileTelephoneNumber: +1 408 555 1992 mobile: +1 408 555 1941 roomNumber: 0209 o: Siroe departmentNumber: 2604 employeeNumber: 42 employeeType: full time
  • 18. Data Koha Cares About • You define it with <ldapserver> <mapping> element in koha-conf.xml • But some fields are required. • And some of those are *really* required. • See perldoc C4::Auth_with_ldap
  • 19. The <mapping> <mapping> <firstname is=quot;givennamequot; ></firstname> <surname is=quot;snquot; ></surname> <address is=quot;postaladdressquot; ></address> <city is=quot;lquot; >Athens, OH</city> <zipcode is=quot;postalcodequot; ></zipcode> <branchcode is=quot;branchquot; >MAIN</branchcode> <userid is=quot;uidquot; ></userid> <password is=quot;userpasswordquot; ></password> <email is=quot;mailquot; ></email> <categorycode is=quot;employeetypequot; >PT</categorycode> <phone is=quot;telephonenumberquot;></phone> </mapping>
  • 20. The <mapping> <mapping> <firstname is=quot;givennamequot; ></firstname> <surname is=quot;snquot; ></surname> <address is=quot;postaladdressquot; ></address> <city is=quot;lquot; >Athens, OH</city> <zipcode is=quot;postalcodequot; ></zipcode> <branchcode is=quot;branchquot; >MAIN</branchcode> <userid is=quot;uidquot; ></userid> <password is=quot;userpasswordquot; ></password> <email is=quot;mailquot; ></email> <categorycode is=quot;employeetypequot; >PT</categorycode> <phone is=quot;telephonenumberquot;></phone> </mapping>
  • 21. The <mapping> <mapping> <firstname is=quot;givennamequot; ></firstname> <surname is=quot;snquot; ></surname> <address is=quot;postaladdressquot; ></address> <city is=quot;lquot; >Athens, OH</city> <zipcode is=quot;postalcodequot; ></zipcode> <branchcode is=quot;branchquot; >MAIN</branchcode> <userid is=quot;uidquot; ></userid> <password is=quot;userpasswordquot; ></password> <email is=quot;mailquot; ></email> <categorycode is=quot;employeetypequot; >PT</categorycode> <phone is=quot;telephonenumberquot;></phone> </mapping>
  • 22. The <mapping> <mapping> <firstname is=quot;givennamequot; ></firstname> <surname is=quot;snquot; ></surname> <address is=quot;postaladdressquot; ></address> <city is=quot;lquot; >Athens, OH</city> <zipcode is=quot;postalcodequot; ></zipcode> <branchcode is=quot;branchquot; >MAIN</branchcode> <userid is=quot;uidquot; ></userid> <password is=quot;userpasswordquot; ></password> <email is=quot;mailquot; ></email> <categorycode is=quot;employeetypequot; >PT</categorycode> <phone is=quot;telephonenumberquot;></phone> </mapping>
  • 23. The <mapping> <mapping> <firstname is=quot;givennamequot; ></firstname> <surname is=quot;snquot; ></surname> <address is=quot;postaladdressquot; ></address> <city is=quot;lquot; >Athens, OH</city> <zipcode is=quot;postalcodequot; ></zipcode> <branchcode is=quot;branchquot; >MAIN</branchcode> <userid is=quot;uidquot; ></userid> <password is=quot;userpasswordquot; ></password> <email is=quot;mailquot; ></email> <categorycode is=quot;employeetypequot; >PT</categorycode> <phone is=quot;telephonenumberquot;></phone> </mapping> Koha fields in borrowers.*
  • 24. The <mapping> <mapping> <firstname is=quot;givennamequot; ></firstname> <surname is=quot;snquot; ></surname> <address is=quot;postaladdressquot; ></address> <city is=quot;lquot; >Athens, OH</city> <zipcode is=quot;postalcodequot; ></zipcode> <branchcode is=quot;branchquot; >MAIN</branchcode> <userid is=quot;uidquot; ></userid> <password is=quot;userpasswordquot; ></password> <email is=quot;mailquot; ></email> <categorycode is=quot;employeetypequot; >PT</categorycode> <phone is=quot;telephonenumberquot;></phone> </mapping> Koha fields in borrowers.*
  • 25. The <mapping> <mapping> <firstname is=quot;givennamequot; ></firstname> <surname is=quot;snquot; ></surname> <address is=quot;postaladdressquot; ></address> <city is=quot;lquot; >Athens, OH</city> <zipcode is=quot;postalcodequot; ></zipcode> <branchcode is=quot;branchquot; >MAIN</branchcode> <userid is=quot;uidquot; ></userid> <password is=quot;userpasswordquot; ></password> <email is=quot;mailquot; ></email> <categorycode is=quot;employeetypequot; >PT</categorycode> <phone is=quot;telephonenumberquot;></phone> </mapping> Koha fields in borrowers.*
  • 26. The <mapping> <mapping> <firstname is=quot;givennamequot; ></firstname> <surname is=quot;snquot; ></surname> <address is=quot;postaladdressquot; ></address> <city is=quot;lquot; >Athens, OH</city> <zipcode is=quot;postalcodequot; ></zipcode> <branchcode is=quot;branchquot; >MAIN</branchcode> <userid is=quot;uidquot; ></userid> <password is=quot;userpasswordquot; ></password> <email is=quot;mailquot; ></email> <categorycode is=quot;employeetypequot; >PT</categorycode> <phone is=quot;telephonenumberquot;></phone> </mapping> Koha fields LDAP fields in borrowers.* in Schema
  • 27. The <mapping> <mapping> <firstname is=quot;givennamequot; ></firstname> <surname is=quot;snquot; ></surname> <address is=quot;postaladdressquot; ></address> <city is=quot;lquot; >Athens, OH</city> <zipcode is=quot;postalcodequot; ></zipcode> <branchcode is=quot;branchquot; >MAIN</branchcode> <userid is=quot;uidquot; ></userid> <password is=quot;userpasswordquot; ></password> <email is=quot;mailquot; ></email> <categorycode is=quot;employeetypequot; >PT</categorycode> <phone is=quot;telephonenumberquot;></phone> </mapping> Koha fields LDAP fields ==> in borrowers.* in Schema
  • 28. The <mapping> <mapping> <firstname is=quot;givennamequot; ></firstname> <surname is=quot;snquot; ></surname> <address is=quot;postaladdressquot; ></address> <city is=quot;lquot; >Athens, OH</city> <zipcode is=quot;postalcodequot; ></zipcode> <branchcode is=quot;branchquot; >MAIN</branchcode> <userid is=quot;uidquot; ></userid> <password is=quot;userpasswordquot; ></password> <email is=quot;mailquot; ></email> <categorycode is=quot;employeetypequot; >PT</categorycode> <phone is=quot;telephonenumberquot;></phone> </mapping> Koha fields LDAP fields ==> in borrowers.* in Schema
  • 29. The <mapping> <mapping> <firstname is=quot;givennamequot; ></firstname> <surname is=quot;snquot; ></surname> <address is=quot;postaladdressquot; ></address> <city is=quot;lquot; >Athens, OH</city> <zipcode is=quot;postalcodequot; ></zipcode> <branchcode is=quot;branchquot; >MAIN</branchcode> <userid is=quot;uidquot; ></userid> <password is=quot;userpasswordquot; ></password> <email is=quot;mailquot; ></email> <categorycode is=quot;employeetypequot; >PT</categorycode> <phone is=quot;telephonenumberquot;></phone> </mapping> Default Values Koha fields LDAP fields ==> in borrowers.* in Schema
  • 31. Required Data: 3 Kinds • Required by database
  • 32. Required Data: 3 Kinds • Required by database • Required for login
  • 33. Required Data: 3 Kinds • Required by database • Required for login • Required by you
  • 34. Required by database mysql> show full columns from borrowers; -- field req`d where Null=NO Easy: • surname • address • city
  • 35. Required by database mysql> show full columns from borrowers; -- field req`d where Null=NO Easy: Tricky: • surname • branchcode • address • categorycode • city
  • 36. Required by database mysql> show full columns from borrowers; -- field req`d where Null=NO Easy: Tricky: • surname • branchcode • address • categorycode MUST MATCH VALID • city KOHA VALUES
  • 37. Required by login userid: • can come from from anything • but it better be unique
  • 38. Required by login password: userid: • branchcode • can come from from anything • categorycode • but it better be unique
  • 39. The End LDAP Joe Atzberger, LibLime KohaCon 2009: Plano, TX