将Fiddler与基本身份验证结合使用以访问RESTful WebAPI


70

我有一个可以正常工作的WebAPI。我已经在本地测试并部署到我的服务器,并在IIS中将此服务配置为使用基本身份验证。我能够浏览到我的服务,并且收到了我期望的身份验证挑战,并且一切正常!现在,我想使用Fiddler进行测试,并且我已经构建了到特定URL的POST,并且出现401(未经授权)错误。因此,我决定在请求标题中添加base64字符串,现在出现500错误。

我想知道的是,我的请求标题看起来正确吗?我显然要混淆我的Host和base64字符串,该字符串包含用于身份验证挑战的格式username:password。

User-Agent: Fiddler
Host: xxx.xxx.xxx.xxx:xxxx
Content-Length: 185
Content-Type: text/json
Authorization: Basic jskadjfhlksadjhdflkjhiu9813ryiu34

在这里,我找到了基本身份验证base64格式的格式:en.wikipedia.org/wiki/Basic_access_authentication
brianhevans 2012年

我在这里找到了base64编码器:motobit.com/util/base64-decoder-encoder.asp
brianhevans 2012年

2
我在列表中将“授权”上移到了“主机”的正下方,它可以正常工作。我遵循了Wiki中建议的格式,我认为我们可以正常工作。:-)
brianhevans 2012年

Answers:


139

Fiddler有一个为您执行Base64的工具。只需创建您的字符串:username:password,然后转到“工具”->“ TextWizard”,输入用户名密码组合,然后选择“ ToBase64”。将其复制并粘贴到Authorization标头中,就可以了。


谢谢,我下次再试!
brianhevans 2012年

1
但是,当json结构用于发送数据时,我如何将编码的字符串与json数据一起发送。
Ashish-BeJovial

22

AlexGad是正确的。创建ToBase64编码后,在编写请求的标题下,添加以下行:

Authorization: Basic [encoded_value]

现在执行请求,它应该可以工作!:)


12

如果您在Composer URL字段中指定用户名和密码,则新版本的Fiddler(我在v4.6.20172.31233中测试)将自动Authorization为您创建并添加必要的标头,如下所示:

https://SomeUser:SomePass@sitename

执行后,这会将其从URL中剥离,并变成HTTP标头,例如:

Authorization: Basic U29tZVVzZXI6U29tZVBhc3M=

如果我的密码包含@符号怎么办?
塔伦

8

我知道这是一篇较旧的文章,但是当我第一次查看该文章的方法时,我偶然发现了这则文章,并且知道答案是正确的,但是我仍然不知道凭证是否需要用逗号分隔等等。以防万一这可能对某人有帮助,这是我为Fiddler编写的关于JSON POST的注释。

First you need to Base64 encode your "username:password"
    • Go to Tools | Text Wizard | To Base64 in dropdown

Post a message in the Composer tab
    • Change the type to POST in the dropdown.
    • Put in the URL
    • Add the following to the top header section.
        ○ Authorization: Basic ReplaceWithYourEncodedCredtials=
        ○ Content-Type: application/json; charset=utf-8
    • Add some JSON content to the body
        ○ [{"Address1":null,"Address2":null,"BirthDate":"1967-10-06T00:00:00","City":null,"CompanyHireDate":"2011-06-03T00:00:00","EmailAddress":"myEmail@company.com","EmployeeNumber":"112233","FirstName":"JOHN","LastName":"DOE","PhoneNumber":null,"State":null,"UserName":"JDoe","ZipCode":null}]

0

我希望这可以帮助像我这样的新手。

如果您使用的是GET,则无法在令牌附近使用[]

以下无效:-

Authorization: Basic [MkgzczhaVnhZNG13d1FkTVJ2ZmZMQzFQQnhZRG5WdUVhbDNiVWs0ZldDdzo=]

以下工作:

Authorization: Basic MkgzczhaVnhZNG13d1FkTVJ2ZmZMQzFQQnhZRG5WdUVhbDNiVWs0ZldDdzo=

-1

我发现在Fiddler 4中,我要做的就是检查“规则”菜单上的“自动身份验证”选项。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.