所以我们知道如何做 http get 和 post 连接。 http://exampledepot.com/egs/java.net/pkg.html 我们希望将凭据(uname,passwd)传递给任何 Web 服务器以访问 url 或获取响应。我们不能将它作为 post 参数传递。所以看看@这个非常简单的代码,它完成了这一切。
任何人都可以解释http:// user:pass@host.com身份验证的工作原理吗?浏览器是否Authorization使用user:passbase-64编码发送标头?
我在Chrome开发者工具中打开了Net控制台,当我提出请求时,http://user:pass@stackoverflow.com我没有看到Authorization添加标题.
我真的很好奇浏览器如何在user:pass@URL前面使用密码时发送密码.
当我尝试使用@auth.login_required装饰器访问路径时,系统会提示我输入用户名和密码.进入此信息后,参数username_or_token和password对verify_password功能的''.为什么数据是空的?
@auth.verify_password
def verify_password(username_or_token, password):
# first try to authenticate by token
user = USER.verify_auth_token(username_or_token)
logger.debug("user = %r", user)
logger.debug("Entered USEREMAIL = %r" , username_or_token)
logger.debug("entered password = %r" , password)
if not user:
# try to authenticate with username/password
user = session.query(USER).filter_by(USEREMAIL=username_or_token).first()
if not user or not user.verify_password(password):
return False
g.user = user
return True
Run Code Online (Sandbox Code Playgroud)
UPDATE
我已将代码简化为:
@auth.verify_password
def verify_password(username, password):
logger.debug("username = %s" % username)
logger.debug("password = %s" …Run Code Online (Sandbox Code Playgroud) 在构建了一个相当简单的 API 后,我开始研究身份验证,其中仅使用用户名/密码组合的基于 SSL 的基本 HTTP 身份验证对于使用它的人来说可能显得很弱,尽管这里的各种讨论表明它应该没问题。
在这种情况下,我从类似的解决方案中研究了 API,这些解决方案为用户提供了用户 ID 和 API 密钥。问题是我根本不明白这有多强。我认为密钥仍然像密码一样保存,从我的角度来看,他们只是将密码称为密钥。
例子:
&api_key=hiperz_api_key&gs_id=3873除了用户名密码之外,args如何提供进一步的安全性?我肯定想实现一些比基本 HTTP 身份验证上的用户/传递更强大的东西,并为最终用户提供某种类型的令牌/密钥用于访问,但我没有看到这种方法的额外优势。
php authentication http-authentication basic-authentication api-key
我正在尝试在 linux 中使用 curl 更改基于 Onvif 的相机的日期。我已经在 c# 中成功地做到了并使用了摘要身份验证,但我被困在了这种情况下。
我正在使用以下命令:
curl -u "admin:admin" --digest http://10.104.37.1:80/onvif/device_service --data '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"><DateTimeType>Manual</DateTimeType><DaylightSavings>false</DaylightSavings><TimeZone><TZ xmlns="http://www.onvif.org/ver10/schema">CST-0:00:00</TZ></TimeZone><UTCDateTime><Time xmlns="http://www.onvif.org/ver10/schema"><Hour>8</Hour><Minute>8</Minute><Second>8</Second></Time><Date xmlns="http://www.onvif.org/ver10/schema"><Year>2008</Year><Month>8</Month><Day>8</Day></Date></UTCDateTime></SetSystemDateAndTime></s:Body></s:Envelope>'
Run Code Online (Sandbox Code Playgroud)
我得到了以下结果(似乎卡住了):
- 即将 connect() 到 10.104.37.1 端口 80 (#0)
- 正在尝试 10.104.37.1... 已连接
- 连接到 10.104.37.1 (10.104.37.1) 端口 80 (#0)
- 使用 Digest 和用户“admin”进行服务器身份验证
- POST /onvif/device_service HTTP/1.1
- 用户代理:curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
- 主机:10.104.37.1
- 接受:/
- 内容长度:0
- 内容类型:应用程序/x-www-form-urlencoded
在这之后,什么也没有发生。
不得不说,如果我只是读取日期(此操作不需要身份验证)...
curl -u admin:admin http://10.104.37.1:80/onvif/device_service --data '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"/></s:Body></s:Envelope>'
Run Code Online (Sandbox Code Playgroud)
...它做对了,但是如果我添加“--digest”,该过程将遵循之前评论过的行为。
任何人都可以给我一个提示?
谢谢!
编辑: 内容长度=0 是不是很奇怪?
我希望我的 Go 应用程序通过网站进行身份验证,然后使用收到的 cookie 访问安全位置。以下卷曲示例准确地说明了我想要做的事情:
通过网站进行身份验证x-www-form-urlencoded并保存 cookie。数据自动进行 urlencode 编码:
curl 'https://www.example.com/login' \
--cookie-jar cookies.txt \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data 'user=USER NAME&pass=PASS'
Run Code Online (Sandbox Code Playgroud)
现在身份验证 cookie 已保存cookies.txt,我只需发送它即可访问需要登录的页面:
curl 'https://www.example.com/profile' \
--cookie cookies.txt
Run Code Online (Sandbox Code Playgroud)
我不想将 cookie 存储在我的应用程序的磁盘上,而只想存储在内存中,以便我可以在需要时使用它。
有谁有一个例子来说明如何在 Go 中实现这一点?
简而言之,当使用带有 fetch api 的授权标头并遵循重定向时,Chrome、FireFox 和 Opera(在 Mac 上)在第二个请求中包含授权标头。但是,Safari (12.0.1) 没有。从fetch api 规范和问题 #553我的理解是应该包含标题。这是对 fetch 应该如何工作的正确理解吗?
这是我用于 Safari 的解决方法的简化代码,但我想知道是否我做错了什么导致了 Safari 的行为,或者是否有更好的解决方法。
export async function loadData(token) {
const opts = {headers: {Authorization: `Bearer ${token}`}, credentials: 'include', redirect: 'follow'};
let response = await fetch('/api/data', opts);
// Work around for Safari not including headers in redirected request
if (response.status === 401 && response.redirected) {
response = await fetch(response.url, opts);
}
if (response.ok) {
return response.json();
}
return null; …Run Code Online (Sandbox Code Playgroud) 背景:我们使用 Bitbucket Server(即将升级/切换到 Bitbucket DataCenter)。在我们的身份验证设置中,我们禁用了用户密码(网络身份验证通过不同的方式进行),因此出于 Bitbucket/Git 的目的,我们使用 Bitbucket 个人访问令牌 (PAT)。(SSH 密钥身份验证在我们的组织中不是一个选项。)对于克隆/推送等,我们在提示输入凭据时一直使用我们的用户名和 PAT。这是可行的,但由于我无法了解我们的身份验证设置的原因,它正在创建与我们的自动化构建以及大型用户交互式本地构建相关的性能问题。
Bitbucket 不使用 HTTP(S) 基本身份验证,还支持 HTTP(S) 承载令牌身份验证,您只需提供 PAT,无需提供用户名。这样做可以解决我们的性能问题。对 REST API 请求执行此操作很简单。在 Git 上这样做比较棘手。此 Bitbucket 文档建议这样做:
$ git clone -c http.extraHeader='Authorization: Bearer xxxx' https://bitbucketserver.com/scm/projectname/teamsinspace.git
Run Code Online (Sandbox Code Playgroud)
这有效!但它通过命令历史记录等向其他人公开 PAT。不公开 PAT 的更安全的变体也可以使用:
$ git clone --config-env=http.extraHeader=GIT_AUTHORIZATION_HEADER https://bitbucketserver.com/scm/projectname/teamsinspace.git
Run Code Online (Sandbox Code Playgroud)
哪里。GIT_AUTHORIZATION_HEADER Authorization: Bearer xxxx但这仍然有一些缺点,即它无法使用.gitconfig并且必须添加到每个命令中,并且用户必须提前配置它并且无法提示输入安全存储在 Git 凭证中的 PAT帮手。
GitLab 提供了一个“神奇的用户名” OAuth2,可以通过基本身份验证向其提供令牌,该身份验证本质上告诉服务器“忽略用户名,仅使用令牌进行身份验证”。Bitbucket 还提供了类似的“神奇用户名” x-token-auth,但它似乎要么仅限于云,要么仅限于存储库访问令牌,或者两者兼而有之,因为我们尝试使用它,但它只会导致身份验证错误。访问这样的功能将允许我们对神奇的用户名进行硬编码.gitconfig,并且开发人员只会被提示输入“x-token-auth@our-server.com 的密码”,这将是 PAT。但是,遗憾的是,我们无法使用此功能。
大约 14 年前,Git 邮件列表上曾有一次关于支持 Bearer 令牌身份验证的讨论,甚至提出了一个补丁,但看起来并没有任何进展。理论上,我可以应用该补丁的现代化版本并重新编译 Git,但这对于我们的开发人员组织来说确实不是一个理想的解决方案。
我考虑过创建一个 …
git authentication bitbucket http-authentication bearer-token
最近我在一篇基本的身份验证文章中看到了这个词.网络上的base64明文usrname和密码是什么意思?
谢谢
是否可以通过AWS API Gateway Service使用基本身份验证而不是AWS4-HMAC-SHA256身份验证?我需要支持仅支持基本身份验证的webhook调用的系统。