首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web2py和AFS身份验证

Web2py和AFS身份验证
EN

Stack Overflow用户
提问于 2012-10-09 09:07:24
回答 2查看 353关注 0票数 1

我想使用AFS对我的web2py应用程序的用户进行身份验证。不幸的是,pam.py模块似乎不支持AFS,只支持本地用户。有没有可能用pam来做这件事,或者我应该使用其他东西?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-10 14:44:51

使用PAM可能是您想要做的,因为web2py没有对AFS或krb5的任何内置支持。为了对非本地用户进行身份验证,您需要指定要向其进行身份验证的不同PAM服务,并修改本地PAM配置以使该服务向AFS进行身份验证。

看起来除了默认的“登录”之外,pam_auth.py模块不支持使用PAM服务,但是让它这样做或者创建自己的服务看起来很简单。你只需要这样做:

代码语言:javascript
复制
from gluon.contrib.pam import authenticate

def mypam_auth():
    def pam_auth_aux(username, password):
        return authenticate(username, password, "myservice")

auth.settings.login_methods.append(mypam_auth())

其中"myservice“只是您选择的服务名称。然后,您需要修改本地PAM配置,使"myservice“通过AFS身份验证。在Linux上,这通常意味着创建一个文件/etc/pam.d/myservice,并在其中填充PAM配置以向AFS进行身份验证。

现在大多数AFS单元使用Kerberos 5进行身份验证,因此这只意味着您需要向Kerberos 5进行身份验证,而不需要麻烦任何AFS内容(除非您想验证用户是否拥有有效的AFS帐户;但这更多的是一个授权问题,而不是身份验证问题)。下面是一些使用krb5登录设置PAM的指南和示例,例如:http://techpubs.spinlocksolutions.com/dklar/kerberos.html#PAM_configuration

您可以尝试遵循其中一个指南,但您可能只需要“auth”部分,因为您不需要担心会话和票证等所有问题。您可能只需要在/etc/pam.d/myservice中使用以下内容:

代码语言:javascript
复制
auth required pam_krb5.so no_ccache use_first_pass
auth required pam_deny.so

如果您所说的"AFS身份验证“指的是旧的基于kaserver krb4的身份验证,而不是krb5 (也就是说,您使用”klog“而不是”kinit“、”aklog“或”klog.krb5“)向AFS进行身份验证,那么您将需要使用pam_afs.so PAM模块。像这样的东西可能会起作用:

代码语言:javascript
复制
auth required pam_afs.so use_first_pass
auth required pam_deny.so

这不是很优雅,但它应该可以工作。

票数 0
EN

Stack Overflow用户

发布于 2012-10-09 09:29:46

由于web2py是基于web的,而且AFS使用Kerberos,因此您肯定需要在用户和web2py层之间传递Kerberos票证,以便让web2py以用户的名义获得AFS令牌。

您可以使用带有SPNEGO的Kerberos对浏览器进行web服务器身份验证。需要将浏览器配置为允许委派(如this example with a Java SPNEGO filter中所述)。

如果您设法在web2py应用程序中获得一次委派的Kerberos票证,那么您应该能够使用aklog来获取AFS令牌。

我对web2py不是很熟悉,但是快速浏览一下文档并没有显示出支持SPNEGO的迹象:您可能需要自己实现它。(如果您能找到支持它的现有GSS库,那么只要在浏览器和这个库之间来回传递SPNEGO令牌就可以了,前提是这个库配置正确。这在Python语言中可能有点离题,但是如果您找到一个与JGSS等价的Python,this Java/JGSS tutorial可以为您提供所需的指示。)

注意,不要为运行web2py的同一进程用户下的所有传入请求(可能来自不同用户)共享您的AFS令牌。您可能需要考虑从web2py层查看PAG(进程身份验证组)。您需要将这些进程与到达web2py的请求绑定在一起。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12791534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档