我有一个django rest_framework API、Swagger和一个Swagger UI。当我没有登录时,我只能看到非常有限的“登录”和“文档”视图。当我登录后,我可以看到很多东西。
我正在尝试使用swagger-代码生成客户端:
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar \
generate -i http://127.0.0.1:8080/api/docs/ -l python -o myclient
然而,它只生成一个非常有限的客户端,提供“登录”和“文档”功能。
如何让 swagger-codegen 知道如何使用 http 基本身份验证登录,以便生成更完整的客户端?
医生说我应该做以下事情,但我不知道他们期望我做什么:
-a <authorization>, --auth <authorization>
adds authorization headers when fetching the swagger definitions
remotely. Pass in a URL-encoded string of name:header with a comma
separating multiple values
另一种方法是使用自定义身份验证器。
var basicAuthenticator = new BasicAuthenticator(Configuration.Default.ApiClient.RestClient.BaseUrl.ToString(), "username", "password");
Configuration.Default.ApiClient.RestClient.Authenticator = basicAuthenticator;
它使用 BasicAuthenticator 类:
public class BasicAuthenticator : IAuthenticator
{
private readonly string _baseUrl;
private readonly string _userName;
private readonly string _password;
private readonly CredentialCache _credentialCache;
public BasicAuthenticator(string baseUrl, string userName, string password)
{
_baseUrl = baseUrl;
_userName = userName;
_password = password;
_credentialCache = new CredentialCache
{
{new Uri(_baseUrl), "Basic", new NetworkCredential(_userName, _password)}
};
}
public void Authenticate(IRestClient client, IRestRequest request)
{
request.Credentials = _credentialCache;
if (request.Parameters.Any(parameter =>
parameter.Name.Equals("Authorization", StringComparison.OrdinalIgnoreCase)))
{
return;
}
request.AddParameter("Authorization", GetBasicAuthHeaderValue(), ParameterType.HttpHeader);
}
private string GetBasicAuthHeaderValue()
{
return string.Format("Basic {0}",
Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}",
_userName, _password))));
}
}
RestSharp存在一个已知的问题,即它不会向第二个请求(重定向后)提供基本身份验证详细信息。使用上面的验证器可以解决这个问题。
要为所有请求提供凭据:
var creds = new NetworkCredential("username", "password");
var encoded = Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(creds.UserName + ":" + creds.Password));
Configuration.Default.AddDefaultHeader("Authorization", "Basic " + encoded);
//use the API
var searchAPI = new SearchAPI();
var files = searchAPI.GetFiles();
要仅向一个API调用提供凭据,请执行以下操作:
var creds = new NetworkCredential("username", "password");
var encoded = Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(creds.UserName + ":" + creds.Password));
var searchAPI = new SearchAPI();
searchAPI.Configuration.AddDefaultHeader("Authorization", "Basic " + encoded);
//use the API
var files = searchAPI.GetFiles();
由于您使用的是超文本传输协议基本身份验证,因此命令应该是:
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar \
generate -i http://127.0.0.1:8080/api/docs/ -l python -o myclient -a "Authorization:Basic QWxhZGRpbjpPcGVuU2VzYW1l"
其中< code > qwxhzgrpbjppcgvuu 2 vzyw 1 l 是您的< code >用户名:密码,以base64编码。
在这里,您可以查看将解析此选项的代码。
我正在尝试使用Postman发出POST请求。我拥有的凭据只是一个API密钥,而不是用户名和密码。 现在在Postman中,只要我选择“基本认证”,它就会提示输入用户名和密码。所以我将这些字段留空,然后转到Headers以给出我自己的授权键值,这给我留下了两个“授权”字段,如屏幕截图所示,我得到了无效的身份验证响应。 使用CLI中的CUrl命令授权工作正常。有解决方法吗?
客户已创建密钥存储库并存储凭据。为了验证密钥存储库,我已经在节点中创建了应用程序,并使用客户端id和客户端机密,我能够读取机密。但是现在客户不想使用客户id和客户机密,而是使用AZURE的用户名和密码来访问程序中的keyvault。它是一个没有MFA的keyvault访问的专用用户。 我不确定我们是否可以从节点JS使用用户名和密码访问keyvault。敬请建议。 谢谢
是否可以在Flatter中使用用户名和密码(而不是电子邮件和密码)实现Firebase身份验证?有没有办法用Firebase Auth插件来实现这一点?
我需要获取浏览器从url发送到node.js应用程序的用户名和密码。 我翻遍了各种文件和物品,但找不到任何有用的东西。有人知道怎么做吗?使用身份验证头不是一个选项,因为现代Bowser不设置它们。 谢谢你的帮助!
问题内容: 正在尝试在提示(URL给定)中输入数据,以下代码给我一个错误。请帮我这些吗? 我尝试过: 这也是行不通的。 问题答案: 当你一起工作通过 3.6.1可以绕过通过嵌入的弹出和在自身如下。 此解决方案将打开URL http://the-internet.herokuapp.com/basic_auth并使用有效的username和password凭据进行身份验证。
我尝试postman使用用户名和密码连接到我的一个web服务,每次更改用户名时,即使用户名与我放在属性文件中的用户名不相同,请求也会被验证