Мне удалось открыть PDF-файл, используя requests
.
Страница ищет правильное значение User-Agent
, поэтому я установил ее на Chrome MacOS.
h = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" }
r = requests.get(url, stream=True, headers=h)
И это сработало.
tmp/project/1> file metadata.pdf
metadata.pdf: PDF document, version 1.4
несколько вариантов. Если вы действительно имеете в виду LDAP, а не только Active Directory, я бы, вероятно, посмотрел на использование System.DirectoryServices.Protocols для выполнения привязки LDAP с использованием предоставленных учетных данных через защищенный канал.
Строго говоря, это не единый знак - На. SSO означает, что вам нужно отправить свои кредиты только один раз при первом входе в систему. Это просто упрощает работу пользователей, имея только один идентификатор. Как правило, для клиентов Windows в корпоративной среде с сочетанием платформ и технологий единый вход достигается с помощью клиента, добавленного к рабочему столу, который управляет аутентификацией в различных системах. В среде только для MS вы можете достичь единого входа, если все ваши веб-приложения находятся на IIS, вы используете IE и используете встроенную аутентификацию Windows, олицетворение и все такое.
Вы можете рассмотреть возможность автоматической регистрации аутентифицированного пользователя в вашей системе, если вам не требуется предварительная настройка данных профиля. Если вам действительно требуется предварительная настройка пользователей, вы можете рассмотреть возможность регулярного импорта (всех или отфильтрованного подмножества) пользователей из каталога LDAP и сохранения их в ненастроенном состоянии, чтобы администраторы выбирали из существующего списка не -конфигурированные пользователи вместо того, чтобы вводить идентификаторы. Иначе,
Как всегда, не забудьте проверить проверку подлинности, чтобы убедиться, что отправленный пароль не пуст.
Связывание с именем пользователя и без пароля считается анонимным связыванием, согласно стандарту, и похоже, что оно успешно выполнено! Когда на самом деле это действительно не так.
Это проблема для приложения, так как сервер LDAP просто следует стандарту, раздражающему стандарту, но, тем не менее, стандарту.
Вам необходимо решить, как вы планируете связать пользователя LDAP с учетной записью в вашем приложении.
Например, вы можете потребовать, чтобы имя пользователя в системе LDAP совпадало с именем пользователя в вашем приложении, или вы могли бы потребовать, чтобы кто-то явно указывал имя пользователя LDAP в каждой учетной записи пользователя в вашем приложении.
Как только вы выяснили эту ссылку, Вы можете просто выполнить привязку LDAP для проверки учетных данных пользователя.
Возможно, рассмотрим аутентификацию против авторизации
Аутентификация - какой это пользователь? Авторизация - кто должен иметь возможность использовать приложение, указанные пользователи, группы?
В настоящее время вы подразумеваете авторизацию посредством аутентификации, потому что только те, кто зарегистрирован в вашем приложении, могут использовать его.
Если вместо этого вы используете каталог вашего пользовательского хранилища данных, затем
Если вашим пользователям действительно нужен общий LDAP, то вам нужно изучить (C) ldap_connect,ldap_bind_s
(C #) LDAPConnection System.DirectoryServices.Protocols
Или еще раз вернемся к AD, это Demystified .Net App Single Sign on может помочь
The way this works in our system:
This way the user can reuse their windows domain authentication inside our app.
Вот одна полезная часть программного обеспечения, которое позволяет доступ к каталогам LDAP через Интернет, используя JSON-RPC: Json2Ldap