簡體   English   中英

ldap3 在 docker 容器中使用時“無法打開套接字”

[英]ldap3 'unable to open socket' when used in a docker container

我有一些代碼可以連接到我公司的 ldap 服務器,如下所示:

s = Server("ldap-server", use_ssl=True,  get_info=ALL)
c = Connection(s, user="uid=login,ou=xx,dc=xx,dc=xx ,dc=xx,dc=xx", password='xxx', auto_bind=True, check_names=True, lazy=False, raise_exceptions=False)
c.open()
c.bind()

當我自己運行腳本時它會返回預期的結果,但是當我在 docker-compose 文件中運行它時它會失敗並出現此異常:

ldap3.core.exceptions.LDAPSocketOpenError: ('unable to open socket', [(LDAPSocketOpenError('socket ssl wrapping error: [Errno 0] Error',), ('ldap-server', 636))])

我的 docker 文件非常簡單:

version: '3.2'

services:
    test:
        build: .
        command: python ldp.py 

和我的 Dockerfile:

碼頭工人文件:

FROM python:3.6 
ENV PYTHONUNBUFFERED 1
RUN mkdir /test
WORKDIR /test
COPY requirements.txt /test
RUN apt-get update && apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev
RUN pip install -r requirements.txt
COPY . /test

更重要的是,當我在其他服務器上運行相同的 docker-compose 文件/容器時,它可以成功運行,所以很明顯,這個服務器有一些不同,但我不知道要尋找什么。 與其他成功的服務器上相同的防火牆端口是開放的。 我可以調查什么來解決這個問題?

我有完全相同的問題。 就我而言,它是 nginx 容器。 我不得不使用_ssl = False,使其適用於容器。

但是有一件事,當 use_ssl=True 並且在 nginx 容器內時,仍然沒有弄清楚為什么 ldap 身份驗證適用於我們的實驗室 ldap 服務器,而不適用於 prod ldap 服務器。 我不得不使用_ssl=False 使其在實驗室和生產環境中都能正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM