python gssapi包装器
PyGSSA的Python项目详细描述
已弃用
请改用“gssapi” (在pypi上,或在github上的https://github.com/pythongssapi/python-gssapi)。
Pygssapi
pygssapi为gssapi提供了低级和高级包装。 C库。在关注kerberos机制的同时,还应该 可用于其他不依赖于特定机制的gssapi机制 无法轻松转换为python的c值。
要求
- gssapi的工作实现(例如来自mit kerberos) 其中包括头文件
- c编译器(如gcc)
- flufl.enumpython包
- 鼻包(用于测试)
- 应该是包(用于测试)
安装
简单方法
$ pip install pygssapi
来自git回购协议
$ git clone https://github.com/DirectXMan12/python-gssapi.git
$ python setup.py build
$ python setup.py install
测试
我写了一些pygssapi的测试;它们生活在gssapi.tests中。 目录。当前基本的gssapi.base命令和 gssapi.client.basicgsclient已经过测试。跑步前 测试中,有效的“host/[fqdn]”(例如“host/some.domain”)必须是 kinit-ed.如果您运行tox,它将为您执行此操作(您将 可能需要运行tox和sudo)。
$ sudo tox
或
$ sudo kinit host/some.domain -k $ sudo setup.py nosetests
结构
pygssapi由两部分组成:低级的c风格包装器和 高级的、python风格的包装器(它是底层的包装器 API)。用c编写的模块用'(c)表示,而那些用c编写的模块 在python中表示为'(py)'
低水平API
低级api位于gssapi.base中。其中包含的方法 与原始gssapi c方法紧密匹配。他们 遵循给定格式:
- 名称是c方法名称的驼峰形式的版本,其中 gssapi前缀已删除
- 使用c int常量作为枚举的参数具有 定义了flufl.enum.intenum类,因此可以传递 枚举成员或整数
- 在C API中传递特定常量以表示 应改为传递默认值none。
- 在传递非整数c常量的情况下,flufl.enum.enum 类是为公共值定义的
- 主要和次要错误代码通过gssapi.base.gsserror返回
- 所有其他相关的输出值在返回中以元组形式返回 方法的值(在非错误的主要状态代码可能 返回时,将提供元组的另一个成员)
结构
- gssapi:/
- 碱:/
自动包含所有子包
- impl:(c)
- 核心c-api方法
- 状态实用程序:(c)
- 处理状态代码的实用程序
- 类型:(py)
- 枚举和异常类型
- 碱:/
自动包含所有子包
- impl:(c)
- 核心c-api方法
- 状态实用程序:(c)
- 处理状态代码的实用程序
- 类型:(py)
- 枚举和异常类型
示例
import gssapi.base as gb
TOdo(sross):提供更多示例
高级API
高级api直接位于gssapi下。班级 包含在每个文件中的目的是提供一个更为python、面向对象的 GSSAPI视图。目前,它们是为基本的gssapi任务而设计的,但是 将在未来扩展。
结构
- gssapi:/
- 客户端:(py)
basic客户端
- 基本客户机
- 能够执行基本gss协商/加密的客户端
- 基本客户机
- 一个帮助类,用于简化使用sasl gssapi的工作
- 键入包装纸:(py)
- 为一些python胶囊对象提供了有用的包装
- 客户端:(py)
basic客户端
- 基本客户机
- 能够执行基本gss协商/加密的客户端
- 基本客户机
- 一个帮助类,用于简化使用sasl gssapi的工作
- 键入包装纸:(py)
- 为一些python胶囊对象提供了有用的包装
示例
import gssapi.client as gss client = gss.BasicGSSClient('vnc@some.host', security_type='encrypted') init_token = client.setupBaseSecurityContext() # send to server, get response back... next_token = client.updateSecurityContext(server_resp) # encrypt a message msg_enc = client.encrypt('WARNING: this is secret') # send the message, get response back... msg_unenc = client.decrypt(server_encrypted_message) # freeing of resources (such as deleting the security context and releasing # the names) is handled automatically