python请求的kerberos身份验证处理程序

requests-kerberos的Python项目详细描述


请求kerberos/gssapi身份验证库

https://travis-ci.org/requests/requests-kerberos.svg?branch=masterhttps://coveralls.io/repos/github/requests/requests-kerberos/badge.svg?branch=master

请求是一个http库,用python编写,面向人类。这个图书馆 添加可选的kerberos/gssapi身份验证支持并支持mutual 身份验证。基本get用法:

>>>importrequests>>>fromrequests_kerberosimportHTTPKerberosAuth>>>r=requests.get("http://example.org",auth=HTTPKerberosAuth())...

应支持整个 请求.api

身份验证失败

客户端身份验证失败将通过返回 401响应。

相互认证

必需的

默认情况下, httpkerberosauth 将需要来自 如果服务器发出非错误响应,则 已验证,a 请求kerberos.errors.mutualauthenticationerror 将 提高。如果服务器发出无法验证的错误,它将 返回给用户,但其内容和标题被剥离。如果 响应内容比相互验证错误的需要更重要, (例如,对于某些winrm调用)剥离行为可以通过 设置 清除相互错误响应=假

>>>importrequests>>>fromrequests_kerberosimportHTTPKerberosAuth,REQUIRED>>>kerberos_auth=HTTPKerberosAuth(mutual_authentication=REQUIRED,sanitize_mutual_error_response=False)>>>r=requests.get("https://windows.example.org/wsman",auth=kerberos_auth)...

可选

如果不需要相互验证,可以设置 构造 httpkerberosauth 对象时的首选项:

>>>importrequests>>>fromrequests_kerberosimportHTTPKerberosAuth,OPTIONAL>>>kerberos_auth=HTTPKerberosAuth(mutual_authentication=OPTIONAL)>>>r=requests.get("http://example.org",auth=kerberos_auth)...

如果 服务器通知它支持它,如果身份验证失败 失败,但如果服务器根本不支持它,则不会。

禁用

但我们不推荐,如果你不想尝试 身份验证,您也可以这样做:

>>>importrequests>>>fromrequests_kerberosimportHTTPKerberosAuth,DISABLED>>>kerberos_auth=HTTPKerberosAuth(mutual_authentication=DISABLED)>>>r=requests.get("http://example.org",auth=kerberos_auth)...

抢先认证

可以强制httpkerberosauth预先启动kerberos GSS交换并在初始请求(以及所有 随后)。默认情况下,身份验证仅在 401未经授权的 包含kerberos或协商质询的响应 从源服务器接收。这可能导致相互身份验证 使用持久连接(如windows/winrm)的主机失败,如 初始身份验证握手后不会发送kerberos挑战。这个 可以通过设置 force_preemptive=true来更改行为

>>>importrequests>>>fromrequests_kerberosimportHTTPKerberosAuth,REQUIRED>>>kerberos_auth=HTTPKerberosAuth(mutual_authentication=REQUIRED,force_preemptive=True)>>>r=requests.get("https://windows.example.org/wsman",auth=kerberos_auth)...

主机名覆盖

如果与DNS名称不匹配的主机通信 kerberos主机名(例如,在内容交换机或负载平衡器后面) 用于kerberos gss交换的主机名可以被重写 设置主机名覆盖

>>>importrequests>>>fromrequests_kerberosimportHTTPKerberosAuth,REQUIRED>>>kerberos_auth=HTTPKerberosAuth(hostname_override="internalhost.local")>>>r=requests.get("https://externalhost.example.org/",auth=kerberos_auth)...

显式主体

httpkerberosauth 通常使用默认主体(即 上一次运行kinit或kswitch或sso凭据的用户 适用)。但是,可以指定一个显式主体,它将使kerberos查找指定用户的匹配凭据缓存。 此功能取决于操作系统对集合类型凭据缓存的支持, 以及pykerberos中的工作主体支持(在许多 构建)。显式主体可以用 主体 参数指定:

>>>importrequests>>>fromrequests_kerberosimportHTTPKerberosAuth,REQUIRED>>>kerberos_auth=HTTPKerberosAuth(principal="user@REALM")>>>r=requests.get("http://example.org",auth=kerberos_auth)...

在windows上,使用winkerberos而不是pykerberos。Winkerberos允许 使用任意主体而不是凭据缓存。密码可以是 按照 主体 的格式 user@realm:password 指定

委派

请求kerberos 支持凭证委派( gss\u c\u delegu flag )。 若要将凭据委派给请求委派的服务器,请通过 委托=真 httpkerberosauth

>>>importrequests>>>fromrequests_kerberosimportHTTPKerberosAuth>>>r=requests.get("http://example.org",auth=HTTPKerberosAuth(delegate=True))...

请注意,只允许委派到您信任的服务器,因为它们将能够 使用委派的凭据来模拟您。

日志记录

这个库充分利用了python的日志功能。

日志消息被记录到 请求\u kerberos中 请求kerberos.kerberos 命名记录器。

如果您有困难,我们建议您配置日志记录。与 底层的kerberos库将很明显。另外,大量的调试 提供的信息可能有助于排除故障 一直增加日志级别直到调试。

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

推荐PyPI第三方库


热门话题
JavaSWT树项目高度   java如何通过单击按钮向JFrame添加文本字段?   java keytool如何保护密钥?   java在Apache Camel中构建一个报告来测量事务时间   安卓为什么这个Java类的参数不能按预期工作?   java参数化JUnit中的测试方法,而不仅仅是整个类   java N级地图,需要把地图放在地图里面   屏幕右侧的java抽屉?   JAVA网MalformedURLException:解析xml时没有协议异常   java为什么调用时出现JSON异常。getJSONObject()?   socketJava服务器关闭代码   java如何为计算器生成命令行参数   java如何将活动意图传递给另一个类?   java Apache HttpClient临时错误:NoHttpResponseException   java JVM选项XX:UseFastEmptyMethods/XX:UseFastAccessorMethods   类Java构造函数问题   验证PDF和Excel文件类型的java模式   java循环菜单问题   java如何返回tar。Spring中通过http的gz文件   java使用NetBeans设置图像库