使用Python的SSO的SPNEGO(kerberos令牌生成/验证)

Par*_*and 8 python kerberos active-directory spnego single-sign-on

我正在尝试实现一个简单的单点登录方案,其中一些参与的服务器将是Windows(IIS)框.看起来SPNEGO是一条合理的道路.

这是场景:

  • 用户使用他的用户名和密码登录我的SSO服务.我使用某种机制来验证他.
  • 稍后用户想要访问App A.
    • 用户对App A的请求被SSO服务拦截.SSO服务使用SPNEGO将用户登录到App A:
      • SSO服务点击App A网页,获得"WWW-Authenticate:Negotiate"响应
      • SSO服务代表用户生成"授权:协商xxx"响应,响应App A.用户现在登录到App A.
    • SSO服务拦截后续用户对App A的请求,在将Authorization头传递给App A之前将其插入其中.

听起来不错吗?

我需要两件事(至少我现在能想到的):

  • 能够代表用户生成"授权:协商xxx"令牌,最好使用Python
  • 在Python中验证"授权:协商xxx"标头的能力(对于项目的后续部分)

Jim*_*imB 8

这正是Apple对其Calendar Server所做的事情.他们有一个python gssapi库,用于进程的kerberos部分,以实现SPNEGO.

在CalendarServer/twistedcaldav/authkerb.py中查找服务器身份验证部分.kerberos模块(交流模块)没有任何有用的文档字符串,但PyKerberos/pysrc/kerberos.py具有所有函数定义.

这是svn中继的网址:
http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk
http://svn.calendarserver.org/repository/calendarserver/PyKerberos/trunk