首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python的requests_kerberos连接

使用Python的requests_kerberos连接
EN

Stack Overflow用户
提问于 2018-10-09 13:35:11
回答 1查看 4.4K关注 0票数 0

这是我第一次尝试使用Kerberos身份验证通过python (从windows)连接到API。我已经为此工作了几天,我的进展已经停滞了。以下是我使用过的几个参考资料:

这是我发现的最好的教程,但它似乎使用的是不推荐的模块,而不是requests_kerberos:kerberos.html

https://pypi.org/project/requests-kerberos/

kerberos.HTTPKerberosAuth/

以下是我迄今尝试过的(我将掩盖敏感信息):

代码语言:javascript
复制
import requests
from requests_kerberos import HTTPKerberosAuth
r=requests.get("https://apiServer.hadoop.company.com:23232/templeton/v1/ddl/database/",auth=HTTPSKerberosAuth)

以下是一些输出:

代码语言:javascript
复制
r.status_code

401

代码语言:javascript
复制
r.headers

{“内容长度”:“1321”、“Set-Cookie”:“hadoop.auth=;Path=/;HttpOnly”、“服务器”:“Jetty(7.6.0.v20127)”、“缓存-控制”:“必须-重新验证、无缓存、无存储”、“内容-类型”:“text/html;charset=ISO-8859-1”、“WWW-身份验证”:“协商”}

代码语言:javascript
复制
r.text

<html>\n<head>\n<meta http-equiv="Content-Type" 
content="text/html;charset=ISO
-8859-1"/>\n<title>Error 401 Authentication 
required</title>\n</head>\n<body>\n<
h2>HTTP ERROR: 401</h2>\n<p>Problem accessing /templeton/v1/ddl/database/. 
Reason:\n<pre>    Authentication required</pre></p>\n<hr /><i><small>Powered 
by Jetty://</small></i>

是否至少表示服务器收到了我的请求?

如果我使用curl从linux环境连接到API,它就能正常工作,并收到预期的输出:

代码语言:javascript
复制
curl --negotiate -i -u :  'http://apiServer.hadoop.company.com:23232/templeton/v1/ddl/database/'

HTTP/1.1 401身份验证要求WWW认证:协商集-Cookie: hadoop.auth=;Path=/;HttpOnly缓存-控制:必须重新验证、无缓存、无存储内容-类型: text/html;charset=ISO-8859-1内容长度: 1321服务器: Jetty(7.6.0.v20230127) HTTP/1.1 200 OK WWW-身份验证:协商YGY1cwVaADAgCAQ+iSTBHoAMCAReiQAQ+sf/nekePw09B/cboDrINa7qn+aENRuw2V+OW7Y7Rk9pOwGa8hrXC3rXKxCk=集-Cookie: hadoop.auth="u=svc-qa-dsafqa-dev&p=svc-fd-itdflea-dev@hadoop.company.com&t=kerberos&e=15392343251&s=nWk/bFDbHQfsadfewe8PtjAsVHs=";Path=/;HttpOnly内容-类型: application/json传输-编码:块服务器:Jetty(7.6.0.v20127)

我意识到,我对kerberos身份验证的基本理解还存在差距,我正在尝试做一个速成课程,但我真的需要能够连接到这个api。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2019-03-28 08:30:05

您需要提供一个HTTPSKerberosAuth实例,而不是类本身,所以您的请求应该是:

代码语言:javascript
复制
r = requests.get("https://apiServer.com", auth=HTTPSKerberosAuth())

注意HTTPSKerberosAuth()中的括号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52722416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档