twisted的treq的kerberos身份验证

treq-kerberos的Python项目详细描述


使用twisted的treq进行kerberos身份验证 https://travis-ci.org/ktdreyer/treq-kerberos.svg?branch=masterhttps://badge.fury.io/py/treq-kerberos.svg

treq kerberos为treq添加kerberos(spnego/http协商)身份验证。

treq是一个类似于 使用twisted框架异步(非阻塞)发出http请求。

treq kerberos的灵感来自requests-kerberos

简单示例:发出请求

获取需要kerberos身份验证的url:

fromtreq_kerberosimportTreqKerberosAuthimporttreq_kerberosfromtwisted.internetimportdefer,reactor@defer.inlineCallbacksdefexample():url='https://errata.devel.redhat.com/'auth=TreqKerberosAuth()try:response=yieldtreq_kerberos.get(url,auth=auth)content=yieldresponse.content()print(content)exceptExceptionase:print(e)if__name__=='__main__':example().addCallback(lambdaign:reactor.stop())reactor.run()

(请参阅examples/get.py处的完整脚本)

其他http方法

treq kerberos实现了与treq相同的基本api,因此可以调用 每个http动词的方法:

@defer.inlineCallbacksdefexample():url='https://example.com/'auth=TreqKerberosAuth()data={'my':'parameter'}# HTTP GETresponse=yieldtreq_kerberos.get(url,auth=auth)# HTTP PUTresponse=yieldtreq_kerberos.put(url,data=data,auth=auth)# HTTP POSTresponse=yieldtreq_kerberos.post(url,data=data,auth=auth)# HTTP PATCHresponse=yieldtreq_kerberos.patch(url,data=data,auth=auth)# HTTP HEAD (note that content() will always be blank)response=yieldtreq_kerberos.head(url,auth=auth)# HTTP DELETEresponse=yieldtreq_kerberos.delete(url,auth=auth)

或者,您也可以调用常规的request()方法:

# HTTP GETresponse=yieldtreq_kerberos.request('GET',url,auth=auth)

抢先认证

通常,Web客户端只在 从web服务器接收http401响应。然后客户端重试 使用正确的Authentication: Negotiate ...头。

如果您知道您的web服务器将始终提示http协商 身份验证,您可以通过设置 force_preemptive=True实例化时的关键字参数 TreqKerberosAuth。(此行为与请求kerberos的 force_preemptivekwarg用于HTTPKerberosAuth

@defer.inlineCallbacksdefexample():url='https://errata.devel.redhat.com/'auth=TreqKerberosAuth(force_preemptive=True)response=yieldtreq_kerberos.get(url,auth=auth)# ...

与上游TREQ集成

在编写本文时,treq通过传递 通过authkwarg的(username, password)元组。

这个模块借用了相同的auth概念。你通过一个 TreqNegotiateAuth对象,而不是用户名和密码元组。

<>最后,TeRQ可以允许更灵活的认证设计。 适合第三方。当这个在treq上游可用时,我想要 treq kerberos模块来支持它,理想情况下最小化对 支持这种未来的过渡。

待办事项:

  • 重写以使用python gssapi而不是python kerberos(类似于 requests-gssapi)。

使用此软件包的软件包

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

推荐PyPI第三方库


热门话题
java文件分块,获取长度字节   java嵌入式Tomcat不执行jsf页面   java我的数据库中有2个实体,但hibernate返回其中6个。   java如何基于逗号拆分字符串   java取消已经运行的CompletableFutures的预期模式是什么   java如何在informix中从另一个数据库复制表ddl和数据   为什么图片是黑色的?   java根据字符串数组中的单词筛选列表   Java8的集合。平行流有效吗?   Kotlin中的java静态内部类   java如何在GUI中生成一列字符串   javafx如何正确使用高对比度主题?   带空格的javascript Httpurlconnection参数   java如何设置GridBagLayout的约束   java如何在一个线程可能尚未初始化时关闭另一个线程   java将简单时间格式转换为特殊时间格式(hhmmt)   安卓/java阵列重复过滤器的问题   java在队列的链接实现下,入队和出队是如何工作的   java更新sql外键约束