kerberos高级接口

kerberos的Python项目详细描述


pykerberos包

https://travis-ci.org/apple/ccs-pykerberos.svg?branch=master

这个python包是kerberos(gssapi)的高级包装器 操作。目标是避免构建一个封装 整个kerberos.framework提供了 执行客户机/服务器kerberos所需操作的函数 基于<;http://www.ietf.org/rfc/rfc4559.txt>;的身份验证。

这里的大部分C代码都改编自Apache的mod_auth_kerb-5.0rc7。

构建

在此目录中,运行:

python setup.py build

测试

若要在“测试”文件夹中运行测试,必须在 测试机器。你可以使用script.travis.sh快速简单的方法 设置可用于测试的kerberos kdc和apache web端点。 否则,您还可以运行以下命令来运行自包含的docker 容器

Docker命令需要与这个库在同一个目录下运行,并且 您可以通过更改 命令中设置的pyenv环境值。

有关详细信息,请查看testing_notes.md。

重要

此库提供的checkpassword方法仅用于测试目的 不提供任何针对可能的kdc欺骗的保护。这种方法不应该用在任何 生产代码。

通道绑定

您可以使用此库通过通道绑定支持进行身份验证。渠道 绑定是标识与 身份验证。可以使用通道绑定提供有效的 身份。一些服务,如微软的扩展保护可以强制 授权时的通道绑定支持,您可以使用此库来满足 这些要求。

有关通过gssapi设置的通道绑定的更多详细信息,请参见此处 <;https://docs.oracle.com/cd/E19455-01/806-3814/overview-52/index.html>;。使用 以TLS为例,这是如何将通道绑定支持添加到 认证机制。以下代码片段基于RFC5929 <;https://tools.ietf.org/html/rfc5929>;使用“TLS服务器终结点” 键入。

importhashlibdefget_channel_bindings_application_data(socket):# This is a highly simplified example, there are other use cases# where you might need to use different hash types or get a socket# object somehow.server_certificate=socket.getpeercert(True)certificate_hash=hashlib.sha256(server_certificate).hexdigest().upper()certificate_digest=base64.b16decode(certificate_hash)application_data=b'tls-server-end-point:%s'%certificate_digestreturnapplication_datadefmain():# Code to setup a socket with the server# A lot of code to setup the handshake and start the auth processsocket=getsocketsomehow()# Connect to the host and start the auth process# Build the channel bindings objectapplication_data=get_channel_bindings_application_data(socket)channel_bindings=kerberos.channelBindings(application_data=application_data)# More work to get responses from the serverresult,context=kerberos.authGSSClientInit(kerb_spn,gssflags=gssflags,principal=principal)# Pass through the channel_bindings object as created in the kerberos.channelBindings methodresult=kerberos.authGSSClientStep(context,neg_resp_value,channel_bindings=channel_bindings)# Repeat as necessary

python api

请参见kerberos.py。

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

推荐PyPI第三方库


热门话题
java三角测距   java Spring异步任务返回未来   java如何显示数据库中的下一条记录   java这些读取用户输入的方法有什么不同?   java Spring+Spring安全请求只接受contenttype xwwwformurlencoded   checkName()和将用户输入存储到ArrayList和boolean[]的java问题   java如何使用JPA和Facade?   java Neo4j类型不匹配   java如何依赖Maven的系统包?   通过FileChooser保存pdf格式会提示在java中出现第二个对话框   java如何将通量链接到另一个通量/单声道并应用另一个背压?   java如何修复安卓 studio中的权限错误?   尝试清除JavaFX ObservableMap时出现java ConcurrentException   java编辑文本。GetText,返回关于null引用的异常,但已声明该异常   mysql组织。乔达。时间LocalDate在Redhat(Linux)java上显示少一天   在java中通过序列化获取多个对象   有人有java注释“java.lang.Synthetic”的背景吗?