ldap-auth

    This Plugin works with the Consumer object and the consumers of the API can authenticate with an LDAP server using .

    This Plugin uses lua-resty-ldap for connecting with an LDAP server.

    For Route:

    NameTypeRequiredDefaultDescription
    base_dnstringTrueBase dn of the LDAP server. For example, ou=users,dc=example,dc=org.
    ldap_uristringTrueURI of the LDAP server.
    use_tlsbooleanFalsefalseIf set to true uses TLS.
    tls_verifybooleanFalsefalseWhether to verify the server certificate when use_tls is enabled; If set to true, you must set ssl_trusted_certificate in config.yaml, and make sure the host of ldap_uri matches the host in server certificate.
    uidstringFalsecnuid attribute.

    First, you have to create a Consumer and enable the ldap-auth Plugin on it:

    1. curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
    2. {
    3. "methods": ["GET"],
    4. "uri": "/hello",
    5. "ldap-auth": {
    6. "base_dn": "ou=users,dc=example,dc=org",
    7. "ldap_uri": "localhost:1389",
    8. "uid": "cn"
    9. },
    10. "upstream": {
    11. "type": "roundrobin",
    12. "nodes": {
    13. "127.0.0.1:1980": 1
    14. }
    15. }
    16. }'

    After configuring the Plugin as mentioned above, clients can make requests with authorization to access the API:

    1. curl -i -uuser01:password1 http://127.0.0.1:9080/hello

    If an authorization header is missing or invalid, the request is denied:

    1. curl -i http://127.0.0.1:9080/hello
    1. HTTP/1.1 401 Unauthorized
    2. {"message":"Missing authorization in request"}
    1. HTTP/1.1 401 Unauthorized
    2. {"message":"Invalid user authorization"}
    1. curl -i -uuser01:passwordfalse http://127.0.0.1:9080/hello
    1. curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
    2. {
    3. "methods": ["GET"],
    4. "uri": "/hello",
    5. "plugins": {},
    6. "upstream": {
    7. "type": "roundrobin",
    8. "nodes": {
    9. "127.0.0.1:1980": 1
    10. }
    11. }'