我试图实施一种简单的单上签字方案,其中一些参与的服务器将windows(IIS)盒。它看起来像可是一个合理的路径。

这里的情景:

  • 用户登录到我SSO的服务使用自己的用户名和密码。我认证,他使用一些机制。
  • 在以后的某个时间用户希望访问A.程序
    • 用户的要求的应用程序的一个截获该SSO的服务。SSO服务使用可登录用户应用程序:
      • SSO服务命的应用程序的网页上,获取一个"WWW-Authenticate:谈判的"应答
      • SSO的服务产生"授权:谈判xxx"响应用户的名义,响应A.程序现在用户登录到应用程序A
    • SSO服务拦截随后的用户要求的应用程序,插入的授权的头到他们之前通过它们来应用程序A

那声音吗?

我需要两样东西(至少我现在能想到的):

  • 能够产生"授权:谈判xxx"令牌代表的用户,最好使用蟒蛇
  • 能够验证"授权:谈判xxx"的标题在Python(用于后一项目的一部分)
有帮助吗?

解决方案

这是什么苹果没有它 日历服务器.他们有一个 蟒蛇标记重点,然后上传 图书馆为kerberos过程的一部分,为了实施 .

看看CalendarServer/twistedcaldav/authkerb.py 服务器验证部分。Kerberos模块(这是一个c模块),没有任何有用的文档字符串,但是PyKerberos/pysrc/kerberos.py 所有功能的定义。

这里是网址svn干:
http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk
http://svn.calendarserver.org/repository/calendarserver/PyKerberos/trunk

其他提示

看看 http://spnego.sourceforge.net/credential_delegation.html 教程。这似乎是做什么的,你们试图要做。

我一直在寻找相当长的一段时间对类似的东西(在Linux),这已经导致我到这一页几次,但没有提供答案。因此,这里是我的解决方案,我想出了:

该网络服务器Apache与mod_auth_kerb.它已经在运行中的活动目录,单一登录的设置,因为相当一段时间。我已经能够做到的之前:

  • 使用的铬与单一登录在Linux上(有一个适当的krb5设置、工作kinit user@域)
  • 具有python连接和单一登录使用像从pywin32包喜欢的东西 sspi.ClientAuth("Negotiate", targetspn="http/%s" % host)

以下代码段完成后拼图(和我的需要),具有Python单上的标志与Kerberos在Linux上(使用python特定的协议消息来传送):

in_token=base64.b64decode(neg_value)
service_name = gssapi.Name("HTTP@%s" % host, gssapi.C_NT_HOSTBASED_SERVICE)
spnegoMechOid = gssapi.oids.OID.mech_from_string("1.3.6.1.5.5.2")
ctx = gssapi.InitContext(service_name,mech_type=spnegoMechOid)
out_token = ctx.step(in_token)
buffer = sspi.AuthenticationBuffer()
outStr = base64.b64encode(out_token)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top