{"id":1745,"date":"2022-03-08T21:13:02","date_gmt":"2022-03-08T12:13:02","guid":{"rendered":"https:\/\/oboki.net\/workspace\/?p=1745"},"modified":"2022-05-29T21:55:41","modified_gmt":"2022-05-29T12:55:41","slug":"installation-guide-for-openldap-using-docker","status":"publish","type":"post","link":"https:\/\/oboki.net\/workspace\/system\/installation-guide-for-openldap-using-docker\/","title":{"rendered":"[System] Docker \ub85c \uac04\ud3b8\ud558\uac8c openldap \uc11c\ubc84 \uad6c\uc131\ud558\uae30"},"content":{"rendered":"<p>\uc0ac\ub0b4 \uc6f9\uc11c\ube44\uc2a4\ub4e4\uc740 \ubb34\uc870\uac74 ldap\uc73c\ub85c \uc5f0\ub3d9\ud574\uc11c \uc0ac\uc6a9\ud574\uc57c\ud558\ub294\ub370 \ub85c\uceec\uc5d0\uc11c \uac04\ud3b8\ud558\uac8c \uad6c\uc131\ud574\uc11c \uc4f8 \uc218 \uc788\ub294 \ub3c4\ucee4 \uc774\ubbf8\uc9c0\uac00 \uc788\uc5b4 \uc815\ub9ac\ud574\ubcf8\ub2e4.<\/p>\n<p>\uc0ac\ub0b4 \uac1c\ubc1c\ub9dd\uc5d0\uc11c ldap \uacfc \uc5f0\ub3d9\ud574\uc11c \ubc14\ub85c \ud14c\uc2a4\ud2b8\ud574\ubcfc \uc218\ub3c4 \uc788\uc9c0\ub9cc \uc0ac\uc6a9\ud558\uace0\uc790 \ud558\ub294 \uc571\ub9c8\ub2e4 \uc11c\ube44\uc2a4 \ub4f1\ub85d\uc744 \ud574\uc57c\ud558\uace0 \ud1a0\ud070 \ubc1c\uae09\uc5d0 \uacb0\uc7ac \ub4f1\ub4f1 \uc2dc\uc77c\uc774 \uac78\ub824, \ube60\ub974\uace0 \uac04\ud3b8\ud55c\uac8c \ub85c\uceec\uc5d0\uc11c \ud14c\uc2a4\ud2b8 \ud574\ubcf4\ub294 \uc6a9\ub3c4\ub85c \ucc38\uace0\ud558\uba74 \uc88b\uc744 \uac83 \uac19\ub2e4.<\/p>\n<p>\uc608\uc804\uc5d0\ub294 <a href=\"https:\/\/oboki.net\/workspace\/system\/linux\/openldap-%ec%84%a4%ec%b9%98\/\">\ud55c\ub540\ud55c\ub540<\/a> <code>slapd<\/code>\ub97c \uc124\uce58\ud574\uc11c \uc37c\uc5c8\ub294\ub370 <code>osixia\/openldap<\/code> \uc774\ubbf8\uc9c0\uc5d0\uc11c \ud30c\ub77c\ubbf8\ud130\ub85c \uc138\uc138\ud55c \uc124\uc815\ub3c4 \ud560 \uc218 \uc788\uc5b4\uc11c \uc798\ud558\uba74 \uc6b4\uc601 \uc6a9\ub3c4\ub85c\ub3c4 \uc4f8 \uc218 \uc788\uc744 \uac83 \uac19\ub2e4. <code>KEEP_EXISTING_CONFIG: &quot;true&quot;<\/code> \uac12\uacfc \uc124\uc815 \ud30c\uc77c\ub4e4\uc744 docker volume \uc73c\ub85c \uc9c0\uc815\ud558\uba74 \ub450\uace0\ub450\uace0 \uc7ac\uc0ac\uc6a9\ud560 \uc218 \uc788\uc5b4\uc11c \ud55c\ubc88 \uad6c\uc131\ud574\ub450\uba74 \uacc4\uc18d \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n<h2>openldap \uc124\uce58<\/h2>\n<p>\ub2e4\uc74c\uacfc \uac19\uc774 <code>osixia<\/code> \uc5d0\uc11c \uc81c\uacf5\ud558\ub294 <code>openldap<\/code>\uacfc <code>phpldapadmin<\/code> \uc744 \uac19\uc774 \ubb36\uc5b4\uc11c <code>docker-compose.yml<\/code> \uc124\uc815\uc744 \ud558\uace0<\/p>\n<pre><code class=\"language-yml\">version: &#039;3.3&#039;\n\nservices:\n  openldap:\n    image: osixia\/openldap:1.5.0\n    container_name: openldap\n    environment:\n      LDAP_LOG_LEVEL: &quot;256&quot;\n      LDAP_ORGANISATION: &quot;oboki.net&quot;\n      LDAP_DOMAIN: &quot;auth.oboki.net&quot;\n      LDAP_BASE_DN: &quot;&quot;\n      LDAP_ADMIN_PASSWORD: &quot;admin&quot;\n      LDAP_CONFIG_PASSWORD: &quot;config&quot;\n      LDAP_RFC2307BIS_SCHEMA: &quot;false&quot;\n      LDAP_BACKEND: &quot;mdb&quot;\n      LDAP_TLS_ENFORCE: &quot;false&quot;\n      LDAP_TLS_CIPHER_SUITE: &quot;SECURE256:-VERS-SSL3.0&quot;\n      LDAP_TLS_PROTOCOL_MIN: &quot;3.1&quot;\n      LDAP_TLS_VERIFY_CLIENT: &quot;demand&quot;\n      KEEP_EXISTING_CONFIG: &quot;true&quot;\n      LDAP_REMOVE_CONFIG_AFTER_SETUP: &quot;true&quot;\n      LDAP_SSL_HELPER_PREFIX: &quot;ldap&quot;\n    tty: true\n    stdin_open: true\n    volumes:\n      - .\/mnt\/openldap\/ldap:\/var\/lib\/ldap\n      - .\/mnt\/openldap\/slapd.d:\/etc\/ldap\/slapd.d\n    ports:\n      - &quot;389:389&quot;\n      - &quot;636:636&quot;\n    domainname: &quot;auth.oboki.net&quot; # important: same as hostname\n    hostname: &quot;auth.oboki.net&quot;\n\n  phpldapadmin:\n    image: osixia\/phpldapadmin:latest\n    container_name: phpldapadmin\n    environment:\n      PHPLDAPADMIN_LDAP_HOSTS: &quot;auth.oboki.net&quot;\n      PHPLDAPADMIN_HTTPS: &quot;false&quot;\n    ports:\n      - &quot;8080:80&quot;\n    depends_on:\n      - openldap<\/code><\/pre>\n<p>\uc2e4\ud589\ub9cc \ud574\uc8fc\uba74 \uc124\uce58 \ub05d.<\/p>\n<pre><code class=\"language-bash\"># docker-compose up -d\nCreating openldap ... done\nCreating phpldapadmin ... done\n\n# docker ps\nCONTAINER ID   IMAGE                        COMMAND                 CREATED         STATUS         PORTS                                        NAMES\n07618182a576   osixia\/phpldapadmin:latest   &quot;\/container\/tool\/run&quot;   5 seconds ago   Up 3 seconds   443\/tcp, 0.0.0.0:8080-&gt;80\/tcp                phpldapadmin\ne026882e1794   osixia\/openldap:1.5.0        &quot;\/container\/tool\/run&quot;   6 seconds ago   Up 5 seconds   0.0.0.0:389-&gt;389\/tcp, 0.0.0.0:636-&gt;636\/tcp   openldap<\/code><\/pre>\n<h2>\uc0ac\uc6a9\uc790 \uc124\uc815<\/h2>\n<p><code>Organisation Unit<\/code> \uc73c\ub85c \uc870\uc9c1 \uad6c\ubd84\uacfc \uc0ac\uc6a9\uc790 \ub0b4\uc5ed\uc744 \uad00\ub9ac\ud558\ub294 \uae30\ubcf8\uc801\uc778(?) \uad6c\uc131\uc73c\ub85c \uc124\uc815\ud55c\ub2e4.<\/p>\n<h3>\ub85c\uadf8\uc778<\/h3>\n<p>\uc544\uc774\ub514\ub9cc \uc801\uc73c\uba74 \uc548\ub418\uace0 \ub3c4\uba54\uc778\uc744 \ud3ec\ud568\ud55c <code>DN<\/code> \uc73c\ub85c \uc801\uc5b4\uc57c \ud558\ub294\ub370 <code>auth.oboki.net<\/code> \uc73c\ub85c \ud638\uc2a4\ud2b8\ub97c \uc124\uc815\ud55c \uacbd\uc6b0 \ub2e4\uc74c\uacfc \uac19\uc774 \ub85c\uadf8\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<ul>\n<li>Login DN:\n<ul>\n<li><code>cn=admin,dc=auth,dc=oboki,dc=net<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Password:\n<ul>\n<li><code>admin<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653826482894.png\" alt=\"file\" \/><\/p>\n<p>\uc67c\ucabd \ud0ed\uc5d0\uc11c \uacc4\uce35\uad6c\uc870\ub97c \ud655\uc778\ud560 \uc218 \uc788\ub294\ub370 \ub2e4\uc74c\uacfc \uac19\uc774 \ud638\uc2a4\ud2b8\ub97c \uc120\ud0dd\ud558\uace0 <code>Create a child entry<\/code> \ub97c \ub20c\ub7ec <code>OU<\/code> \uc815\uc758\ub97c \uc9c4\ud589\ud55c\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653826749798.png\" alt=\"file\" \/><\/p>\n<p><code>Generic: Organisational Unit<\/code> \ud15c\ud50c\ub9bf\uc5d0\uc11c<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653826779219.png\" alt=\"file\" \/><\/p>\n<p><code>groups<\/code> \ub97c \uc785\ub825\ud55c \ub4a4 <code>Create object<\/code> -&gt; <code>Commit<\/code> \uc744 \ub20c\ub7ec \uc0dd\uc131\ud560 \uc218 \uc788\uace0<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653826828528.png\" alt=\"file\" \/><\/p>\n<p>\uac19\uc740 \ubc29\uc2dd\uc73c\ub85c <code>ou=users<\/code> \ub3c4 \uc0dd\uc131\ud574\uc900\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653826881096.png\" alt=\"file\" \/><\/p>\n<p>\uc774\uc5b4\uc11c <code>ou=groups<\/code> \uc5d0 \uc2e4\uc81c \uadf8\ub8f9 \uc5d4\ud2b8\ub9ac\ub97c \ucd94\uac00\ud574\uc8fc\uac74\ub370 ldap \uc744 \uc5f0\ub3d9\ud55c \uc571\uc5d0\uc11c \uad6c\ud604\ud55c \ubc29\uc2dd\uc5d0 \ub530\ub77c \ub2e4\ub974\uaca0\uc9c0\ub9cc \uc774 \uadf8\ub8f9\uc744 \uc5b4\ub5bb\uac8c \uc9c0\uc815\ud558\ub294\uc9c0\uc5d0 \ub530\ub77c \uc571\uc5d0\uc11c \ubc14\ub85c role\uc744 \ubd80\uc5ec\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n<p>\uc5ec\uae30\uc5d0\uc11c\ub294 \uac04\ub2e8\ud788 <code>admin<\/code> \uacfc <code>developer<\/code> \ub97c \ucd94\uac00\ud55c\ub2e4.<\/p>\n<p><code>ou=groups<\/code> \uc5d0\uc11c <code>Create a child entry<\/code> \ub97c \uc120\ud0dd\ud558\uace0<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827269310.png\" alt=\"file\" \/><\/p>\n<p><code>Generic: Posix Group<\/code> \uc744 \uc120\ud0dd\ud55c \ub4a4<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827303646.png\" alt=\"file\" \/><\/p>\n<p><code>admin<\/code> \uc774\ub77c\uace0 \uc801\uc5b4\uc8fc\uace0 Create object -&gt; Commit \uc744 \ub20c\ub7ec \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827325699.png\" alt=\"file\" \/><\/p>\n<p>\uac19\uc740 \ubc29\uc2dd\uc73c\ub85c <code>developer<\/code> \ub3c4 \ucd94\uac00\ud55c\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827358420.png\" alt=\"file\" \/><\/p>\n<p>\uc774\uc5b4\uc11c <code>ou=users<\/code> \uc5d0 \uc0ac\uc6a9\uc790 \uc5d4\ud2b8\ub9ac\ub97c \ucd94\uac00\ud55c\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827407817.png\" alt=\"file\" \/><\/p>\n<p>Custom Template \uc744 \uc815\uc758\ud574\uc11c \uc774\uba54\uc77c\uc774\ub098 \uc8fc\uc18c, \uc804\ud654\ubc88\ud638 \ub4f1\uc758 \ud544\uc694\ud55c \uc18d\uc131\ub4e4\ub9cc \uc608\uc058\uac8c \uad00\ub9ac\ud560 \uc218\ub3c4 \uc788\ub294 \uac83 \uac19\uc740\ub370 \uc5ec\uae30\uc11c\ub294 phpldapadmin \uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \uae30\ubcf8 \ud15c\ud50c\ub9bf\uc744 \uc774\uc6a9\ud55c\ub2e4.<\/p>\n<p><code>default<\/code> \ud15c\ud50c\ub9bf\uc744 \uc120\ud0dd\ud558\uace0<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827432260.png\" alt=\"file\" \/><\/p>\n<p><code>ObjectClass<\/code>\ub294 <code>inetOrgPerson<\/code> \uc744 \uc120\ud0dd\ud574\uc900\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827464090.png\" alt=\"file\" \/><\/p>\n<p><code>RDN<\/code> \uc73c\ub85c\ub294 <code>User Name (uid)<\/code> \ub97c \uc120\ud0dd\ud55c\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827634461.png\" alt=\"file\" \/><\/p>\n<p><code>cn<\/code>, <code>sn<\/code>, <code>password<\/code>, <code>User Name<\/code> \uac12\uc744 \ucc44\uc6cc\ub123\ub294\ub2e4. \uc5ec\uae30 <code>User Name<\/code> \uac12\uc774 \ub2e4\ub978 \uc11c\ube44\uc2a4\uc5d0\uc11c \ub85c\uadf8\uc778\ud560\ub54c \uc0ac\uc6a9\ub420 id \ub85c \ubcf4\ud1b5 \uc0ac\uc6a9\ub418\ubbc0\ub85c \uc8fc\uc758\ud574\uc11c \uaf2d \ucc44\uc6cc\ub193\ub3c4\ub85d \ud55c\ub2e4. \uac12\uc744 \uc62c\ubc14\ub974\uac8c \ub2e4 \uc801\uc5c8\uc73c\uba74 <code>Create object<\/code> -&gt; <code>Commit<\/code> \uc744 \ub20c\ub7ec \ub9c8\ubb34\ub9ac\ud55c\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827869806.png\" alt=\"file\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827884945.png\" alt=\"file\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827909993.png\" alt=\"file\" \/><\/p>\n<p>\uc774\uc5b4\uc11c \ubc29\uae08 \ucd94\uac00\ud55c \uc0ac\uc6a9\uc790 <code>uid=oboki<\/code> \ub97c \uad00\ub9ac\uc790 \uadf8\ub8f9 <code>cn=admin<\/code> \uc5d0 \ub4f1\ub85d\ud55c\ub2e4.<\/p>\n<p><code>Add new attribute<\/code> \ub97c \uc120\ud0dd\ud558\uace0<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653827986086.png\" alt=\"file\" \/><\/p>\n<p>memberUid \uc18d\uc131\uc744 \uc120\ud0dd\ud55c \ub4a4<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653828025986.png\" alt=\"file\" \/><\/p>\n<p>\uc774\uc804 \uc0ac\uc6a9\uc790 \ucd94\uac00\uc5d0\uc11c <code>User Name<\/code> \uc18d\uc131\uc5d0 \ucc44\uc6cc\ub123\uc5c8\ub358 <code>oboki<\/code> \ub97c \ucc44\uc6cc\ub123\uace0 <code>Update Object<\/code> \ub97c \ub20c\ub7ec \uc18d\uc131\uc744 \ucd94\uac00\ud558\uba74 \ub05d.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653828053028.png\" alt=\"file\" \/><\/p>\n<p>\uc5ec\uae30\uae4c\uc9c0 \uc644\ub8cc\ub410\uc73c\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 ldapsearch \uba85\ub839\uc73c\ub85c \uc870\ud68c\ud588\uc744\ub54c<\/p>\n<pre><code class=\"language-bash\">docker-compose exec openldap ldapsearch -x \\\n  -D &quot;cn=admin,dc=auth,dc=oboki,dc=net&quot; \\\n  -w &quot;admin&quot; \\\n  -H ldapi:\/\/\/ \\\n  -b &quot;ou=users,dc=auth,dc=oboki,dc=net&quot;<\/code><\/pre>\n<p>\ub2e4\uc74c\uacfc \uac19\uc774 <code>cn=admin<\/code> \uadf8\ub8f9\uc5d0 \ud3ec\ud568\ub41c \uc0ac\uc6a9\uc790 \ub808\ucf54\ub4dc\ub97c \uc870\ud68c\ud560 \uc218 \uc788\ub2e4.<\/p>\n<pre><code class=\"language-bash\"># extended LDIF\n#\n# LDAPv3\n# base &lt;ou=users,dc=auth,dc=oboki,dc=net&gt; with scope subtree\n# filter: (objectclass=*)\n# requesting: ALL\n#\n\n# users, auth.oboki.net\ndn: ou=users,dc=auth,dc=oboki,dc=net\nou: users\nobjectClass: organizationalUnit\nobjectClass: top\n\n# oboki, users, auth.oboki.net\ndn: uid=oboki,ou=users,dc=auth,dc=oboki,dc=net\ncn: dongil\nobjectClass: inetOrgPerson\nobjectClass: top\nuserPassword:: e01ENX1YMDNNTzFxblpkWWRneWZldUlMUG1RPT0=\nsn: kim\nuid: oboki\n\n# search result\nsearch: 2\nresult: 0 Success\n\n# numResponses: 3\n# numEntries: 2<\/code><\/pre>\n<h2>gitlab \uc5f0\ub3d9 \ud574\ubcf4\uae30<\/h2>\n<p>\uc55e\uc11c \uc124\uc815\ud55c ldap \uc73c\ub85c \uc778\uc99d\uc774 \uc798 \ub418\ub294\uc9c0 gitlab-ce \ucee8\ud14c\uc774\ub108\ub97c \uae30\ub3d9\ud574\uc11c \ud655\uc778\ud574\ubcf8\ub2e4.<\/p>\n<pre><code class=\"language-yml\">version: &#039;3.6&#039;\nservices:\n  web:\n    image: &#039;gitlab\/gitlab-ce:13.12.0-ce.0&#039;\n    restart: always\n    hostname: &#039;localhost&#039;\n    environment:\n      GITLAB_OMNIBUS_CONFIG: |\n        external_url &#039;http:\/\/host.docker.internal:5000&#039;\n    ports:\n      - &#039;5000:5000&#039;\n    volumes:\n      - &#039;.\/mnt\/gitlab\/config:\/etc\/gitlab&#039;\n      - &#039;.\/mnt\/gitlab\/logs:\/var\/log\/gitlab&#039;\n      - &#039;.\/mnt\/gitlab\/data:\/var\/opt\/gitlab&#039;\n    shm_size: &#039;256m&#039;\n    networks:\n        - openldap\n\nnetworks:\n    openldap:\n        external: true<\/code><\/pre>\n<p>\uc704\uc640 \uac19\uc774 \uae43\ub7a9 \ucee8\ud14c\uc774\ub108\ub97c \uae30\ub3d9\ud55c \ub4a4 <code>gitlab.rb<\/code> \ud30c\uc77c\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uc815\ud558\uace0 \uc7ac\uae30\ub3d9\ud574\uc8fc\uba74<\/p>\n<pre><code class=\"language-rb\">gitlab_rails[&#039;ldap_enabled&#039;] = true\n# gitlab_rails[&#039;prevent_ldap_sign_in&#039;] = false\n\n###! **remember to close this block with &#039;EOS&#039; below**\ngitlab_rails[&#039;ldap_servers&#039;] = YAML.load &lt;&lt;-&#039;EOS&#039;\n  main: # &#039;main&#039; is the GitLab &#039;provider ID&#039; of this LDAP server\n    label: &#039;LDAP&#039;\n    host: &#039;auth.oboki.net&#039;\n    port: 389\n    uid: &#039;uid&#039;\n    method: &#039;plain&#039;\n    bind_dn: &#039;cn=admin,dc=auth,dc=oboki,dc=net&#039;\n    password: &#039;admin&#039;\n    active_directory: false\n    allow_username_or_email_login: true\n    block_auto_created_users: false\n    base: &#039;ou=users,dc=auth,dc=oboki,dc=net&#039;\n    user_filter: &#039;&#039;\n    attributes:\n      username: [&#039;uid&#039;]\n      name: &#039;cn&#039;\n      last_name: &#039;sn&#039;\nEOS<\/code><\/pre>\n<p>\ub85c\uadf8\uc778 \ud654\uba74\uc5d0\uc11c ldap \uc635\uc158\uc774 \ub098\ud0c0\ub098\uace0 \uc124\uc815\ud55c \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/oboki.net\/workspace\/wp-content\/uploads\/2022\/05\/image-1653828327717.png\" alt=\"file\" \/><\/p>\n<h1>references<\/h1>\n<ul>\n<li><a href=\"https:\/\/github.com\/osixia\/docker-openldap\">https:\/\/github.com\/osixia\/docker-openldap<\/a><\/li>\n<li><a href=\"https:\/\/blog.hkwon.me\/use-openldap-part1\/\">https:\/\/blog.hkwon.me\/use-openldap-part1\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\uc0ac\ub0b4 \uc6f9\uc11c\ube44\uc2a4\ub4e4\uc740 \ubb34\uc870\uac74 ldap\uc73c\ub85c \uc5f0\ub3d9\ud574\uc11c \uc0ac\uc6a9\ud574\uc57c\ud558\ub294\ub370 \ub85c\uceec\uc5d0\uc11c \uac04\ud3b8\ud558\uac8c \uad6c\uc131\ud574\uc11c \uc4f8 \uc218 \uc788\ub294 \ub3c4\ucee4 \uc774\ubbf8\uc9c0\uac00 \uc788\uc5b4 \uc815\ub9ac\ud574\ubcf8\ub2e4. \uc0ac\ub0b4 \uac1c\ubc1c\ub9dd\uc5d0\uc11c ldap \uacfc \uc5f0\ub3d9\ud574\uc11c \ubc14\ub85c \ud14c\uc2a4\ud2b8\ud574\ubcfc \uc218\ub3c4 \uc788\uc9c0\ub9cc \uc0ac\uc6a9\ud558\uace0\uc790 \ud558\ub294 \uc571\ub9c8\ub2e4 \uc11c\ube44\uc2a4 \ub4f1\ub85d\uc744 \ud574\uc57c\ud558\uace0 \ud1a0\ud070 \ubc1c\uae09\uc5d0 \uacb0\uc7ac \ub4f1\ub4f1 \uc2dc\uc77c\uc774 \uac78\ub824, \ube60\ub974\uace0 \uac04\ud3b8\ud55c\uac8c \ub85c\uceec\uc5d0\uc11c \ud14c\uc2a4\ud2b8 \ud574\ubcf4\ub294 \uc6a9\ub3c4\ub85c \ucc38\uace0\ud558\uba74 \uc88b\uc744 \uac83 \uac19\ub2e4. \uc608\uc804\uc5d0\ub294 \ud55c\ub540\ud55c\ub540 slapd\ub97c \uc124\uce58\ud574\uc11c \uc37c\uc5c8\ub294\ub370 osixia\/openldap \uc774\ubbf8\uc9c0\uc5d0\uc11c \ud30c\ub77c\ubbf8\ud130\ub85c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[162,44],"tags":[],"class_list":["post-1745","post","type-post","status-publish","format-standard","hentry","category-docker","category-system"],"_links":{"self":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/1745","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/comments?post=1745"}],"version-history":[{"count":0,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/1745\/revisions"}],"wp:attachment":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/media?parent=1745"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/categories?post=1745"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/tags?post=1745"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}