nginx代理或nginx服务应用程序的身份验证守护程序

nginxauthdaemon的Python项目详细描述


用于NGIX代理或NGIX服务的认证守护进程。

安装和配置

  1. 为守护进程创建虚拟环境virtualenv env
  2. 使用. ./env/bin/activate
  3. 激活它
  4. 从pypipip install nginxauthdaemon
  5. 安装nginxauthdemon
  6. 创建配置文件覆盖默认值,请参阅[守护程序配置]。nb!为了安全起见,需要重写默认值SESSION_SALTDES_IVDES_KEY
  7. setup env变量DAEMON_SETTINGS指向配置文件。
  8. 使用您喜爱的wsgi服务器运行daemon,例如gunicorn nginxauthdaemon:app
  9. 更新nginx.conf。参见[nginx configuration]。
  10. 重新加载nginx(nginx -t reload)。
  11. 测试您的设置。

守护程序配置

基本配置属性是:

OptionDescription
REALM_NAMERealm name shown on login page
SESSION_COOKIESession cookie name. Typically you do not need to change this.
TARGET_HEADERHeader used to pass protected URL from NGINX
SESSION_SALTLong string used a salt for creation of session key.
DES_IV8byte initial vector for DES algorithm
DES_KEY8byte DES encryption key
AUTHENTICATORAuthenticator class name, by default ‘auth.DummyAuthenticator’

提供现成的身份验证器:

Authenticator nameDescription
nginxauthdaemon.auth.DummyAuthenticatorSimplest authenticator checking username equals password
nginxauthdaemon.crowdauth.CrowdAuthenticatorAtlassian Crowd based authenticator

群组验证器有其他选项:

OptionDescription
CROWD_URLCrowd server URL, for ex ^{tt10}$
CROWD_APP_NAMECrowd application name
CROWD_APP_PASSWORDCrowd application password

nginx配置

你的nginx应该用ngx_http_auth_request_module编译。请使用nginx -V命令检查它。

配置示例:

upstream auth-backend {
    server 127.0.0.1:5000;
}

location = /auth/validate {
    internal;
    proxy_pass http://auth-backend;

    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
}

location = /auth/login {
    proxy_pass http://auth-backend;
    proxy_set_header X-Target $request_uri;
}

# Protected application
location / {
    auth_request /auth/validate;

    # redirect 401 and 403 to login form
    error_page 401 403 =200 /auth/login;
}

限制

守护进程可以扩展为支持LDAP或任何其他身份验证方法,但目前它只支持Atlassian群组。我很乐意将prs与新的auth方法合并。

许可证

参考实现受mit许可证约束。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何转换apache。cfx。OmeElement的头对象   java无法从SpringSource工具套件2.8.1热部署到GlassFish 3.1   从聊天中删除用户的阵列(Java)   JAVA木卫一。在安卓中解压缩时发生FileNotFoundException   java如何在活动和其他Activity创建的线程之间进行通信   java使用TimeUnit在更改JavaFX标签文本之间休眠   使用hibernate在MySql数据库表中实现java行级锁定   nextLine()扫描仪java无法正常工作(可能是因为Unicode)   java HSQLDB 2.4如何使用UNIX_MILLIS()作为BIGINT列的默认值   java如何为媒体卷更改注册ContentObserver?   JAVA木卫一。IOException:在salesforce上插入数据时,不活动的原因是必需的   java跨越了可观察对象发出的值   java在使用try and catch时播放声音