python - 如何在 R Shiny App 中使用 LDAP 进行身份验证
问题描述
我的公司使用 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")
这是我在 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: "))
)
)
我得到的是:
函数错误(类型、msg、asError = TRUE):LDAP 本地:绑定 ldap_result 无法联系 LDAP 服务器
其中curlOptions()
有一些类似于OPT_X_TLS_REQUIRE_CERT
and的项目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 = "...."))
解决方案
推荐阅读
- java - Javadoc 忽略子包
- javascript - React 使变量随机上升一个随机值,直到达到阈值
- r - 用于生成 process_map 的 DOT 输出的 R 函数
- python - 带有 Flask 的 mySQL 连接器,如何检查连接是否打开
- powerbi - Power BI (Power Query M) 随时间序列数据的线性插值
- rust - 从 Rust 中的不同模块填充静态数组?
- php - mysql中如何根据经纬度优化这个距离查询
- python - 如何获取列表中字符串的第一个元素以及列表中的其余元素?
- python-3.x - python中的字符串扩展算法
- javascript - React Material UI 图标 onclick 无法正常工作