Was*_*amo 5 python r ldap shiny
我的公司使用 LDAP 服务器对 Active Directory 进行身份验证。我需要使用它对远程托管的 Shiny 应用程序的用户进行身份验证。我设法在 Python 中进行了身份验证,但需要将其移植到 R:
import ldap
from getpass import getpass
username = "user_name"
password = getpass(prompt='Password: ', stream=None)
ldap_server = "ldap://company-ldap-server:636"
try:
# Create connection with LDAP server and set options
conn = ldap.initialize(ldap_server)
conn.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
conn.set_option(ldap.OPT_X_TLS_NEWCTX, 0)
# Authenticate by trying to connect
conn.simple_bind_s(username, password)
# Retrieve this user's name and email (for authorization)
info = conn.search_s("DC=ad,DC=company,DC=com", ldap.SCOPE_SUBTREE, f"cn={username}*")
conn.unbind_s()
except Exception:
print("ERROR: Could not connect")
Run Code Online (Sandbox Code Playgroud)
这是我在 R 中尝试过的:
library(RCurl)
ldap_server <- "ldap://company-ldap-server:636"
user <- "user_name"
RCurl::getURL(ldap_server, .opts=list(userpwd = paste0(user, "@ad.company.com:",
.rs.askForPassword("Password: "))
)
)
Run Code Online (Sandbox Code Playgroud)
我得到的是:
函数错误(类型、味精、asError = TRUE):LDAP 本地:绑定 ldap_result 无法联系 LDAP 服务器
在curlOptions()有一些项目相似,OPT_X_TLS_REQUIRE_CERT和OPT_X_TLS_NEWCTX,但curlSetOpts在使用这些名字似乎并不工作。
这个问题和答案很接近,但我想通过安全地传递用户名和密码来对用户进行身份验证。
在这个答案中,他们试图将 Shiny LDAP 转换为烧瓶(基本上与我的相反)。但我不确定他们在哪里/如何指定该auth_active_dir配置......也许是 R Studio Connect 或 Shiny Open Server Pro。这两个都不是我的选择。
可能是服务器此时已关闭。同时,这些是等效的还是我在 R 代码中遗漏了什么?
# Python
conn = ldap.initialize(ldap_server)
conn.simple_bind_s(username, password)
# R
getURL(ldap_server, .opts=list(userpwd = "...."))
Run Code Online (Sandbox Code Playgroud)
您的 url (ldap_server) 格式不够。您尝试一下:按照此处的帖子:How do I run a ldap query using R?
ldap_server <- "ldap://company-ldap-server:636/OU=[value],dc=ad,dc=company,dc=com?cn,mail?sub?filter"
Run Code Online (Sandbox Code Playgroud)
查看https://docs.oracle.com/cd/E19396-01/817-7616/ldurl.html了解curl url。
| 归档时间: |
|
| 查看次数: |
1994 次 |
| 最近记录: |