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第三方库


热门话题
添加文件发送者后,Java聊天socket不显示消息   java显示存储在MySQL中的BLOB图像,无需写入磁盘   连接到SQLite数据库时发生java GAE受限类错误   如何在Java中自动从外部源(如文件)读取对象属性?   java使用google应用程序引擎发送电子邮件   java找不到应用程序。属性文件从War文件的外面   关于GridLayout和paintComponent方法的用户界面Java Swing问题   java6项目中的JavaOneLogin javasaml 2.0   数组Java GUI将文本文件数据导入JTable   游戏引擎从另一个类或文件中设置java数组的元素   构建如何将java类修补/复制到本地WebSphere服务器?   添加拦截器并使用Dagger2注入拦截器后,java翻新服务始终为空   java Guava LoadingCache如何处理备份存储中不存在的密钥   组织。openqa。硒。NoSuchSessionException:会话ID为空。在自动化中获取此错误(使用testng、selenium、java)   java是从4GB文件创建trie(JSON)的最快方法,只需1GB的ram?