Articles of authentication

在SSL + Nginx上,rails authenticate_or_request_with_http_basic不起作用

我已经通过authenticate_or_request_with_http_basic获得了我的Rails 3应用程序中的一个动作。 在我的开发机器上工作正常,但它并没有提示生产服务器上的http_basic用户/密码。 整个生产应用程序通过https / SSL在nginx上运行。 我在哪里可以解决这个问题? http basic auth不能通过SSL工作? 还是有一个nginx设置,我需要看看? TIA

login不支持Django + nginx + uwsgi

我有相当简单的login逻辑 – 类似于官方的Django解决scheme。 class Login(FormView): template_name = 'login.html' form_class = AuthenticationForm def get(self, *args, **kwargs): if self.request.user.is_authenticated(): return self._get_success_url(self.request) return super(Login, self).get(*args, **kwargs) def form_valid(self, form): self.auth(self.request, form.get_user()) return super(Login, self).form_valid(form) def form_invalid(self, form): messages.error(self.request, u'Invalid username or password') return super(Login, self).form_invalid(form) def get_success_url(self): return self._get_success_url(self.request) @staticmethod def _get_success_url(request): if 'next' in request.GET: return request.GET['next'] […]

如何围绕第三方servlet包装Ploneauthentication?

我们正在使用Plone来提供一些第三方中间件。 不幸的是,中间件有一个特殊的servlet从Java applet中调用,并且不做任何types的authentication。 我想防火墙,并以某种方式包装身份validation,最好使用用户将在Plone上的现有会话。 我的第一个想法是configurationnginx(我们用作反向代理)来检查cookie,并且只有当用户有一个有效的会话时(代码行),才能进行代理。 但是,如何检查对Plone的会话ID,因为它全部存储在Zope数据库中? 或者,我们可以有一个Plone Python脚本,基本上通过身份validation后的一切,但我不知道如何做到这一点。 有什么build议么? 还是另类的想法?

Nginx – 设置全局auth_basic

我想用nginx为全部项目设置auth_basic。 它通过在每个项目中设置好以下工作: auth_basic "DEV restricted access"; auth_basic_user_file /var/www/passwd; 为了避免这个新项目被忘记,我想在全球范围内进行设置。 可能吗?

Nginx的basic_auth

我有设置: location / {auth_basic "Private zone";auth_basic_user_file /user/.httpasswds;} 和 location index.html {auth_basic off;} www.myserver.org/index.html工作完美没有基本的authentication对话框, 索引文件是index.html,但www.myserver.org或www.myserver.org/要求input密码。 如何解决? 谢谢。

如何防止使用nginx的auth_request指令和烧瓶应用程序看似随机的重新authentication提示?

