【问题标题】:Web2py + MS SQL Server 2008 R2 + LDAP Authentication HelloWorld application?Web2py + MS SQL Server 2008 R2 + LDAP 身份验证 HelloWorld 应用程序?
【发布时间】:2011-11-01 05:35:51
【问题描述】:

一段时间以来,我一直在出色的 *nix 环境中使用 Web2py 以及用于我的个人项目的开源 RDMS(MySQL、Postgre、SQLLite 等)。

对于完全在 .Net 环境中工作的工作场所,我需要制作一个在本地 Intranet 上运行并具有身份验证和用户角色的快速 Web 应用程序(员工主数据维护)。

我计划在 web2py 上开发应用程序并将其部署在默认的火箭服务器上,但我被 DAL 卡住了。我已经尝试过 pyodbc、mssql、mssql2 适配器以及人们在 google Group 和其他论坛上所做的所有工作。

我的生产和部署环境详细信息是:

操作系统:MS Windows Server 2008
DB:MS SQL Server 2008 R2(通过 LAN 托管,使用 Windows 身份验证而不是 SQL 身份验证)
Python:2.7
WebServer:最好是 IIS 7.0,但我可以在 Rocket 上工作。

是否有任何涵盖这些主题的“HelloWorld”应用程序教程:

  1. 在 Web2py 中使用用户角色进行 Windows 域身份验证
  2. Web2py 到 MSSQLServer2008R2 DAL
  3. Web2py-IIS7.0 部署

如果有人可以帮助我,我可以在完成后将其发布为 web2py 设备。

【问题讨论】:

    标签: python windows-server-2008 sql-server-2008-r2 web2py


    【解决方案1】:

    这是一个部分答案,它只处理使用 Active Directory 的身份验证(我假设它与域身份验证相同或相似)。我不是 Windows 专家,但有本地 Windows 管理员帮助我。这是我在 web2py 中为此应用程序的 db.py 文件中放入的代码。

    if localauth:
        # I set localauth to 1 when using the app on my home lan, else 0
        # I am a consultant and not always connected to the client VPN
        # FYI, I do have a db of same type and name with same user/pw at home
        # in this case use the basic login that comes as default with web2py
        pass
    else:
        from gluon.contrib.login_methods.ldap_auth import ldap_auth
        auth.settings.login_methods = [ldap_auth(mode='ad',
                                                 server='<server ip address>',
                                                 base_dn='<base_dn>')]
        # the above line forces active directory to be the ONLY authentication method
    # my base_dn looked like this: 'OU=<ou>,DC=<subdomain>,DC=<domain>,DC=<tld e.g. com, net, edu, etc.>'
    # an active directory knowledgeable person can help you here
    

    【讨论】:

    • 注意,如果要获取AD组成员资格,需要添加额外的参数:manage_groups=True, group_member_attrib='member:1.2.840.113556.1.4.1941:'
    【解决方案2】:

    是的,Jay 对 LDAP 部分是正确的。我确实必须对 ldap_auth.py 登录方法进行一次修改,才能让它在我们的域上运行,但似乎并不是每个人都需要它。见https://groups.google.com/forum/?pli=1#!searchin/web2py/LDAP/web2py/jyFl1CXUy0s/TXld4CEdlEcJhttp://www.web2pyslices.com/slices/take_slice/145也有一个(非常简单的)操作方法

    Web2py 的 DAL 与 MSSSQL 2008 R2 配合得很好,我只需将连接放在 models.py 中

    #tell the dal where your MSSQL db is
    db = DAL('mssql://username:password@db_server/database_name')
    

    但我使用的是 SQL Server 身份验证而不是 Windows 身份验证。检查pyodbc connection string docs 似乎可以通过将 Trusted_Connection=yes 添加到您的连接字符串来实现 - 我自己还没有尝试过,可能需要修改 gluon/dal.py

    并定义你的表 - 参考官方文档http://web2py.com/book/default/chapter/06

    我不了解 IIS 部分 - 它在 web2py Google group 中出现过几次,http://www.web2pyslices.com/slices/take_slice/128 上的操作方法可能会有所帮助。就我个人而言,即使在 Windows 上,我也只是在 Apache 下运行 web2py。

    我强烈建议您在web2py's google group 上提问,您会得到更多关注。

    【讨论】:

    • 好的,经过一些测试,似乎可以让 DAL 使用 Windows 身份验证(当前登录的用户)连接到数据库。这确实需要更改 gluon/dal.py 以使其允许您跳过用户名。我会尝试将此提交给 Massimo 以包含在 web2py 中。
    • 谢谢!让我把所有这些输入放在一个完整的应用程序中,它可以作为一个 helloWorld 在企业 Intranet 环境中运行 web2p。欢迎对以上内容提出更多说明。
    • Brian,

      您有机会将此发送给 Massimo 吗?
      请将您当前的文件发送给我,其中包含对 DAL 所做的更改,以便我继续前进与项目。我没有在 Google Group 上得到回复。版主没有批准我的帖子。谢谢!
    猜你喜欢
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多