Я хочу загрузить ветку развития своего веб-сайта, чтобы я мог показать ее клиентам и провести тесты в среде, максимально приближенной к возможностям (с кодом, который может быть не готов к производству). Таким образом, я хотел бы защитить паролем этот сайт.Проверка подлинности пароля Nginx продолжает запрашивать пароль
Я разрабатываю сайт с использованием Django и использую nginx для обслуживания веб-сайта (с uWsgi). Мне удается получить приглашение для пароля применяя следующие директивы:
auth_basic "Restricted Content"; # also tried "Private Property"
auth_basic_user_file /etc/nginx/.htpasswd;
Но проблема заключается в том, что после ввода первого пароля должным образом, он продолжает запрашивать у меня для пользователя & пароля еще раз; как будто каждый вызов API должен быть аутентифицирован.
Я думаю, что проблема может быть с моим файлом конфигурации, так вот мой site.conf файл:
server {
listen 80;
server_name panel.mysite.dev;
root /path/to/my/app/front/dist;
### I've also tried 'auth_basic' here
location/{
root /path/to/my/app/front/dist;
index index.html;
auth_basic "Private Property";
auth_basic_user_file /etc/nginx/.htpasswd;
}
location /media {
rewrite ^(.*)$ http://media.mysite.dev$1;
}
location /static {
rewrite ^(.*)$ http://static.mysite.dev$1;
}
}
server {
listen 80;
server_name api.mysite.dev;
### I've also tried 'auth_basic' here
location /api {
client_max_body_size 25m;
uwsgi_pass unix:/tmp/api.mysite.dev.sock;
include /path/to/my/app/back/uwsgi_params;
}
}
server {
listen 80;
server_name media.mysite.dev;
root /path/to/my/app/media;
add_header 'Access-Control-Allow-Origin' '.*\.mysite\.[com|dev]';
location/{
root /path/to/my/app/media;
}
}
server {
listen 80;
server_name static.mysite.dev;
root /path/to/my/app/static;
if ($http_origin ~* (https?://.*\.mysite\.[com|dev](:[0-9]+)?)) {
set $cors "true";
}
location/{
if ($cors = "true") {
add_header 'Access-Control-Allow-Origin' "$http_origin";
}
}
}
Мой вопрос: Есть ли способ, чтобы вспомнить пароль введённое и позволяет авторизованным пользователям легко ориентироваться ? Или я пропустил что-то тривиальное?
EDIT: В моей Джанго settings.py
:
AUTHENTICATION_BACKENDS = (
'oauth2_provider.backends.OAuth2Backend',
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
...
REST_FRAMEWORK = {
...
DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'oauth2_provider.ext.rest_framework.OAuth2Authentication',
),
Большое спасибо заранее. Любая помощь была бы очень благодарна
Ваш сайт Django случайно использует HTTP-аутентификацию, но с другим пользователем и паролем? (Я спрашиваю, потому что вы написали «API-вызов», инфраструктура Django REST поддерживает [базовую аутентификацию] (http://www.django-rest-framework.org/api-guide/authentication/#basicauthentication)). – Phillip
Я так не думаю, но я не уверен. Я принимаю как «TokenAuthentication», так и «OAuth2Authentication» (я редактировал вопрос, добавляя параметры, связанные с проверкой подлинности, в случае, если это помогает). Это правильно? Или я могу ограничить все петиции моей конфигурацией django (а не только те, которые требуют аутентификации (которые я обрабатываю с помощью Django Rest Framework), но все, учитывая, что я вообще не хочу, чтобы сайт был открыт? – vabada
есть ваш конфликт: как базовая HTTP-аутентификация, так и «TokenAuthentication» используют заголовок «Authorization», и оба будут жаловаться, если они видят заголовок другого (что с их точки зрения недействительно). «SessionAuthentication» option? – Phillip