设置: 系统应该如下: 有两个AWS负载均衡器,每个负载均运行Docker容器。 一个是私人负载均衡器,它包含一个任意的服务,应该保护它免受未经授权的访问; 另一个是面向公众的负载均衡器,它包含authentication门户。 Docker容器内部(在公共负载平衡器上)是一个监听80端口的Nginx服务器,以及8000端口上的Flask应用。 Nginx使用auth_request指令向Flask应用程序发出一个子请求(在请求中传递凭证作为标题),期待200或401响应。 Flask应用程序从请求中提取证书并检查该用户名是否已经是flask.session一部分。 如果是这样,它立即返回200响应; 否则,它会尝试对外部真相来源进行authentication。 如果成功,则将该用户添加到flask.session并且该应用程序返回200响应; 否则,它将返回一个401响应。 还有一个检查到期; 例如,如果用户login超过一个小时,应用程序应该将其从flask.session删除,并返回401响应。 用户然后可以进行新的login请求。 如果响应为200,则将stream量路由到专用负载均衡器。 用户的浏览器应该caching他们提交的证书,所以每个新的请求应该能够立即看到用户是flask.session一部分,并避免进行新的身份validation尝试。 问题: 在随机刷新或导航受保护资源时(成功validation后),有时会出现身份validationpopup窗口,用户需要再次进行validation。 他们可以提交,单个资源将被加载,然后再次提示重新进行身份validation。 例: 受保护资源是由索引页,CSS文件和三个图像组成的静态网站。 初始authentication后,用户多次刷新页面。 其中一个时间,身份validation提示将被触发。 他们将再次input他们的凭据,索引页面将加载。 他们会再次提示CSS文件,然后再为每个图像。 代码 我不知道有多less事情需要链接到这里来解决这个问题,所以我将从负责创buildauth_request子请求和后续路由的nginx文件开始,并且负责创build两个python文件进行身份validation请求和处理会话。 nginx.default server { listen 80; server_name _; location / { auth_request /auth; proxy_pass {{resource_endpoint}}; } location /auth { proxy_pass {{auth_backend}}; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI […]

自定义401页面不会提示nginx上的凭据

我有一个由auth_basic保护的网站的auth_basic : location / { auth_basic "Authorization Required"; auth_basic_user_file .htpasswd; index app.php; try_files $uri @rewriteapp; } 对于未经授权的用户(点击“取消”的用户),我想显示一个自定义的错误页面。 以下是我如何做到的: error_page 401 = @error401; location @error401 { rewrite ^ /error/401.html redirect; } location /error { expires max; add_header Pragma public; add_header Cache-Control "public"; index app.php; try_files $uri @rewriteapp; } 我不得不创build@ error401别名,所以我可以指定“redirect”,因为如果我使用内部redirect,我的应用程序将处理原始请求(并允许访问实际请求的页面!) 所以这工作正常,页面显示。 问题是,现在nginx甚至不会要求用户有凭据。 有没有什么办法解决这一问题 ? 或者有更好的方法来处理这个问题?

基本身份validation和智威汤逊

我目前正在运行一个Node.js应用程序,并提供一个API和文件服务(我知道nginx可以处理它,但是我不应该首先使用它)。 我只是简单地使用它来获得一个简单的基本身份validation,这并不是那么简单。 这是我的nginxconfiguration: upstream nodejsapp { server 127.0.0.1:1337; keepalive 15; } server { listen 80 default_server; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_redirect off; location / { proxy_pass http://nodejsapp; proxy_set_header Connection "Keep-Alive"; proxy_set_header Proxy-Connection "Keep-Alive"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; } } /etc/nginx/.htpasswd文件只是user:encryptedpassword /etc/nginx/.htpasswd 。 有了这个configuration,当我去我的IP它: 问我的用户和密码 开始加载页面 (有时)再次询问用户和密码 完成加载页面 […]

从auth_requestcaching令牌

我想从我的请求头字段授权caching令牌。 Authorization : Bearer abcdefghijklmnopqrstuvwxyz 我的目标是,我不必validationvalidation服务器上的每个请求。 如果授权令牌被caching(并且有效),则请求应该在没有validation的情况下调用API。 location /main { auth_request /auth; proxy_ignore_headers Cache-Control; proxy_pass http://API; proxy_http_version 1.1; } location /auth { internal; proxy_cache my_cache; proxy_ignore_headers Cache-Control; proxy_cache_key "$http_authorization"; proxy_pass https://validationserver; proxy_pass_request_body off; proxy_set_header Content-Length ""; } 这是我的设置,但这不起作用。 我希望你能帮助我。 问候!

nginx auth_request:访问原始查询参数

我试图找出是否有可能从原始URL转发查询参数到auth_request处理程序/服务? 用户应该能够添加API令牌作为查询参数,如下所示: https://example.com/api/user?token=237263864823674238476 : https://example.com/api/user?token=237263864823674238476 token https://example.com/api/user?token=237263864823674238476 而不是通过header或cookie 。 我可以在validation服务中以某种方式访问token参数吗? 或者用NGINX在自定义标题中写入token查询参数? 试过这个到目前为止: location = /api/user { auth_request /auth; proxy_set_header X-auth-token-from-query $arg_token; proxy_pass http://<url>; } /auth endpoint没有得到X-auth-token-from-query头,但是在返回200 ,upstream-proxy得到头。